SAR 12,000 reached the bank. MRR increased by SAR 1,000.
July 14, 2026

A customer signs an annual contract for SAR 12,000 and pays the full amount on 1 July.
The bank balance increases by SAR 12,000 that day. MRR increases by SAR 1,000—the monthly value of the contract.
Cash tells you what arrived. MRR tells you the recurring subscription value your business carries into the next month.
Put every subscription on the same monthly scale
MRR stands for monthly recurring revenue. It includes subscription amounts that repeat by contract, expressed as one month.
For the annual customer:
SAR 12,000 ÷ 12 months = SAR 1,000 MRR
A monthly customer paying SAR 1,000 contributes the same MRR. Their payment schedules differ, but their monthly recurring value is equal.
The following do not belong in MRR:
- a one-time setup fee;
- professional services;
- hardware or other one-off purchases;
- tax collected on the invoice;
- and variable usage with no recurring commitment.
Those amounts may be real revenue or cash. They answer a different question.
Reconcile the month through five movements
The company starts July with SAR 80,000 MRR. During the month:
- new customers add SAR 12,000;
- existing customers upgrade and add SAR 3,000;
- downgrades remove SAR 1,000;
- cancellations remove SAR 4,000.
From SAR 80,000 to SAR 90,000
A SAR 12,000 annual contract contributes SAR 1,000 monthly here—not the full payment in the month cash arrives.
The closing calculation is:
80,000 + 12,000 + 3,000 − 1,000 − 4,000 = SAR 90,000 MRR
The business added SAR 15,000 and lost SAR 5,000. Looking only at the final SAR 90,000 hides both sides of that story.
Each movement points to a different problem
| Movement | What happened | What the team learns |
|---|---|---|
| New MRR | A new customer started paying | Sales added recurring value |
| Expansion | An existing customer upgraded or added seats | The product grew inside an account |
| Contraction | A customer downgraded or removed seats | The account stayed, but became smaller |
| Churn | A customer cancelled | The recurring value left completely |
| Reactivation | A cancelled customer returned | Previously lost value came back |
This breakdown changes the decision. Weak new MRR is an acquisition problem. High contraction may point to packaging or adoption. High churn needs retention work. One total cannot tell you which one happened.
Keep variable usage beside MRR
The report product in this series charges SAR 499 monthly and SAR 0.35 for every report above the included amount.
The SAR 499 subscription belongs in MRR. The monthly overage changes with usage, so report it separately as usage revenue. Combining both into one MRR number makes the business look more predictable than it is.
A committed usage minimum is different: if the contract guarantees a fixed amount every month, that committed portion can be treated as recurring under your chosen metric policy. Keep the variable amount separate so readers can see what is contracted and what fluctuates.
MRR is an operating metric, not a replacement for accounting revenue recognition. Define the policy once and apply it consistently across periods.
The total needs a customer trail
When MRR moves from SAR 80,000 to SAR 90,000, the dashboard should show the subscriptions behind every movement:
- which new contracts created SAR 12,000;
- which customers expanded by SAR 3,000;
- who downgraded by SAR 1,000;
- and which cancellations removed SAR 4,000.
In Tirdad, the same subscriptions, prices, and changes that produce invoices also feed the revenue view. Annual amounts are normalized to a month, one-time charges remain separate, and every movement can be traced back to a customer and subscription.
MRR is useful when it shows both the recurring total and the customer movements that changed it.
Eight connected decisions—from the first usage event to recurring revenue.
Set the rule once. Tirdad applies it every time.
Keep the policy, effective date, customer agreement, and invoice calculation in one billing system instead of rebuilding the decision in every product surface.