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

# Billing Workflow

> Read subscription state and update billing settings.

Billing state comes from Stripe webhook processing and Convex-backed entitlement state.

Core web API routes:

```http theme={null}
GET /api/v1/subscription
GET /api/v1/subscription/settings
POST /api/v1/subscription/settings
```

Checkout, portal, top-up, and webhook endpoints also exist under non-`/api/v1` app routes. They are web-app routes rather than part of the generated public `/api/v1` reference.

For local webhook testing:

```bash theme={null}
stripe listen --forward-to localhost:3000/api/webhooks/stripe
```

When billing is disabled, pair `billing.provider="none"` with `capabilities.billing=false`.
