Subscription billing
Plans, the trial and the renewal come out of one subscription state, the charge goes out by itself, and a failed payment is worked through on a schedule.
- Buildfrom $2,850
- Timeline3–5 weeks
- Supportfrom $570/mo
Who this suits: Services selling access by the month where a person still watches the payments: a spreadsheet of who is paid up and access switched off by hand.
What is in the first version
- plans
- automatic renewal
- grace period
- cancellation and receipts
The figures above are the package this sits on: Payments and billing. Anything past its edges the calculator adds before the work starts, not after.
How the path goes
- 01
The period starts, its end visible
The customer sees the date and the amount of the first charge before entering a card, trial or no trial.
- 02
Renewal runs itself, and is announced
The charge goes out on its date against the provider's token, and the message goes out before it, not after.
- 03
A decline starts a schedule
Retries spread across days, the customer can change the card, and access ends on a date named in advance.
What decides whether this works or annoys people
A decline is not one thing
The reason code decides the behaviour: wait and retry, or stop and ask for another card, because retries cost attempts and fees.
The provider and your database disagree
The subscription state is reconciled with the provider on a schedule, and a row where the two disagree is shown, not overwritten.
What happens to the data
How long data is kept after access ends is chosen before launch and named in the same message as the end date.
What to measure once it is live
- trials reaching the first charge
- declines recovered by retries
- cancellations done without support
- disputes and chargebacks
Why this comes out faster
The shape of this one is known: the states, the edge cases and the things that usually go wrong have been decided before. Nothing here is a template, and the saving is not in your half of the work. It goes into your process, your content and the systems this has to talk to, which is the part nobody can have solved in advance.
A likely stack for this
Picked against the task when we scope it, not decided in advance. This is the shelf it usually comes off.
- Subscription stateTypeScriptNode.jsPostgreSQLPrisma
- Charges, retries and schedulesStripePaddleTemporalRedis
- Account and operationsNext.jsReactDockerGrafana
Price it yourself, right here
Five steps, and you can see the number without leaving a contact. The estimate accounts for the kind of work, what you already have and what it will need inside.
These bills do not come from us
- provider fees on charges and refunds
- the fee per dispute
- mail for notices and receipts
- digital sales tax and its service
Asked before the first call
- Should the trial ask for a card?
- Both are a setting, and we build either. A card at the start brings more trials to a first charge and fewer sign-ups; we will not ship a trial that becomes a silent charge.
- We sell in two currencies. What renews at what price?
- The price is fixed in the currency of the subscription and renews in it, and an edit to the price list does not reach people already paying until you decide. Conversion is the provider's work.
- What if money goes out twice?
- It should not: every webhook and every charge carries a key, so a repeated delivery updates the same payment. If it happens, your operator refunds one charge without touching the subscription.