Revenue numbers that actually match
Stripe says $1.2M. Your database says $1.18M. The CRM shows $1.3M in closed-won. Which one goes to the board? Eru reconciles automatically.
Why revenue numbers never match
Revenue discrepancies aren't bugs—they're inevitable features of how modern companies operate.
Different definitions
Stripe reports what was actually charged. It includes prorations, refunds, disputes, and currency conversions. MRR is calculated from active subscriptions at a point in time.
Your database might track "contracted revenue" based on subscription records—what customers agreed to pay, regardless of what was invoiced or collected.
The CRM shows deal values, which might include one-time fees, multi-year contracts counted upfront, or pipeline optimism that never closed.
Different timing
Stripe updates in real-time. Your database might batch-process subscription changes overnight. The CRM updates when sales remembers to move deals to closed-won. Comparing them at the same timestamp compares different realities.
Different boundaries
Which customers count? Stripe sees everyone with a payment method. Your database might exclude free trials. The CRM might include partner deals that don't flow through Stripe at all.
The cost of discrepancies
When revenue numbers don't match, someone has to reconcile them manually. Usually before an important meeting. Usually under time pressure.
The real costs:
- Hours of forensic work tracing individual transactions across systems
- Delayed decisions while waiting for "the real number"
- Lost credibility when different teams present different figures
- Audit risk when you can't explain the differences
- Compounding errors when discrepancies go unnoticed and grow
How Eru reconciles revenue
Understand what each system means
Eru's AI agent explores each data source to understand its specific definition of revenue. Not a generic "Stripe connector"—your actual implementation. It learns which fields represent MRR, ARR, one-time charges, and discounts. It maps the relationships between subscriptions, invoices, and payments.
Establish clear mappings
Once Eru understands each system, it creates explicit mappings. "MRR in Stripe equals the sum of active subscription amounts, minus scheduled cancellations, converted to USD at daily rates." These mappings are documented, versioned, and auditable.
Run continuous checks
Eru schedules Truth Checks that compare revenue across systems with defined tolerances. "Stripe MRR should match database MRR within 1%." When the check fails, you get an alert with the exact discrepancy and where to look.
Explain the differences
Not all discrepancies are errors. Some are timing differences. Some are definitional. Eru tracks known variances so you can distinguish expected differences from actual problems.
Example: Monthly revenue check
What you get
Single source of truth
One documented definition of revenue that everyone uses. No more "which spreadsheet has the real number?"
Early warning
Catch discrepancies when they're small. A 2% drift caught early is easier to fix than a 15% surprise at quarter-end.
Audit trail
Every check execution is logged with full evidence. When the auditor asks how you calculated revenue, you have receipts.
Time back
Stop spending Friday afternoons reconciling spreadsheets. Let Eru do the tedious comparison work.
Common reconciliation checks
- MRR parity: Stripe MRR matches database MRR within tolerance
- Customer count alignment: Active customers in billing equals active customers in product
- Churn consistency: Cancelled subscriptions in Stripe match churn records in database
- Expansion tracking: Upgrades in billing flow through to CRM expansion deals
- Payment reconciliation: Charges in Stripe match expected amounts from subscription terms
- Currency consistency: Multi-currency totals convert correctly across systems
Related
Stop reconciling manually
Eru runs continuous checks so discrepancies never surprise you.