> ## Documentation Index
> Fetch the complete documentation index at: https://docs.billingos.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Go live checklist

> Everything you need to check before accepting real payments.

## Before you go live

Use this checklist to make sure everything is ready for production.

### 1. Connect your live Stripe account

In sandbox, BillingOS provisioned a test Stripe account for you. In production, you connect your own.

* [ ] Switch to **Production** in the BillingOS environment switcher
* [ ] Go to **Settings → Billing**
* [ ] Click **Connect Your Stripe Account** and complete the OAuth flow
* [ ] Confirm your account shows **Active** with charges and payouts enabled

<Note>
  Don't have a Stripe account yet? Sign up at [stripe.com](https://stripe.com) and complete merchant onboarding (business details, identity, bank account) before connecting. See the [Connect Stripe guide](/guides/connect-stripe) for the full walkthrough.
</Note>

### 2. Recreate your products in production

Sandbox and production are isolated — products don't carry over.

* [ ] Recreate every product, price, and feature you defined in sandbox
* [ ] Verify product IDs are referenced correctly in any server-side code (entitlement checks, webhook handlers)

### 3. Switch to live API keys

Replace your test keys with live keys in your production environment:

```bash .env theme={null}
# Production
BILLINGOS_SECRET_KEY=sk_live_...
```

<Warning>
  Never commit API keys to version control. Use environment variables in your hosting provider (Vercel, Railway, etc.).
</Warning>

The SDK auto-detects the environment from your key prefix:

* `sk_test_*` routes to the sandbox API
* `sk_live_*` routes to the production API

### 4. Test the full customer journey

Run through the complete flow with test cards before switching to live:

* [ ] Visit pricing page — plans display correctly
* [ ] Select a plan — checkout modal opens
* [ ] Complete payment with test card `4242 4242 4242 4242`
* [ ] Verify subscription is active
* [ ] Check feature gates work (access granted on subscribed features)
* [ ] Open customer portal — subscription details display
* [ ] Change plan (upgrade/downgrade) — proration shows correctly
* [ ] Cancel subscription — cancellation flow works
* [ ] Reactivate subscription — plan restores

### 5. Verify Stripe is ready for live charges

* [ ] Stripe account shows **Active** in `dashboard.stripe.com`
* [ ] Bank account is connected and verified for payouts
* [ ] Payout schedule is configured to your preference
* [ ] Webhook signing secrets are configured if you're consuming Stripe events directly

### 6. Review security

* [ ] Secret key is only used server-side (never in client code)
* [ ] Session tokens are created with authenticated user IDs
* [ ] Server-side entitlement checks are in place for critical features
* [ ] HTTPS is enabled on your domain

### 7. Error handling

* [ ] Checkout failure shows a user-friendly error message
* [ ] Payment decline shows the reason and next steps
* [ ] Network errors are handled gracefully
* [ ] `onError` callbacks are set on `CheckoutModal`

### 8. Deploy

* [ ] Environment variables set in production hosting
* [ ] Test one real payment with a small amount
* [ ] Monitor logs for any errors

## You're live!

Once everything checks out, your customers can start subscribing. Monitor your BillingOS dashboard for:

* New subscriptions
* Failed payments
* Customer activity
