All posts
Field notes

Four silent revenue breaks between closed-won and cash

The Junction team · June 10, 2026 · 8 min read

Between the moment a deal is marked closed-won and the moment the cash actually lands, revenue passes through a handful of steps where the CRM and the billing system are supposed to agree — and sometimes don’t. When they diverge, no alarm goes off, because each system still looks right on its own. This is a field guide to the four breaks that do the most damage, what each one looks like in the data, and how to catch it read-only.

Industry estimates of how much subscription revenue quietly slips out through billing gaps, contract mismatches, and failed collections cluster around 1–5% of revenue, with failed payments and billing errors consistently named the largest contributors. The number is small enough to ignore month to month and large enough to matter every year. Almost all of it traces back to one of the four breaks below.

1–5%

of subscription revenue is commonly estimated to slip through the gaps between the deal and the cash. On $10M ARR that’s $100K–$500K a year — earned, often reported, and never collected.

MGI Research and industry analyses

01 · Active in your CRM, canceled in Stripe

The customer canceled in billing. The CRM never got the memo. The account stays active in the pipeline, its ARR keeps counting toward the forecast, and a CSM keeps working a renewal for a customer who’s already gone. In the data it’s unmistakable once you look across both systems: CRM status active, billing status canceled, with a cancellation date weeks in the past.

Why it happens: cancellations are a billing event, and billing has no reason — and no wiring — to reach back into the CRM and flip a stage. The longer nobody compares the two, the longer the forecast stays inflated. This is the purest expression of the seam, and it’s the one we opened the whole series with.

02 · Closed-won, never invoiced

A rep marks the deal closed-won. Everyone celebrates. The handoff to billing depends on a human step — a form, a ticket, a nudge to finance — and that step doesn’t happen. No subscription is created, no invoice is raised, and the revenue you booked and forecast simply never gets charged. The CRM shows a won deal; billing shows no matching customer at all.

  • What it looks like: a closed-won opportunity with no corresponding active subscription or invoice in billing.
  • Where it hides: net-new logos and mid-quarter deals, where the billing handoff is least standardized.
  • Why it’s costly: it’s 100% of the deal’s value gone, not a partial mismatch — and it’s invisible until someone asks why cash trailed bookings.
Worked example

Atlas Freight — closed-won in Salesforce, no invoice in Stripe

Atlas Freight signed a $36K/yr annual contract. The opportunity is closed-won in Salesforce, commission booked, the number in the quarter’s bookings. But the order form went to a rep’s inbox instead of the billing queue, and no subscription was ever created in Stripe.

Sixty days later the customer is happily using the product — for free — and the $36K is in the forecast but not the bank. Nobody is “wrong”: Salesforce shows a won deal, Stripe shows nothing, and only a view across both would ever have flagged that the two don’t add up.

03 · Upgrade signed, never billed

The subtlest of the four, because it’s a partial break. The customer expands — more seats, a higher tier, an add-on — and the CRM records the new, larger contract value. Billing, though, is still running the old subscription at the old price. You’re not losing the whole account; you’re losing the difference, quietly, every single billing cycle, for as long as it goes uncaught.

Expansion is where a lot of B2B SaaS growth lives, which makes this break especially expensive: the accounts drifting here are your best, growing customers, and the gap compounds monthly. In the data it shows up as CRM contract value greater than the active billing amount — a mismatch that a once-a-month manual check, working off fuzzy account names, is very likely to skip right over.

The upgrade you never billed doesn’t churn and doesn’t complain. It just pays you last quarter’s price for this quarter’s product, month after month, until someone compares the contract to the charge.

04 · The failed payment your CRM never hears about

A card declines. The subscription lapses. The customer didn’t choose to leave — a payment just failed — but the effect is the same: revenue stops. And because a failed charge is a billing event, the CRM never hears about it. The account stays active and green in the pipeline while the money has already stopped arriving. This is involuntary churn, and it hides inside the seam better than any other break.

20–40%

of subscription churn is involuntary — customers lost to failed, expired, or declined cards rather than a decision to leave, per ProfitWell’s widely-cited estimate. When the CRM still shows those accounts active, the loss is doubled: gone, and still counted.

ProfitWell (Paddle)

Failed payments are recoverable — but only inside a short window, and only if you know they happened. When the CRM masks the event by keeping the account active, you miss the window and you keep forecasting the revenue. We take this one apart in depth in the churn you never see.

Catching all four, read-only

The four breaks look different, but they share one property: each is invisible from inside a single system and obvious the instant you compare the two. That’s the whole opening. You don’t need to change how the CRM or billing works, and you don’t need write access to find any of them — you need a neutral view that reads both sides and reports only where they disagree.

  • Active-but-canceled: CRM status active + billing status canceled.
  • Closed-won-never-invoiced: won opportunity + no matching subscription or invoice.
  • Upgrade-never-billed: CRM contract value greater than the active billing amount.
  • Failed-payment-still-active: billing lapse or decline + CRM account still active.

That list is exactly what a Junction scan produces: connect the CRM and billing read-only, and get every account matching one of these patterns, ranked by what it’s costing you — a dollar figure, not a report you file away. If running that comparison by hand every month is eating your close, that’s the month-end reconciliation tax, and it’s the thing this replaces.

Sources

  1. How to Detect and Prevent Revenue That Leaks Between Quote and Cash Zuora
  2. Where SaaS Revenue Slips Out — causes and the 1–5% benchmark Zenskar
  3. How billing gaps cost SaaS 1–5% of ARR Lago
  4. Voluntary vs. Involuntary Churn: Failed Payments and Recovery (20–40% of churn) ProfitWell (Paddle)
  5. Database Decay research — the 22.5% annual B2B data-decay benchmark HubSpot (citing MarketingSherpa)
See it on your own data

Put a dollar figure on the gap between your CRM and billing.

One read-only scan finds every account where the two disagree and shows you what it’s costing you — in minutes, no write access.

Prefer to talk first? Talk to us about a design partnership →

Keep reading