# Billing

## Introduction

nthbouncer bills each organization for a licensed plan and monthly request
usage. Choose monthly or yearly licensed billing. The request allowance and
metered overage reset on your monthly usage period for both options.

Manage plan, usage, spend limits, payment method, and cancellation under
**Billing** in the dashboard.

New accounts receive 250,000 free requests to try the product without a card.

## Plans

| Plan     | Monthly | Yearly | Included requests per month | Overage (per 100k) | Pools | Max concurrency | Custom domains |
| -------- | ------- | ------ | --------------------------- | ------------------ | ----- | --------------- | -------------- |
| Starter  | $29     | $290   | 500k                        | $1.00              | 8     | 10              | 0              |
| Team     | $79     | $790   | 5M                          | $1.00              | 20    | 20              | 10             |
| Business | $199    | $1,990 | 20M                         | $0.80              | 40    | 50              | 50             |

Every plan includes a `*.nthpool.cloud` pool hostname. Custom domains are
extra hostnames you verify and attach.

Need more than Business? Contact [sales@nthbouncer.com](mailto:sales@nthbouncer.com).

Every plan can front an HTTP origin or a PostgreSQL database. The backend
does not change the price. Team and Business add IP allowlists, caller JWT
or Cloudflare Access, and async admission. Origins per pool are plan-capped
(Starter: 1, Team: 5, Business: 8). Queue depth and access log retention
also scale by plan. See the pricing page for the full comparison.

[Capacity](/docs/capacity) budgets (Fixed allocations) are on Team and
Business. [Auto balancing](/docs/capacity/balancing) (borrow under the origin
concurrency limit) is Business only.

Exact feature gates are shown on the pricing page and in-product when a control
is plan-locked.

## Trial

Before you start a paid plan, the organization uses a 250,000-request trial
credit instead of a calendar trial. Trial includes Team-class features for
evaluation, without Business auto balancing.

When credit runs out, pools suspend until you subscribe. Remaining trial credit
stops drawing after you subscribe and is not converted to cash credit. Once an
organization has paid subscription history, leftover trial credit cannot restore
access after a payment failure or cancellation.

## Subscribe

On **Billing**, choose Starter, Team, or Business, then choose monthly or yearly
billing. New subscriptions open Stripe Checkout for the licensed plan. Monthly
usage billing is attached after the subscription starts.

You can set a spend limit before you subscribe so it is ready when overage
starts.

## Changing plans

Plan changes live under **Billing → Change plan**. Payment method and
invoice history use **Manage payment** in the Stripe Customer Portal. Plan and billing
interval changes stay in the app so limits and proration stay consistent.

Metered usage does not reset when you change plans. The previous plan's
included request volume and overage rate continue through the current usage
period. Stripe applies the new plan's metered price after the next usage
invoice. Plan limits and licensed pricing change immediately.

Switching from monthly to yearly billing takes effect immediately. Stripe
invoices the prorated licensed-plan adjustment. Yearly billing runs through the
licensed period, so switching from yearly to monthly is blocked in the app until
renewal. Your plan limits and monthly request allowance do not change.

### Upgrades

Upgrades take effect immediately. Higher pool, concurrency, domain, and feature
limits apply right away. Stripe charges a prorated difference for the rest of
the billing period on an invoice now.

Access log retention also rises with the plan within a few seconds.

### Downgrades

Downgrades also take effect immediately once they are **allowed**. Stripe
credits unused time from the higher plan and invoices the adjustment now.

You cannot downgrade until your organization fits the lower plan. If anything
is over the target limits, Billing shows the blockers and the switch stays
disabled. Typical blockers:

- More pools or custom domains than the target plan allows
- Pool concurrency, queue depth, or origin count above the target caps
- IP allowlists, caller JWT / Cloudflare Access, or async admission still
  configured on pools when the target plan does not include them
- Too many async webhooks for the target plan
- Origin capacity budgets (or auto-balancing) still present when the target
  plan does not include them

Reduce or remove those resources under Pools, Domains, Capacity, IP Policies,
or Webhooks, then try again.

Log retention drops with the plan immediately after a successful downgrade.

> **Note.** Soft “grandfathering” only applies when you stay on your plan and
> edit pools. Existing settings can keep values you already set. You still
> cannot _increase_ past the current plan. Choosing a lower plan is different:
> you must fit that plan first so lower tiers do not keep higher-tier capacity
> or gated features.

### First paid plan from trial

The same fit checks apply when you leave trial for a paid plan. Trial can use
Team features with a small pool count. Starter is stricter, so you may need to
turn off gated features or lower settings before choosing Starter.

## What counts as a request

Each admitted proxied request counts, including [response cache](/docs/pools/concurrency)
hits (a hit still writes an access-log entry and meters as one request).
Rejected or failed admissions that still hit your pool also count.

Overage bills on your billing period. The Billing
page usage charts and spend limits use the same usage period while subscribed.
Trial organizations continue to use calendar-month buckets.

## Metrics vs Billing

[Metrics](/docs/pools/metrics) answers whether the concurrency limit did work (admit, queue,
reject, top keys). Billing answers how much request allowance you used. They
look at the same traffic for different questions.

## Spend caps

Set a monthly overage spend limit under Billing. Choose notify only, or pause
every pool when estimated overage reaches the limit. Defaults can ship on new
organizations so surprise bills are less likely; raise, switch to notify-only,
or clear the limit on the same page.

Paused pools refuse traffic until you change the limit or the usage period resets.
Spend pauses are separate from payment-failure suspension.

## Stripe Tax

Automatic Stripe Tax is off by default. Enable it in your Stripe Dashboard only
after Stripe Tax registrations are active. Consult a tax advisor before
enabling it.

## Payment, cancellation, and recovery

**Manage payment** opens the Stripe portal for card updates and invoices. Use
**Cancel subscription** on the Billing page to cancel. Your plan stays active
through the end of the licensed billing period. For yearly billing, that is the
yearly licensed period, not the monthly usage period. Billing shows the plan as
cancelling until that date.

If an invoice fails, pools suspend so traffic stops and metering stops. Update
the payment method and pay the open invoice to recover. After a long grace
period, suspended pools can be purged. Opening **Billing** also re-syncs with
Stripe and brings eligible pools online if a recovery webhook was missed.

Strong Customer Authentication (3-D Secure) may open a confirmation step during
an upgrade charge. Complete it to finish the plan change.

## Next steps

- [Quickstart](/docs/quickstart)
- [Pools](/docs/pools)
- [Capacity](/docs/capacity)
