Proration Preview
Show the exact money effect of a plan change before the user confirms it.
What it adds
An itemised preview of the credits, charges, tax and timing that result from switching plan, interval, or seat count.
What your agent is told to do
5
What your agent is told to do
5-
1
Ask the billing provider for the preview. Do not reimplement proration arithmetic — the provider's rounding, day-counting and tax rules are the ones that will appear on the invoice, and yours will drift from them.
-
2
Show the line items, not just a total: credit for the unused portion, charge for the new plan, tax, discounts, and what is due today versus at the next renewal.
-
3
Cover seat-count changes as well as plan changes. Seat counting rules and the invite-blocking behaviour are owned by Seat Management; extend that rather than building a second seat model — this entry only prices the change it hands you.
-
4
Bind every preview to the exact inputs that produced it, and re-fetch when any of them change.
-
5
State plainly when the amount due today is zero and why — a blank preview reads as a broken page.
Edge cases it handles
6
Edge cases it handles
6- A preview goes stale the moment quantity, plan, coupon or the clock moves past the period boundary. Expire it and re-fetch rather than charging against an old quote.
- The result can be a credit rather than a charge. Say where that credit goes — balance or refund — because those are very different to a customer.
- Downgrades mid-period often produce no immediate invoice at all. Show when the change takes effect instead of showing nothing.
- Switching between monthly and annual changes the period length, not just the price. Show the new renewal date.
- An existing credit balance can absorb the whole charge. The preview must show the balance applied and what remains.
- Provider preview calls fail or time out. Block confirmation with an honest message; never fall back to a locally-guessed number.
Definition of done
8
Definition of done
8- Every preview figure comes from the billing provider's preview endpoint, not local arithmetic.
- Credits, charges, discounts and tax are itemised separately from the total due today.
- Changing any input invalidates the current preview before the user can confirm against it.
- Zero-charge, credit-producing and deferred outcomes each have their own explicit copy.
- The amount actually charged matches the previewed amount for an unchanged input set.
- A failed preview prevents confirmation rather than showing a stale or estimated figure.
- The feature matches the existing design system.
- No existing functionality is broken.
Related features
Usage Limits
Usage Limits
Cap what free accounts can do — visibly and fairly.
What it does
Per-plan usage limits, enforced server-side, with the user always able to see where they stand.
How it works
- 1 Define limits per plan in one place. Do not scatter magic numbers through the codebase.
- 2 Enforce on the server at the point of creation. A client-side check is decoration.
- 3 Show current usage BEFORE the user hits the wall — surprise limits feel like a bug.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/usage-limits
Billing Portal
Billing Portal
Let people manage their own subscription.
What it does
A billing area where users can see their plan, change payment method, get invoices, and cancel.
How it works
- 1 Use the payment provider's hosted billing portal if it has one. Do not rebuild card management — it's a PCI liability you don't need.
- 2 Show the current plan, renewal date, and payment method on your own account page.
- 3 Make cancelling possible without emailing support. Dark patterns here generate chargebacks.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/billing-portal
Upgrade Modal
Upgrade Modal
Sell the upgrade at the exact moment someone wants it.
What it does
A focused upsell that appears when a free user reaches for a paid capability.
How it works
- 1 Trigger it at the point of intent — when they click the locked thing — not on a timer or on page load.
- 2 Name the specific feature they just tried to use. A generic pricing modal converts far worse.
- 3 State the price plainly and give one button to upgrade.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/upgrade-modal
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
3
It inspects, then implements
Your agent reads your existing app first, then adds the feature to fit it.
Works with your stack
These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.
Need it tighter than that? Customize the feature and tell it exactly what you're running.