Billing
How plans, payments, refunds, and trial management work.
Plans
See the pricing page for plan-by-plan capabilities and current prices. Enterprise is sales-assisted: its price is shown as Custom for both monthly and yearly views, and its action opens the contact-sales form instead of self-serve checkout.
How to access
/billing for current plan + invoices.
/pricing (public) for the upgrade flow.
/billing β Manage subscription opens the Stripe Customer Portal for
card updates, plan changes, cancellation.
Trial
When a Pro free trial is running, the pricing page and checkout show its length. It is offered once per person and per workspace, to first-time Pro customers, and a card is required. If you cancel before the trial ends you are not charged. We email you a reminder a few days before the trial ends with the date, the amount and the card we will charge.
Refunds
Refunds are governed by our refund policy, which sets out how cancellations, plan changes and refund requests are handled. Cancelling keeps your plan active until the end of the billing period you paid for. When you downgrade, the unused value of the period becomes account credit applied to your future invoices; credit expires after 12 months and is never paid out as cash.
To request a refund, email [email protected] with your account email and reason.
Credit pack refunds remove the unspent part of the refunded pack.
Spend in the billing period is allocated to grants FIFO (oldest grant
first, then grant id). The clawback is
floor(pack credits * refund amount / original charge), then limited
to that pack's remaining credits under FIFO and to the period balance,
so the balance never goes below zero. A later pack and the monthly
plan allotment stay in place when the refunded pack has already been
consumed.
Pausing before a downgrade
Before the downgrade/refund choices, eligible paid web subscriptions can pause billing for a user-selected calendar period. The first pause started in a rolling 12-month window may be 1, 2, or 3 months; the second may be 1 or 2 months; the third is limited to 1 month. A fourth pause is unavailable until the rolling window advances. The server enforces these choices.
The confirmation shows the exact resume date. During a pause, billing is paused and access uses the Free tier. Stripe is configured to resume billing on the selected date, while a 15-minute reconciliation sweep independently checks due pauses, restores the prior plan across every plan projection, and sends a courtesy email.
Common workflows
"Upgrade to Pro"
- Click any π paywall on a Pro feature, or visit
/pricing. - Pick monthly or annual.
- Stripe checkout opens (hosted on Stripe's domain).
- Enter card details. If a free trial is offered, it starts now and the first charge happens when the trial ends; otherwise you are charged today.
- Redirected back to BlitzPulse, plan now reads Pro.
"Update my card"
/billing β Manage subscription.- Stripe Customer Portal opens.
- Payment methods β Update.
- New card replaces old; next renewal uses the new card.
"Cancel"
/billing β Manage subscription β Cancel subscription.- Pick "at period end" (default) β keep Pro until the next renewal date.
- Or "immediately" β refund per policy if eligible, downgrade now.
- Confirm. We email a confirmation.
"Switch from monthly to annual"
/billing β Manage subscription.- Update plan β Pro Annual.
- Stripe pro-rates the change; you get a credit for unused monthly, billed for the annual difference.
Plan changes mid-period
- Upgrade (Free β Pro, monthly β annual) β pro-rated, immediate.
- Downgrade (Pro β Free, annual β monthly) β applies at end of current period to honor the contract you paid for.
Usage credits
When a downgrade offers usage credits, the confirmation explains the credited amount and which future charges or renewals can use it. The same details are sent by email. You can open Settings β Billing β Credits at any time to see the current balance, how each grant was calculated, and one application entry per charge. If one charge draws from multiple credit grants, the view combines those draws into the charge's total and shows the balance after the full charge.
The view reads the billing ledger when you open it; it does not display a
cached balance. Its authenticated API is GET /api/account/credits/ledger,
which returns balance_cents, applications, and calculation_basis. If live
billing data cannot be read, the endpoint returns HTTP 503 with the typed reason
account_credits_ledger_unavailable, and the page displays an unavailable
state rather than a zero balance.
Failed payment
If your card fails:
- We retry per Stripe's smart retry schedule (4 attempts over 21 days).
- You receive emails on each failure.
- After final failure, plan downgrades to Free; broker connections remain active but advanced features are gated.
- Update your card via the Customer Portal at any point to recover without re-onboarding.
Tips & best practices
- Use annual if you're committed β current annual discounts are shown on the pricing page.
- Keep a backup card on file via the Customer Portal to avoid involuntary downgrades.
- Use the trial to test thoroughly before you subscribe; see the refund policy for how refunds are handled.
Troubleshooting
- Plan still says Free after upgrade β Stripe webhook delay, usually <5 seconds. Refresh; if still wrong, contact support.
- Charged twice β extremely rare; we dedup webhooks. Email support with the Stripe receipt IDs and we'll refund the duplicate.
- Can't access Customer Portal β sign out + back in; portal session inherits your BlitzPulse auth.