Articles September 21, 2026
Why MRR from invoices jumps, and what to use instead
Ask three tools for your MRR and you get three numbers. Most of the difference comes from one decision that is rarely written down: is MRR read from invoices, or from the state of the subscription?
What goes wrong with invoices
A customer on a €149 plan upgrades to €399 on the 20th. Stripe does the fair thing and bills the difference for the rest of the period: a prorated line of roughly €83, together with the next full period. A tool that reads MRR off invoice amounts now sees an invoice that is larger than any month of this customer ever was, and a month later a normal one. On the chart that is an expansion followed by a contraction. Neither happened. The customer upgraded once.
The same thing happens in reverse with downgrades (a credit line), with quantity changes, with discounts that apply to one invoice, and with annual plans, where one invoice has to be spread over twelve months and any rounding decision shows up twelve times.
MRR is a property of the subscription
Monthly recurring revenue is what a customer has agreed to pay per month from now on. That is price times quantity, normalised to a month, minus the discounts that are active right now. It changes on the day the agreement changes, by exactly the difference:
| Day | What happened | Movement |
|---|---|---|
| 3 March | trial converts, €149 plan | new business +149 |
| 20 June | upgrade to €399 | expansion +250 |
| 20 June | prorated invoice over €83 | none: an invoice is not an agreement |
Invoices still matter, as evidence: they say when a change happened in the years before Stripe’s event history begins, and they are the best independent check there is (see below). They are just not the definition.
The rules that need writing down
Reading MRR from subscription state forces a few decisions into the open, which is a good thing:
- Trials count from their first real payment, not from the day the card was entered.
- Past due keeps counting while Stripe still retries, and is flagged as revenue at risk. When Stripe gives up, it is churn on that day.
- Paused subscriptions do not count while they are paused.
- One-off discounts (“first month free”) do not reduce recurring revenue; a discount that repeats does, for as long as it repeats.
- A plan switch is one movement. Cancelling one subscription and starting another on the same day is an upgrade or a downgrade, not a churn and a new customer.
How to check the result
If MRR comes from subscription state, invoices become an independent witness. For every subscription that counts, what you value it at per month should equal what Stripe’s latest regular invoice bills for the same items per month, to the cent. Where the plan changed since that invoice, the comparison has to wait for the next one, and should say so rather than count as agreement. sumwerk runs this check after every sync and shows the result next to the MRR; a wrong price, quantity, currency or billing interval has nowhere to hide.