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

# Plans, Credits & Top-ups

> How plan credits renew, the order credits are used, and how Creator and Pro workspaces buy top-ups at their plan rate

Every workspace uses **plan credits** that renew each month. Creator and Pro workspaces can also buy **top-ups** when they need more before the next renewal. Plan prices and features are on [60db.ai/pricing](https://60db.ai/pricing).

## Plan credits

| Plan | Credits per month | Top-ups |
| - | - | - |
| Free | 3,000 | Not available |
| Starter | 120,000 | Not available |
| Creator | 400,000 | Yes |
| Pro | 2,000,000 | Yes |

* **1 credit = 1 TTS character.** At pay-as-you-go usage rates, 1 credit = $0.00002 (50,000 credits per $1). The usage rates table on the [pricing page](https://60db.ai/pricing) lists the cost of each service.
* Plan credits **renew monthly**, on monthly and yearly plans alike. Unused plan credits **do not roll over**, except when you upgrade or switch to yearly billing (see [Annual billing](#annual-billing)).

## Concurrency limits

Each plan limits how many text-to-speech and speech-to-text requests a workspace can run **at the same time**. REST and WebSocket requests count together, and everyone using the workspace (members and API keys) shares the limit.

| Plan | TTS concurrency | STT concurrency |
| - | - | - |
| Free | 1 | 2 |
| Starter | 5 | 10 |
| Creator | 10 | 20 |
| Pro | 20 | 50 |

* A request over the limit gets **HTTP 429** with `error_code` `TTS_CONCURRENCY_LIMIT` or `STT_CONCURRENCY_LIMIT`, and `details.limit` / `details.plan`. On WebSocket the session is closed with code `1008` and the same error.
* A slot frees as soon as a request finishes or the client disconnects. Retry then (with backoff), or upgrade for a higher limit.
* `GET /plans` returns each plan's `concurrency`, and `GET /billing/current-plan` returns your workspace's.

## Annual billing

Starter, Creator and Pro can be billed **monthly** or **yearly**. A yearly plan costs 10 monthly payments, so you get **2 months free** (about 16.7% off). Free has no yearly option.

| Plan | Monthly | Yearly | Yearly, per month | Credits per month |
| - | - | - | - | - |
| Starter | \$6 | \$60 per year | \$5.00 | 120,000 |
| Creator | \$22 | \$220 per year | \$18.33 | 400,000 |
| Pro | \$99 | \$990 per year | \$82.50 | 2,000,000 |

* **Credits stay monthly.** A yearly plan renews its plan credits every month, on the day your subscription started. You are billed once a year, but you get the same monthly allotment as on a monthly plan. Unused credits do not roll over.
* **Top-ups** on Creator and Pro use the monthly plan rate, whichever billing cycle you choose.

### Switching plans

| Change | When it takes effect | Unused plan credits | Notes |
| - | - | - | - |
| Monthly to yearly (same or higher plan) | Immediately | Carry over | A new yearly term starts now and the monthly plan ends. You pay the full yearly price. |
| Yearly to a higher yearly plan | Immediately | Carry over | You get a discount at checkout: (unused full months − 2) × your old monthly price. For example, Creator yearly with 9 months left gets \$154 off Pro yearly. |
| Monthly to a higher monthly plan | Immediately | Carry over | Checkout confirms the new plan. |
| Downgrade (any cycle) | End of the current billing cycle | Kept until then | A downgrade keeps your billing cycle. Choose the lower plan on the same cycle. |
| Yearly to monthly | Not allowed | — | Cancel the yearly plan first. It stays active until the end of the year, then you can choose a monthly plan. |
| Cancel | End of the current billing cycle | Kept until then | Access continues until the period ends. |

> [!NOTE]
>
> Changing a yearly plan to a monthly plan is not allowed in place. The API returns `403 YEARLY_TO_MONTHLY_NOT_ALLOWED`.

### Refunds

Refunds are available **within 14 days of payment and only if no plan or top-up credits were used**. Contact 60db support to request one. There is no self-serve refund button. An approved refund returns the full payment and ends the plan immediately.

### Endpoints

| Task | Endpoint |
| - | - |
| List plans with monthly and yearly prices | [`GET /plans`](https://docs.60db.ai/api-reference/billing/plans) |
| Start checkout on a cycle, or change plan | [`POST /billing/subscribe`](https://docs.60db.ai/api-reference/billing/subscribe) |
| Read the cycle, next credit reset and next payment | [`GET /billing/current-plan`](https://docs.60db.ai/api-reference/billing/current-plan) |

## Deduction order

1. **Plan credits** are used first.
2. **Top-up and bonus credits** are used when plan credits run out. Top-up credits **never expire** and stay usable if you later move to a lower plan.

## When credits run out

| Interface | What you get |
| - | - |
| REST | `402` with `error_code` `PLAN_CREDITS_EXHAUSTED` or `INSUFFICIENT_CREDITS`. `details.topup_available` tells you whether a top-up can be bought on this plan. |
| WebSocket | Closed with code `1008` and reason `INSUFFICIENT_CREDITS`. |

What to do next:

* **Free or Starter:** upgrade to Creator or Pro, or wait for the monthly renewal.
* **Creator or Pro:** buy a top-up, or wait for the monthly renewal.

## Top-ups (Creator and Pro)

Top-ups are available to workspaces on the **Creator** and **Pro** plans with an active or trialing subscription.

* **Amount:** $10 to $1,000 per top-up. Presets are $10, $25, $50 and $100.
* **Rate:** top-ups are priced at **your plan's rate**, not the usage rate.

```text theme={null}
credits = floor(amount_usd × plan monthly_credits / plan price_usd)
```

| Paid | Creator credits (400,000 / \$22) | Pro credits (2,000,000 / \$99) |
| - | - | - |
| \$10 | 181,818 | 202,020 |
| \$25 | 454,545 | 505,050 |
| \$50 | 909,090 | 1,010,101 |
| \$100 | 1,818,181 | 2,020,202 |

Creator is about 18,181.8 credits per $1. Pro is about 20,202 credits per $1.

> [!NOTE]
>
> The credit amount is fixed when you start checkout. A later plan change does not change the credits you bought. A coupon lowers the price you pay, but it does not change the credits.

### Who can buy

Only the **workspace owner** can view or buy top-ups. This requires the `billing:manage` permission. Other roles receive `403 Forbidden`. On Free and Starter, a top-up request returns `403 TOPUP_NOT_AVAILABLE_ON_PLAN`.

## Check your balance and buy

| Task | Endpoint |
| - | - |
| See plan, presets and balance | [`GET /billing/topup`](https://docs.60db.ai/api-reference/billing/topup-info) |
| Quote a custom amount | [`GET /billing/topup/quote`](https://docs.60db.ai/api-reference/billing/topup-quote) |
| Start checkout | [`POST /billing/add-funds`](https://docs.60db.ai/api-reference/billing/add-funds) |
| View top-up history | [`GET /billing/usage-logs`](https://docs.60db.ai/api-reference/billing/usage-logs) (`TOP_UP` rows) |

## Automatic top-up (coming soon)

Automatic top-up is in development. When it is enabled for your account, it will reload credits from a saved card when your balance runs low, up to a monthly limit you set. It is not available yet, so buy top-ups manually for now.

## Related

* [Errors and status codes](https://docs.60db.ai/api-reference/introduction.md#http-status-codes)
* [Troubleshooting](https://docs.60db.ai/api-reference/troubleshooting.md#billing--credits-issues)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.