Billing
| Endpoint | What it does |
|---|---|
GET /plans |
Available plans and their limits. No token needed. |
GET /subscription |
The current subscription and balance, and pause after a missed payment. |
POST /subscription/plan |
Move to a plan priced the same or lower. Refused with downgrade_blocked if the account holds more addresses than the plan allows, or more than one device when moving to Free. Upgrades return 402 payment_required and go through checkout. Session only. |
GET /billing/providers |
Payment methods this deployment takes. No token needed. |
POST /billing/checkout |
Open a hosted checkout for a planId with a provider: polar for card or nowpayments for crypto. Returns the checkout url and the pending payment. A provider that is unavailable returns provider_unavailable. Session only. |
GET /billing/payments/:id |
One payment and its status. The plan changes when it is paid. |
The pause object
Section titled “The pause object”After a missed payment, GET /subscription includes:
{ "pause": { "planId": "plan_scale", "since": "2026-10-19T10:00:00.000Z", "deletesAt": "2026-11-09T10:00:00.000Z", "addresses": 2, "devices": 1, "apiKeys": 1, "domains": 0 }}planId is the plan to pay for. It is null once paid, if something the new plan does not cover is still paused. pause is null when nothing is paused. See Missed payments.