Blog

Consolidating MRR Across Merchant-of-Record Platforms (Polar, Paddle, Lemon Squeezy)

· Chanbo

A few years ago, "what's our MRR?" had one answer in one place. Now a growing number of founders sell through multiple merchant-of-record (MoR) platformsPolar, Paddle, Lemon Squeezy — and the question suddenly has two or three partial answers, none of which is the whole truth.

This is the consolidation problem. Here's why it happens, why it's harder than it looks, and how to solve it cleanly.

Why founders end up on multiple MoRs

Each platform has a sweet spot, so spreading out is rational:

  • Lemon Squeezy is a fast, friendly place to start selling — popular with solo creators and indie hackers.
  • Polar is developer-first, with strong APIs and room to scale.
  • Paddle brings deeper subscription and tax tooling that tends to matter once you're past ~$10K MRR.

So you start on one, add another for a specific product or region, and now your revenue is genuinely split. Each platform handles its own sales, tax, and payouts as a merchant of record — which is great operationally, but it means your numbers are siloed by design.

Why incumbents don't solve it

The established analytics tools — Baremetrics, ChartMogul — were built around Stripe. Their integration lists reflect that: Stripe, Braintree, Recurly, Chargebee, the App Stores, and (for some) Paddle. Polar and Lemon Squeezy are barely covered, if at all. So the moment you adopt a newer MoR, the Stripe-era tools can't even see half your revenue, let alone consolidate it.

That leaves most multi-MoR founders doing it by hand: open each dashboard, copy each MRR, add them in a spreadsheet, repeat monthly. It's tedious and — as we'll see — often wrong.

Why naive consolidation is wrong

Adding two or three MRR numbers seems trivial. It isn't, because the inputs aren't consistent:

  • Different movement definitions. Each platform classifies new/expansion/contraction/churn its own way. Summing totals hides what actually changed.
  • Annual normalization. If annual plans aren't all divided by 12 the same way, every yearly sale distorts the combined figure.
  • Currency and rounding. Mixed currencies and per-platform rounding make the sum drift.
  • Snapshot timing. Platforms snapshot on different schedules; "today's MRR" isn't the same instant everywhere.
  • Churn timing. If one platform counts a scheduled cancellation as churn and another doesn't, your blended churn is meaningless.

The fix isn't better spreadsheet hygiene. It's a different architecture.

The clean architecture: normalize first, then sum

Consolidation works when you translate every event from every platform into one internal format before doing any math — a ports-and-adapters approach:

  1. Adapters read each platform (Polar, Paddle, Lemon Squeezy) and emit a normalized event: a status plus a monthly-normalized amount in a single currency. No platform-specific quirks leak past this boundary.
  2. One classifier turns state changes into signed movements — new, expansion, contraction, churn, reactivation — using identical rules everywhere.
  3. One append-only MRR ledger holds every signed delta. Your MRR on any date is the sum of deltas up to that date; movement for a period is the deltas grouped by type.

Two invariants tell you it's correct:

  • Combined MRR = the sum of each platform's MRR.
  • Each platform's trend line sums to the combined trend line.

When those hold, the consolidated number isn't a guess — it's reconciled.

What good consolidation gives you

  • One MRR number for the whole business, with month-over-month change.
  • A per-platform breakdown (stacked area over time) so you can see who's growing and who's leaking.
  • A combined movement waterfall across all platforms at once.
  • Blended metrics — churn, ARPU, net revenue retention — computed over your entire customer base, not one silo.
  • Per-platform accuracy checks so each connection is validated against its own reported figure.

How Throughlines does it

Throughlines is built for this exact problem. It's a read-only revenue dashboard for merchant-of-record platforms, architected for N platforms from day one.

  • Connect each platform read-only (paste a token/key per platform). Throughlines backfills history and stays live via webhooks, and never writes to your accounts.
  • Consolidated MRR hero across Polar, Paddle, and Lemon Squeezy, with the delta vs. last month.
  • Per-platform stacked area + combined movement waterfall, reconciled so the parts always sum to the whole.
  • Canceled ≠ churned, enforced identically across every platform, so blended churn is honest.
  • Accuracy gate per connection. Each platform's computed MRR is cross-checked against the platform's own number.
  • Add a platform, not a migration. A fourth MoR is a new connection, not a re-tool.

The takeaway

If your revenue is spread across Polar, Paddle, and Lemon Squeezy, your true MRR isn't in any one dashboard — and you can't get it by adding numbers in a spreadsheet, because the inputs aren't consistent. Consolidation done right means normalizing every platform into one ledger so the combined number reconciles. That single, trustworthy number is the whole reason merchant-of-record-native analytics exist.

Consolidate your MRR across every platform →


Related reading: Paddle + Polar revenue in one dashboard · Why "canceled" isn't "churned" · The best Baremetrics alternative for Polar