Appearance
Stripe
Stripe is the default international billing provider. Set BILLING_PROVIDER=stripe.
ENV
STRIPE_SECRET_KEY=sk_live_...
STRIPE_PUBLISHABLE_KEY=pk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...Plan metadata
Each plan in Plans Admin needs Stripe price IDs in its metadata:
json
{
"stripe_price_id_monthly": "price_...",
"stripe_price_id_yearly": "price_..."
}The checkout adapter reads these to assemble the Stripe Checkout session.
Webhook
Register <BASE_URL>/api/v1/webhooks/billing/stripe in your Stripe dashboard. The webhook signing secret must match STRIPE_WEBHOOK_SECRET. See Stripe Webhook setup for the event list.
Customer portal
Sosyabot doesn't yet integrate Stripe's hosted Customer Portal. Subscription updates flow through the Sosyabot UI (/app/upgrade), which calls POST /billing/checkout to start a fresh session for an upgrade or directly toggles cancel_at_period_end for a cancellation.