1. Developers
  2. Marketplace apps

Charge for your app

Set up billing for your app using platform or external billing.

Updated October 5, 2026

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.

  1. Set a Monthly price in USD. Minimum $1.00, maximum $1,000.00.
  2. Set Trial days. 0 to 30 days.
  3. When a user installs your app, they must add a payment method.
  4. HowdyBell charges the customer monthly.
  5. HowdyBell pays you the full amount (minus refunds) via Stripe Connect.

Payouts

  1. Go to Payouts in the developer portal.
  2. Connect your Stripe account.
  3. 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.

  1. Set Billing mode to External.
  2. Enter your Payment page URL (https).
  3. When a user installs your app, HowdyBell redirects them to your payment page.
  4. Your payment page receives these query parameters:
    • clientId: Your app's client ID.
    • installType: location or company.
    • locationId: The location ID (if installType is location).
    • companyId: The workspace ID (if installType is company).
  5. 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: location or company.
  • locationId or companyId: The ID for the auth type.
  • amount: The amount in USD.
  • status: COMPLETED or FAILED.
  • paymentType: one_time or recurring.
  • paymentId: Required if paymentType is one_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.

Charge for your app | HowdyBell Developers