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, top-up, retention add-on). Members with billing-read permission can view the plan, invoices, balance and usage estimate.
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 configured Stripe price for the interval you choose — if its yearly tariff 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. Stripe prorates the difference and charges it 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.
Plan-change preview
Before you confirm a plan change, the billing page shows the exact amount due. The numbers come straight from Stripe's invoice preview, so they match what Stripe will actually charge:
- 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 have no Stripe customer yet, 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 — the dashboard creates a Stripe SetupIntent, collects the card client-side, then confirms it to attach the card to your customer.
- 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.
Invoices
The invoices view lists your account's Stripe 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 — Stripe's hosted invoice page.
- Invoice PDF — a downloadable PDF.
If you have no Stripe customer yet (you've never subscribed or topped up), the list is simply empty.
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 the Stripe meter reports off, 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.
Prepaid balance & top-up
Your account can hold a prepaid credit balance. The balance view shows the current balance and your most recent transactions (top-ups, credits, usage deductions, refunds — each with a type, amount, running balance, and timestamp).
Topping up
Enter an amount and confirm. Limits:
- Minimum — $5.00.
- Maximum — $500.00.
The top-up charges your selected (or default) card via a Stripe PaymentIntent. 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.
Extra log retention add-on
Buy additional traffic-log retention days as a one-time add-on. The extra days are added on top of your plan's base retention. Available bundles:
| Extra days | One-time price |
|---|---|
| +7 days | $1.00 |
| +30 days | $3.00 |
| +60 days | $5.00 |
| +90 days | $8.00 |
The charge is created as a Stripe invoice item on your account. Days are granted exactly once per charge, so a retry never adds them twice.
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, after which the account drops to the free plan. The response shows the status, the cancel_at_period_end flag, and the current period end.
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 voids collection in Stripe and drops your account to free-plan entitlements while paused. 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
Restores your pre-pause plan and entitlements and clears Stripe's pause so the next cycle bills as usual.
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.