Why Stripe alone won't give you MRR
Stripe stores charges, subscriptions, and invoices. Those are three sources of truth that disagree. A charge can refund. A subscription can pause. An invoice can be a one-time fee that should never count toward recurring revenue.
Most teams write a SQL query in week one, get a number that's close enough, and quietly hand-edit it every quarter.
The MRR formula your finance team will sign off on
MRR = Σ subscription.unit_amount × interval_factor
WHERE status = 'active' AND refunded = 0
EXCLUDING one-time charges and trial subscriptions- Use the subscription, not the charge. Pauses, trials, and dunning all matter.
- Convert annual plans to monthly with an interval factor (÷12). Don't book all 12 months at signup.
- Exclude one-time fees, setup charges, and refunds. They're revenue, but not recurring revenue.
Skip the SQL. Connect Stripe in 4 minutes.
DataAgents builds the MRR query for you and watches it forever.
Manual vs automated
- ×SQL query maintained by one person
- ×Stripe API changes silently break the calc
- ×Discounts, refunds, pauses mean ad-hoc patches
- ×Number drifts across Slack, sheets, and decks
- MRR defined once in the semantic layer
- Schema drift auto-detected and patched
- Refunds, dunning, and trials handled by default
- Same number in Slack, web app, email, and API
How DataAgents calculates MRR for you
DataAgents reads Stripe directly, models subscription, customer, and invoice, and proposes a governed MRR metric within minutes. You approve the definition once. After that, every channel including Slack, the web app, Teams, email digests, and the API gives the same answer.
- Auto-handles plan upgrades, downgrades, cancellations, refunds.
- Detects anomalies and flags a 12% drop before your next standup.
- Forecasts MRR 30, 60, and 90 days based on cohort history.
Frequently asked questions
Do I count free trials toward MRR?
No. A trial isn't recurring until the customer converts. Track trial conversion separately.
What about annual plans?
Convert to monthly by dividing the annual price by 12. Don't book the full year at signup. That's bookings, not MRR.
How do I handle refunds?
Subtract them from the month they were issued. Some teams subtract from the original month. Both are valid if the rule stays consistent.
DataAgents