# Billing & plans

Koo bills per account: a plan (Free, Plus, Pro, or Enterprise), seats, and the compute your services use. Everything here is self-service from your account's **Plans** and **Billing** pages — except Enterprise, which has no published price and starts with a conversation with sales.

What each plan gates — projects, service sizes, retention, and more — is covered in [Usage & plan limits](/docs/account/usage-and-limits).

## How your bill is computed

Koo bills in two separate parts: your subscription in advance, and compute in arrears.

**Your subscription — plan + seats, up front.** A flat amount for your plan, plus any [members](/docs/collaboration/teams-and-roles) beyond the plan's included seat count (billed per seat). You pay this at the start of each period, and the hosted checkout charges only this. Plans bill monthly or annually; the comparison table below shows both prices.

**Compute — what your services run, monthly in arrears.** Each running service accrues its monthly price — set by its [CPU and memory](/docs/services/resources-and-scaling) — × the fraction of the month it actually ran. Run a service for half the month and pay half; suspended time doesn't accrue. At the end of each month that total is billed, after two deductions applied in order:

1. 
2.

Symbolically, the compute charge is `max(0, Σ price(service) × fraction run − allowance − credit)`.

If that works out to $0 — a common outcome within the allowance and credit — Koo still cuts a real invoice for $0; it simply charges nothing.

> **Note:**
>
> A Free-plan account is never billed. Only accounts with a live subscription are rated at all: on Free there is no subscription, no invoice, and no payment method on file. The Free plan's ceilings are exactly the always-free allowance, so there is never anything above it to charge.

## Compare plans

Plans differ in seats, project and resource ceilings, features, and log and metrics retention. Every number renders live from the current pricing config:

| Plan | Free | Plus | Pro | Enterprise |
| --- | --- | --- | --- | --- |
| Base price | $0 | $20/mo | $60/mo | $null/mo |
| Seats included | 1 | 3 | 10 | 25 |
| Projects | 1 | 10 | Unlimited | Unlimited |
| Locations per service | 1 | 2 | 5 | 10 |
| Free web service | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB |
| Free Postgres | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB |
| Free Redis | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB | 0.5 vCPU / 1 GiB |
| Custom domains | — | 3 | 25 | 100 |
| Auto-deploy from Git | — | Yes | Yes | Yes |
| Priority support | — | — | Yes | Yes |
| Log / metrics retention | 1 d | 7 d | 30 d | 90 d |

Enterprise is negotiated with sales and has no published price — nothing in the table is a price for it.

## Service pricing

Every service picks explicit CPU and memory from a discrete ladder and bills a predictable monthly price, linear in CPU + memory:

| vCPU | Memory | Price |
| --- | --- | --- |
| 0.25 vCPU | 512 MiB | $5/mo |
| 0.5 vCPU | 1 GiB | $10/mo |
| 1 vCPU | 2 GiB | $20/mo |
| 2 vCPU | 4 GiB | $40/mo |
| 4 vCPU | 8 GiB | $80/mo |

Pick any CPU + memory (memory up to 8 GiB per vCPU).

Databases price their compute the same way. A database's disk comes with its size — it is derived from the memory you choose, never picked separately — and bills at the per-GB rate. See [Postgres](/docs/databases/postgres) and [Redis](/docs/databases/redis) for their sizes.

## The free allowance

Your primary account permanently includes one free web service, one free Postgres, and one free Redis, each at the free unit (0.5 vCPU / 1 GiB). The allowance belongs to the primary account only — see [Use multiple accounts](/docs/account/multiple-accounts).

The allowance is a price deduction, not a reserved shape: upsize a covered service and it bills only the difference — `price(service) − price(free unit)`. The Free tier page carries the full rules.

## Promo codes

If you have a promo code, redeem it under **Credits & promo codes** on your account's Billing page. Only the account owner can redeem or remove one, and an account holds one code at a time.

**On a paid plan**, the discount comes off your next invoice and every invoice after it.

**On the Free plan** there's no invoice to discount yet, so the code is saved on the account and shown as _Applies when you upgrade_. You won't re-enter it: the saved code is applied to your checkout automatically — and if it covers the plan price in full, checkout doesn't ask for a payment method at all.

A promo code discounts your subscription, not compute. Compute keeps billing monthly in arrears at the normal rate, after your free allowance and your plan's compute credit.

Codes can carry limits — an expiry date, a maximum number of accounts, or a specific plan. If one no longer applies, redeeming it tells you why.

You can remove a code at any time from the same panel. Removing a saved code simply drops it; removing an applied one means your next invoice bills the full amount.

## Upgrade

Upgrade from your account's **Plans** page:

1. 
2. 
3.

Checkout is only for your first purchase. Later plan changes are prorated adjustments on the existing subscription: an upgrade charges the difference for the remainder of the period right away.

Your free allowance carries over unchanged — paid plans always include at least the Free allowance.

## Downgrade

If your current usage fits the lower plan's limits, the downgrade applies immediately, with the unused difference credited toward your next invoice.

If usage exceeds the lower plan, the console opens a resolution dialog before anything changes. It has two parts:

- 
-

Confirm with **Adjust & downgrade** — or **Remove & downgrade** when removals are involved — and the downgrade applies with those changes.

> **Warning:**
>
> Removals in a downgrade permanently delete the selected items and any data they hold — there is no undo. Every change a downgrade makes is recorded in the [audit log](/docs/collaboration/audit-log).

## Cancel & refunds

Cancel from your account's **Billing** page with **Cancel subscription**. Cancellation goes through Koo rather than the billing portal so your refund is computed correctly.

**Monthly subscriptions:** canceling keeps your paid plan active until the end of the current period, then reverts the account to Free. There's no mid-period cash refund on your plan; the free allowance keeps your covered services running at $0.

**Annual subscriptions canceled mid-term:** the subscription ends right away, and you receive a prorated cash refund of your plan and seats at the monthly-equivalent rate — you pay the regular monthly price for the months you actually used and get the remainder back: `refund = amountPaid − monthsUsed × monthlyPrice`, never below zero. Late in the term, once the monthly-rate value used exceeds what you paid, no refund remains. A refund on a very new annual subscription may be held for a manual review before it's issued.

**Compute is settled separately** either way: the compute you've already used is billed once more at the end of the month, as usual — a final compute invoice — and then nothing further.

If a renewal payment fails, you're notified and the charge is retried automatically; if retries are exhausted the account is suspended — read-only — until a payment succeeds, then restored.

Deleting your account cancels its subscription the same way, refund included — see [account deletion](/docs/account/account-deletion).

## Manage cards and invoices

Your account's Billing page shows your plan, payment method, and invoices. **Manage billing** opens the billing portal, where you change cards and download invoices; cancellation stays on the Billing page, as above.

The same operations are available programmatically — see the [Billing API](/api/billing).

## Price changes

When Koo changes prices, the new prices apply to new subscriptions only. Existing subscriptions keep their current prices for a 12-month grandfathering window from the date of the change, and you're notified before your subscription migrates to the new prices at the window's end.
