Billing & Plans
Billing & Plans
Everything billing-related lives in the dashboard under Billing (/account/billing). Billing is scoped to your account — the account is the billing entity, not the individual user — and only an account owner can run the mutating actions (checkout, cancel, pause, resume, payment methods, retention add-on). A member whose role grants Billing write or update can also top up the prepaid balance, paying with a card already on the account. Members with billing-read permission can view the plan, invoices, balance history and usage estimate.
Current Plan
Choosing & changing a plan
Pick a plan from the plans grid and confirm checkout. The same action handles a brand-new subscription and a plan change on an existing one.
Monthly vs yearly
Each plan can be billed monthly or yearly. If you don't pick one, checkout defaults to monthly. A plan must have a price for the interval you choose — if its yearly price isn't set up, yearly checkout is rejected.
Upgrade vs downgrade timing
When you change plans, Ngris decides whether the change takes effect immediately or at the end of your current billing period:
- Immediate upgrade — moving to a plan whose effective monthly rate is strictly higher than your current one. The difference is prorated and charged now.
- Scheduled downgrade — moving to a cheaper plan is scheduled at the end of the current period, so you keep what you paid for until then. The response action is
downgrade_scheduled. - Cadence switch — same plan, switching monthly↔yearly, is also scheduled at the period boundary rather than restructured mid-cycle.
On a successful immediate upgrade the response action is upgraded. If your bank requires 3DS, the response carries requires_action with a client_secret and the dashboard completes the challenge.
Downgrade grace
When a downgrade takes effect, features the new plan doesn't include keep working for a grace period (7 days by default). Then they're turned off. This applies when a scheduled downgrade lands, when an admin moves your account to another plan, and when a feature is removed from your plan. Features ending on a date are listed in the dashboard and in the grace field of GET /account/entitlements. Upgrading before the date keeps them.
When the grace period ends, resources that depend on a removed feature are mostly disabled, not deleted:
- Custom-domain and dedicated-port endpoints go inactive.
- Non-owner members are suspended.
- Edge functions are disabled.
- Dedicated IPs are released to standby.
- Applications your plan no longer includes are paused. Visitors see a neutral “This site is paused” page. Managed backends, WordPress sites and functions scale to zero, and their files, deploys and data are kept.
- If the new plan doesn't include databases, your databases are closed: apps can't connect to them, and apps connected to them for production (Both or Production only) are paused. Their data is kept. See Closed databases.
Upgrading again re-enables them. Paused applications resume on their own within a few minutes. Two things you turn back on yourself: endpoint health monitoring and automatic backup schedules. Uploaded TLS certificates are replaced by automatically issued ones.
A lower limit applies right away to new resources, and existing ones are kept. Edge functions are the exception: the newest functions over the new limit are disabled when the grace period ends.
402 and code unpaid_subscription while your account still owes money: a subscription that is past due or unpaid, or an unpaid invoice (written off as uncollectible, a charge that failed or awaits confirmation, or one past its due date). Nothing is created or canceled. The response names the invoice (invoice_id, hosted_invoice_url): pay it from Billing → Invoices or that link, then check out again. A card declined on an earlier checkout attempt doesn't count — retrying with another card works (the abandoned attempt is canceled and a new subscription created) — and a plan change on an existing fixed-price subscription isn't affected. In the dashboard the refusal comes with a Pay invoice button that opens the invoice.409 and code unlinked_subscription while your billing account has another live subscription (active, trialing or paused) that isn't linked to the account yet — typically for the minute after you pay a past-due or unpaid subscription's invoice, before it links itself back and your plan returns. Refresh and try again after a moment; if it persists, contact support.Available Plans
Free
Developer
Team
Plan-change preview
Before you confirm a plan change, the billing page shows the exact amount due. The numbers come from a preview of your next invoice, so they match what you will actually be charged:
- Due today — the prorated charge for switching right now. Already nets any account credit balance against the charge; it never goes below zero (excess credit rolls forward).
- Next amount & date — the recurring charge you'll pay each cycle after the change, and when the next full charge lands.
The preview is read-only — it never mutates the subscription. If a plan has no fixed price for the chosen interval (for example a usage-only plan), or you've never subscribed or topped up, the page falls back to neutral copy and never blocks the upgrade.
Payment methods
Add and manage cards from the billing page:
- Add a card — enter the card in the secure card form; it is saved to your account.
- Set default — choose which card future charges use.
- Remove — detach a card you no longer want on file.
When you check out or top up without naming a card, Ngris uses your customer's default payment method, falling back to any attached card. If none is on file you'll be prompted to add one first.
Payment Methods
Invoices
The invoices view lists your account's invoices, paginated (use the page control). Each invoice shows its number, amount due / amount paid, currency, status, billing period, and line items, plus links to:
- Hosted invoice — the invoice's online page, where an open invoice can be paid.
- Invoice PDF — a downloadable PDF.
If you've never subscribed or topped up, the list is simply empty.
Invoices
Unpaid invoice → suspension
If an invoice stays unpaid, the account is suspended. The countdown starts when ngris first sees the invoice unpaid — usually within an hour of a failed payment:
- Every dashboard page shows a banner with the date the account will be suspended. The owner and members with billing access get a Pay invoice button; other members see the date and are asked to contact the account owner.
- The owner gets a warning email before that date, with the date and a Pay invoice button.
- Still unpaid on that date, the account is suspended and the owner gets an email.
Paying before the date stops the countdown — nothing is suspended. The number of days isn't fixed: the banner and the warning email give the exact date.
What stops
- Endpoints and tunnels: visitors get an “Account suspended” page, and agents are disconnected.
- Static sites, previews, apps, WordPress and functions stop serving.
- Builds, deploys, cron jobs and scheduled backups don't run.
- Databases are closed: apps can't connect to them (see Closed databases).
- The account can't be used: its pages, resources, logs, data and backups can't be opened in the dashboard, the API or the CLI, and Iris is off.
What keeps working
- Signing in, your own settings (including your personal data export), and switching to your other accounts.
- Billing: invoices, payment methods and plans. Paying.
- Support: open a ticket or reply to one.
- Your databases' data, your domains and DNS records, and certificate renewals. Nothing is deleted.
Restoring the account
Pay the invoice: the Pay invoice button in the banner or the email, or Billing → Invoices. Once nothing is owed, the account is active again within a few minutes and the owner gets an email. Databases open again, and sites, apps and functions come back by themselves (apps start small and scale up again; overdue cron jobs run once).
ngris command again).While the account is suspended, the owner can still stop the subscription from renewing (Cancel); the invoice stays owed and the account stays suspended until it is paid. A new subscription can't start before the invoice is paid.
Usage metering & estimate
For plans with a metered (hybrid / pay-as-you-go) billing model, the billing page shows a live cost estimate for the current period. The estimate reads from the same account usage totals that your invoice is calculated from, so what you see equals what you'll be billed.
Meters
Each metered line shows used quantity, the quantity included in your plan, the billable overage, the per-unit price, and the estimated cost:
| Meter | Unit | How it's measured |
|---|---|---|
| bandwidth_gb | GB | Inbound + outbound bytes for the period, converted to whole GB. |
| requests_1k | per 1,000 | Total requests for the period, in thousands. |
Overage is used − included (never negative); estimated cost is overage × unit price. The page also shows the total estimate, the billing-period window, and the raw period usage (bytes in / out / requests). Plans with no metered prices show an empty meter list.
Requests to private deploy-preview URLs don’t count toward usage on the Team and Enterprise plans; public previews count on every plan. See Preview traffic and usage.
Current Usage
Prepaid balance & top-up
Your account can hold a prepaid credit balance. Billing → Payment & Billing shows the current balance and, below it, the full Balance history: every top-up, credit, refund, adjustment and usage deduction on the account, newest first, each with its date, type, description, amount and the balance after it. Filter it by type and use Load more to page back through older entries. A card refund of a top-up shows how much went back to your card.
Topping up
Enter an amount and confirm. Limits:
- Minimum — $5.00.
- Maximum — $500.00.
The top-up charges your selected (or default) card. If it succeeds the balance is credited immediately and the response returns the new balance. If your bank requires 3DS, the response carries requires_action with a client_secret; the dashboard completes the challenge and finalizes the top-up.
Balance history
| Date | Type | Description |
|---|---|---|
| Top-up | Balance top-up | |
| Top-up | Balance top-up |
Promo codes
If you have a promo code, add it when you subscribe: on Billing → Plan & Add-ons, choose a plan, then in the payment dialog click Have a promo code?, enter the code and Apply. The dialog shows the discount (a percentage or a fixed amount off the first invoice) and the code is saved for you — it's used when that subscription starts.
- New subscriptions only — a code discounts the first invoice of your next new subscription, not a plan change on a subscription you already have, so the field only appears when you don't have a live subscription.
- Plan and minimum — a code can be limited to one plan or to a minimum amount; both are checked again against the real price when the subscription starts.
- Once per person — each code can be redeemed once per user. A code you redeemed but haven't used yet applies to your next new subscription automatically.
- Codes can't be redeemed while the account is suspended; you can still subscribe without one.
Extra log retention add-on
Keep traffic logs longer than your plan's base retention (it depends on the plan; GET /v1/account/plan returns it as plan_limits.traffic_log_retention_days) from Billing → Traffic Log Retention. Extended retention is a recurring add-on on a paid subscription: you choose how many extra days you want (up to 365), and they're added on top of the plan's base retention.
It's billed per extra day, as an item on your plan subscription at the same monthly or yearly cadence as the plan. If you cancel it, you keep the extra days until the end of the current billing period.
Pause, cancel & resume
Owner-only subscription controls on the billing page:
Cancel
Schedules cancellation at the end of the current billing period (cancel_at_period_end). The subscription stays active and keeps all features until the period ends. The account then keeps its plan for a grace period (7 days by default) before it moves to the free plan. A subscription that ends because payment failed gets the same grace period. The response shows the status, the cancel_at_period_end flag, and the current period end. The owner can cancel this way even while the account is suspended for an unpaid invoice: it doesn't lift the suspension, and the invoice stays owed.
Reactivate
Removes the scheduled cancellation — un-cancels a subscription that was set to end at period close. Reactivate any time before the period ends.
Pause
Temporarily stops billing and drops your account to free-plan entitlements while paused. If the free plan doesn't include databases, your databases are closed while paused: apps can't connect to them, their data is kept, and they open again when your plan comes back (see Closed databases). You can't pause the free plan, and you can't pause an already-paused or inactive subscription. Dedicated IPs — single or per-region groups — are released to standby while paused (reserved to your account for 7 days and re-acquired on resume; the one-time setup fee is re-charged on re-activation). See the Dedicated IPs guide.
Resume
Starts a new billing period right away: the pause ends, your billing date moves to today, and the new period is invoiced and charged immediately. Your pre-pause plan and entitlements come back as soon as that invoice is paid. If you resume inside a period you had already paid for, the unused part of it is credited on the new invoice; a period the pause skipped was never charged, so nothing is credited for it. A subscription still in its trial ends the trial and starts its first paid period.
If the charge is declined or your bank asks you to confirm it (3DS), the account stays paused on the free plan and the resume answers 402 with the invoice to pay (hosted_invoice_url, plus a client_secret when the payment needs confirming). Pay it with the Pay invoice button the dashboard shows, from Billing → Invoices, or update your payment method: the plan comes back once it is paid. Resuming again while that invoice is open never charges a second period.
Each lifecycle action is recorded in your account's plan-change history (upgrade / downgrade / cancel / pause / resume), visible to admins and support. Pause and cancel also trigger a confirmation email.