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

# Billing

> Tiers, credits, overage, and how to manage your subscription.

Repo bills monthly or annually via Stripe. Every paid tier includes a 7-day free trial — card required at signup, charged at trial end unless canceled.

## Tiers

| Tier           | Monthly | Annual             | Agents    | Connectors | Credits/mo | Overage                  |
| -------------- | ------- | ------------------ | --------- | ---------- | ---------- | ------------------------ |
| **Builder**    | \$99    | \$950 (save 20%)   | 2         | 2          | 5,000      | Hard block at cap        |
| **Studio**     | \$299   | \$2,870 (save 20%) | 10        | All        | 25,000     | \$0.015 per extra answer |
| **Scale**      | \$799   | \$7,670 (save 20%) | Unlimited | All        | 100,000    | \$0.015 per extra answer |
| **Enterprise** | Custom  | Custom             | Custom    | All        | Custom     | Per contract             |

See [the marketing pricing page](https://userepo.com) for the latest copy.

## What counts as a "credit"

1 credit = 1 retrieval call. The metered endpoints are:

* `POST /v1/search`
* `POST /v1/context`
* `POST /v1/ask`
* `POST /v1/console/ask`

All other endpoints (sync, sources, audit, ingest, api-keys management) are free.

## Builder hard-block

Builder is the entry tier — we hard-block at the cap so customers don't get surprise bills. The 5,001st call returns `429 quota_exceeded` until the next billing period or an upgrade.

To remove the cap, upgrade to Studio or Scale — both allow overage at \$0.015/answer reported in real time to Stripe's metered billing.

## Trial behavior

* Card required at signup (Checkout Session has `payment_method_collection: always`)
* 7 days of full plan access
* Auto-charges at trial end unless canceled
* Cancel anytime during trial → no charge, subscription stays active through trial end then deactivates

## Managing your subscription

From the console **Billing** tab:

* **Manage subscription** opens Stripe's Billing Portal where you can:
  * Change payment method
  * Upgrade or downgrade tier (prorated)
  * Switch monthly ↔ annual
  * Cancel
  * View past invoices
* The portal handles everything — Repo's webhook receives the update and reflects the new tier within seconds.

## Subscription states

| `status`             | What it means                          | What you can do                                        |
| -------------------- | -------------------------------------- | ------------------------------------------------------ |
| `trialing`           | In free trial                          | Use everything, will auto-charge at trial end          |
| `active`             | Paid and current                       | Use everything                                         |
| `past_due`           | Last payment failed                    | Update payment method or your access drops to `unpaid` |
| `unpaid`             | Multiple failed payment attempts       | Retrieval blocked. Update payment method               |
| `canceled`           | Subscription canceled                  | Retrieval blocked. Re-subscribe to restore             |
| `incomplete`         | Initial payment failed during Checkout | Re-run Checkout                                        |
| `incomplete_expired` | Initial Checkout abandoned             | Re-run Checkout                                        |
| `internal`           | Founder / demo workspace               | Unlimited, never billed (not a real Stripe state)      |

## Refunds + disputes

Standard SaaS terms — usage-based and subscription fees are non-refundable. If your retrieval was blocked by a Repo bug rather than usage limits, contact support for a credit adjustment.

## Production deploy considerations

If you're self-hosting or running multiple environments:

* Test mode and live mode are completely isolated in Stripe — separate keys, separate products, separate webhooks
* Local dev typically uses test keys + `stripe listen` to forward webhooks
* Production uses live keys + a real webhook endpoint configured at `dashboard.stripe.com/webhooks`
* Same Repo codebase, different env vars
