# Billing

## Introduction

swarmvia bills each organization for a licensed plan and monthly request
usage. Licensed plans are billed monthly. The request allowance and metered
overage reset on your monthly usage period.

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

New organizations can start a free trial on any plan with 10,000 requests and
no card. Subscribe when the credit runs out to keep pools online.

## Plans

Prices are per organization per month. Every plan includes unlimited members.

| Plan     | Monthly | Included requests / org / mo | Overage (per 100k) | Pools | Max concurrency | Custom domains |
| -------- | ------- | ---------------------------- | ------------------ | ----- | --------------- | -------------- |
| Starter  | $49     | 100k                         | $10.00             | 8     | 10              | 0              |
| Team     | $99     | 500k                         | $8.00              | 20    | 20              | 10             |
| Business | $199    | 2M                           | $5.00              | 40    | 50              | 50             |

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

Need more than Business? Contact [support@swarmvia.com](mailto:support@swarmvia.com).

Every plan can front an HTTP origin or a PostgreSQL or MySQL 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.

## Free trial

There is no separate free plan. Before you subscribe, the organization uses a
10,000-request trial credit (no card, no clock). Trial includes Team-class
features for evaluation, without Business auto balancing. Pricing CTAs say
**Start free trial** on each paid plan; the credit is the same either way.
Pick Starter, Team, or Business when you subscribe.

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. 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
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.

### 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. 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)
