- Customer selects a plan (PricingTable or CheckoutButton component)
- React SDK calls POST /api/v1/checkout with
{ customer_id, plan_code, success_url } - Nozle API creates a Stripe Checkout Session in “setup” mode
- Returns
{ client_secret, invoice_id, amount_cents, currency } - The Checkout component renders Stripe Elements using the client_secret
- Customer enters payment details
- On success, Stripe sends checkout.session.completed webhook to /webhooks/stripe
- Nozle API processes the webhook: creates subscription, provisions entitlements
React implementation
Option A — CheckoutButton (simplest)
Option B — Custom flow with useCheckout
Option C — Full Stripe Elements
Server-side (bypass checkout UI)
For B2B scenarios where payment is already on file:subscribe() requires a secret key (sk_).