Why your atSpark numbers may differ
from your billing tool.
You'll compare atSpark against the MRR report inside your billing tool — you should. This page explains exactly when the two will match to the cent, when they can differ, and why. No hand-waving: every difference has a named, checkable cause.
The short answer
- From the day you connect, forward — atSpark tracks every subscription event (new, upgrade, downgrade, pause, cancellation, reactivation) as it happens. These months match your billing tool's report.
- Recent history — where your billing platform exposes its event log (for example, Zoho Billing retains ~6 months of subscription events), atSpark backfills it at connect time. Those months match too.
- Older history — billing platforms don't expose their full internal change history through their APIs. For months beyond the event window, atSpark reconstructs MRR from the records that do survive: subscription activation and cancellation dates, and actual invoices. Reconstruction is typically within ~1% on monthly MRR, and New Business / Churn line items usually match exactly. These months are labeled as reconstructed in the app.
Every month of tenure converts a reconstructed month into a tracked one. After six months on atSpark, your entire trailing-twelve-month view is built from live, event-level data.
How atSpark computes MRR
atSpark uses the same subscription-level, event-dated semantics your billing tool uses for its own MRR report — we verified them line-by-line, to the cent, against real billing-tool reports:
- New Business — any newly activated subscription counts as new MRR, even when the customer already has other subscriptions.
- Expansion / Contraction — recorded in the month the subscription's price actually changes, not when the next invoice happens to arrive.
- Churn — recorded on the cancellation or pause date, at the subscription's rate. A mid-term cancellation churns immediately, not at the end of the prepaid term. A paused subscription leaves the MRR base until it resumes.
- Reactivation — the same subscription resuming after a pause or cancellation.
- Comped accounts — subscriptions that have only ever been invoiced $0 (fully discounted) carry no MRR, matching how your billing tool values them.
What each billing platform lets us see
The depth of your historical data depends on what your platform's API exposes — this is a property of the platform, not of atSpark, and it applies equally to every analytics product:
- Stripe — exposes complete invoice and line-item history, which supports exact historical reconstruction for the full life of your account.
- Zoho Billing — exposes current subscription state, full invoice history, and a subscription event log covering roughly the last 180 days. atSpark captures that event window at connect time and preserves it permanently — from then on, nothing expires.
- QuickBooks — revenue is invoice-based by nature, and invoices carry complete history.
This is also why connecting early matters: event logs are sliding windows. The day you connect is the day your exact history starts being preserved.
How reconstructed months are built
For months older than your platform's event window, atSpark rebuilds MRR from records that survive indefinitely:
- Activation and cancellation dates on every subscription — so New Business and Churn line items are usually exact even deep in history.
- Renewal invoices — an annual renewal invoice reveals the price that was actually in force during that term, so price changes are placed in the right period rather than projected backward.
What reconstruction cannot recover: mid-term price changes that left no invoice, subscriptions that were deleted from the billing platform, and the exact dates of subscriptions that stopped being counted before the reconstruction window. In practice these amount to roughly ±1% of monthly MRR. Reconstructed months are marked in the app, so you always know which numbers are tracked and which are rebuilt.
Differences that are deliberate
A few differences from your billing tool's own dashboard are by design — the same choices made by every serious revenue-analytics product:
- $0-billed subscriptions don't count. A subscription with a 100% discount has a list price but no revenue. We exclude it from MRR (your billing tool's MRR report does too — its subscription list may not).
- Lapsed subscriptions don't linger. A subscription whose term ended and was never re-billed stops counting at term end, even if its status still reads “live” in the billing system.
- Pauses are churn until they aren't. A paused subscription isn't revenue. If it resumes, it comes back as a reactivation — the honest shape of what happened.
If a number still looks off
Every figure in atSpark drills down to the customers and subscriptions behind it, so a discrepancy is never a mystery for long: open the month, expand the movement, and compare the customer list against the same drill-down in your billing tool.
If the two genuinely disagree, tell us at support@atspark.com — we reconcile to the cent, and if the cause is on our side we treat it as a bug, not a rounding story.