- Developers
- Marketplace apps
Charge for your app
Set up billing for your app using platform or external billing.
You can charge for your app using two billing modes:
- Platform billing: HowdyBell bills the customer and pays you.
- External billing: You bill the customer on your own payment page.
Platform billing
With platform billing, HowdyBell handles payments.
- Set a Monthly price in USD. Minimum $1.00, maximum $1,000.00.
- Set Trial days. 0 to 30 days.
- When a user installs your app, they must add a payment method.
- HowdyBell charges the customer monthly.
- HowdyBell pays you the full amount (minus refunds) via Stripe Connect.
Payouts
- Go to Payouts in the developer portal.
- Connect your Stripe account.
- Payouts appear here once subscriptions are billed.
Each payout shows:
- Period: The billing period.
- Gross: Total revenue.
- Refunds: Total refunds.
- Net: Amount paid to you.
External billing
With external billing, you handle payments on your own site.
- Set Billing mode to External.
- Enter your Payment page URL (https).
- When a user installs your app, HowdyBell redirects them to your payment page.
- Your payment page receives these query parameters:
clientId: Your app's client ID.installType:locationorcompany.locationId: The location ID (ifinstallTypeislocation).companyId: The workspace ID (ifinstallTypeiscompany).
- After the user pays, report the payment to HowdyBell.
Report a payment
Send a POST request to the billing webhook:
curl -X POST https://howdybell.com/api/oauth/billing/webhook \
-H "x-hb-client-key: your_client_id" \
-H "x-hb-client-secret: your_client_secret" \
-H "Content-Type: application/json" \
-d '{
"clientId": "your_client_id",
"authType": "location",
"locationId": "123",
"amount": 29.99,
"status": "COMPLETED",
"paymentType": "recurring",
"subscriptionId": "sub_abc123"
}'
The answer is {"ok": true}. Errors answer 401 {"error": "invalid_client"} for bad credentials, 404 for an unknown location or company, and 422 with codes like invalid_status, invalid_payment_type or payment_id_required.
Fields:
clientId: Your app's client ID.authType:locationorcompany.locationIdorcompanyId: The ID for the auth type.amount: The amount in USD.status:COMPLETEDorFAILED.paymentType:one_timeorrecurring.paymentId: Required ifpaymentTypeisone_time.subscriptionId: Optional. Your subscription ID.
The latest report per location decides the subscription status.
Switching billing modes
You cannot switch from platform billing to external billing once your app is published. If you need to change billing modes, create a new app.