Platform payments (direct users)
- Plan subscriptions — recurring billing via Stripe Checkout; each paid invoice resets the included plan credits on the active workspace’s balance.
- Credit top-ups — one-off Checkout payments credited only to the active workspace.
- Number fees — monthly charges for purchased phone numbers.
- Customer portal — users manage payment methods, invoices, and cancellations in the Stripe-hosted portal.
Stripe Connect (tenants)
Tenants monetize their own users through connected accounts; funds settle on the connected account while the platform collects its application fee:1
Onboard
In the tenant admin area, Billing platform creates a controller-based connected account with access to the full Stripe Dashboard and starts hosted onboarding. Stripe collects the tenant’s business details and payout account; the page shows live onboarding status.
2
Create plans and sync them
The tenant defines their own plans with their own prices. Each plan is synced as a product/price onto the tenant’s Connect account.
3
End customers pay the tenant
Checkout for a tenant plan charges on the tenant’s Connect account. The platform automatically deducts an application fee representing the platform’s costs/margin; the rest belongs to the tenant.
Margin transparency
Because the platform knows both sides — the tenant’s plan price and the platform’s per-minute cost charged to the tenant — the tenant admin sees the margin per plan and a monthly profit overview (revenue − platform costs). Pricing decisions stop being guesswork.For platform operators
Two webhook endpoints must be configured in the Stripe dashboard: one for events on your account (checkout.session.completed, subscription updated/deleted, invoice paid/failed, and payment_intent.succeeded for auto top-up) and one for events on connected accounts (the subscription set plus account.updated for onboarding status). Both endpoints verify signatures and register every event id, making processing idempotent by construction.