Skip to main content
A smooth checkout experience directly impacts your conversion rate. BillingOS gives you a PCI-compliant checkout modal that handles card collection, 3D Secure, and subscription creation — all without touching Stripe directly.

Two ways to accept payments

Checkout modal

The CheckoutModal renders a secure iframe-based checkout. Card data never touches your servers.

With PricingTable (easiest)

The PricingTable component opens the checkout modal automatically when a user selects a plan — no extra code needed:
See Show a pricing page for full customization options.

Standalone checkout modal

For custom UIs where you want to trigger checkout yourself:
Checkout modal

Prefill customer information

Skip the email step by passing customer data:

Handle events

Adaptive pricing

Enable localized pricing based on the customer’s location:
The checkout modal runs in a secure iframe. Card details are handled entirely by Stripe — your app never processes or stores payment information. This means you’re PCI-compliant by default.

Checkout API

For fully custom checkout flows, use the useCheckout hook:

Imperative API

You can also open checkout programmatically from anywhere in your app:

Testing payments

Use these test card numbers in development:Use any future expiry date and any 3-digit CVC.

What happens after payment

  1. BillingOS creates a Stripe subscription
  2. The onSuccess callback fires with the subscription object
  3. The customer’s entitlements are immediately updated
  4. Feature gates (useFeature, <FeatureGate>) reflect the new plan
  5. The PricingTable shows “Current Plan” on the subscribed plan