The Billing PE team analyzed about 1,000 Salesforce cases from February 2026 and classified them into 9 categories. This analysis extends that work with six months of Jira ticket data (engineering escalations), BigQuery-grounded numbers for every claim, and a reconciliation between the two classification systems. Support cases (per their report) represent all customer contacts; Jira tickets represent the subset that escalated to engineering.

Three things we found

(1) Dunning cycle failures are stable at 7,000-9,000/month since Aug 2025 — down from 16,000+ in July. Face values are volatile (one large account can inject millions) but invoice count is the real signal, and it's holding. (2) Unpaid active subscriptions are surging — 960 new zero-payment subs in February alone, up from 100/mo in mid-2025. Entitlement drift is growing 12× faster than we're remediating it. (3) Their #1 category is invisible to engineering — domain registration payment failures (443 cases/mo per reference report) generate zero Jira tickets. Their #3 (container billing surprise, 340 cases/mo per reference report) isn't a system bug.

Every number below is sourced from BigQuery or the Jira digest pipeline. We distinguish between grounded claims (backed by a query) and asserted claims (taken from the reference report without independent verification).

StatusCountFace ValueSource Table
Paid59.77M$536.9Mstripe_invoices
Draft638Kstripe_invoices
Void235K$30.9B (pre-void)stripe_invoices
Uncollectible225,781$1.03B facestripe_invoices
Open14,788$6.2Mstripe_invoices

Invoice universe as of March 20, 2026. The $1.03B uncollectible face value is nominal and misleading. Of that, $957M is subscription_cycle (93% of face value, 75% of invoice count — the real dunning failures), $69.6M is subscription_create/update (payment loop failures where invoices were never valid debt), and $6.4M is manual. The create/update invoices must be analyzed separately — they represent failed activations and upgrades, not collection failures.

MetricCountSource
Total accounts45.8Mcloudflare_accounts
Flagged as bad debt73,602cloudflare_accounts
Inconsistent bad-debt state540inconsistent_bad_debt_accounts
Double-charged for bad debt1,277 ($34K extra)duplicated_bad_debt_payments
Unpaid active subscriptionsabout 3,000 cumulativeunpaid_active_subscriptions
Past-due subscriptions10,369stripe_subscriptions
Active subscriptions1,874,815stripe_subscriptions
Claim check: 92,895 CC accounts stuck in dunning

The reference report cites 92,895 CC accounts stuck in dunning. Our BQ shows 10,369 past_due subscriptions as of today. The discrepancy is likely definitional — they may count all accounts that have ever entered dunning, while we count subscriptions currently in past_due status. Their "18,870 stuck PayPal retry events" cites a table (pc_stuck_paypal) that does not exist in our BQ contexts. We cannot independently verify either figure.

Only subscription_cycle invoices — recurring renewals that failed collection and went uncollectible. This is the real dunning health metric. We exclude subscription_create and subscription_update invoices because those represent payment-loop failures (failed activations/upgrades), not collection failures on delivered services.

MonthCycle UCFace ValueAvg/InvoiceNote
Jul 202516,781$1.94M$116baseline (post-Jun spike)
Aug 20257,063$1.15M$163normalized
Sep 20257,797$1.56M$200
Oct 20257,178$6.85M$954outlier invoice(s)
Nov 20258,955$1.58M$177
Dec 20258,026$1.92M$239
Jan 20267,824$1.53M$196
Feb 20267,402$38.5M$5,200massive outlier(s)
Mar 2026 (partial)4,223$4.81M$1,139
Cycle invoice count is stable; face values are volatile

The cycle invoice count holds steady at 7,000-9,000/month since August 2025. That's the real signal. The face values swing wildly because a single large-account renewal can inject millions (Feb 2026: $38.5M on 7,402 invoices). Use capped/prorated values for dollar comparisons, not raw face value. The failed-void pipeline now shows zero daily failures — a concrete win.

Subscription_create and subscription_update invoices that went uncollectible. These are NOT collection failures — they are payment-loop failures where someone tried to activate or upgrade, payment failed, and the invoice was marked uncollectible. The subscription may still be active (entitlement drift). These must be tracked separately from dunning.

MonthCreateUpdateCombined ValueNote
Jul 2025420546$279K
Aug 2025243234$56K
Sep 2025314284$113K
Oct 2025195197$110K
Nov 2025517624$710Kupdate spike
Dec 2025363708$5.42Mupdate outlier ($5.06M)
Jan 2026719734$588Kcreate volume growing
Feb 2026386676$441K
Mar 2026 (partial)3597$45K
Create volume correlates with unpaid active subscriptions

The subscription_create uncollectibles (719 in Jan, 386 in Feb) track the unpaid-active-subscription surge. These are the same population — someone activated a subscription, payment failed, the invoice went uncollectible, but the subscription stayed active. The Payment Loop workstream (Deferred Collection) is the fix.

Subscriptions active in Stripe that have never had a successful payment. The entitlement-drift population — services provisioned with no revenue collected.

MonthNew Unpaid SubsTrend
Apr 202579baseline
May 202573
Jun 202561
Jul 2025118↑ 1.5×
Aug 2025161↑ 2×
Sep 2025151
Oct 2025190↑ 2.4×
Nov 2025235↑ 3×
Dec 2025274↑ 3.5×
Jan 2026 ⚠661⚠ 8.4× baseline
Feb 2026 ⚠960⚠ 12× baseline
Entitlement drift is accelerating

From 80/mo in mid-2025 to 960 in February 2026 — a 12× increase. These are real revenue leakage: services provisioned with no payment collected. The Payment Loop workstream (Deferred Collection) targets this root cause by requiring payment confirmation before entitlement grant. Without it, the backlog grows 900/month.

Drift measures disagreements between what Cloudflare's internal system (OPE) believes a customer has and what Stripe actually has. Each drifted item is a potential overcharge, undercharge, or phantom subscription.

9,108 drifted accounts
Daily total, Mar 19 2026

Total accounts with at least one subscription item disagreement. Fluctuates 8,500–9,200 daily, with billing-cycle spikes to 12,000 on the 5th and 15th.

21,794 drifted items
Stripe ↔ OPE mismatches

10,678 canceled usage items still in Stripe. 4,201 canceled fixed items. 2,341 missing usage items. 1,455 extra items. 1,482 quantity mismatches.

742 bad debt drift
Conflicting debt signals

Accounts where the bad-debt flag in Cloudflare's database disagrees with the Stripe customer metadata. 541 have fully inconsistent flags across all stores.

The reference report uses 9 categories from manual classification of about 1,000 support cases. We use 11 categories from automated classification of 1,586 Jira tickets over 6 months (741 signal patterns, 96.3% rate). The systems measure different populations — support cases (per their report) are all customer contacts; Jira tickets are the subset that escalated to engineering. Both are valid. Neither is complete alone.

Their Category (Reported)MoOur Category (Jira Tickets)6moNotes
Domain reg payment failure443address-checkout11INVISIBLE TO ENG. Registrar has its own payment flow. 443 reported cases → 0 Jira tickets.
Container/D1 billing surprise340refund99NOT A SYSTEM BUG per their own analysis. Product/UX gap — no caps, no alerts.
Paid but still Free319entitlement-drift114Partial overlap. Their count includes cases resolved without Jira escalation.
Generic payment failure98payment-block295Our count higher — we capture all payment failures, not just 'generic'.
No Pay button + phantom balance86bad-debt138Strong overlap. Maps to 73,602 flagged accounts, 540 inconsistent.
Double charges76duplicate-charge94Direct mapping. 1,277 confirmed double-charged in BQ.
R2/Workers activation broken63provisioning50Partial overlap. We split payment failures into payment-block.
Can't cancel / ghost charges62subscription-lifecycle410Our largest category. 68/mo Jira tickets matches their 62/mo reported cases.
Annual/monthly double billing21sub-lifecycle + dup-chargesplitWe split: lifecycle failure + financial impact.
invoice-remediation248MISSING FROM THEIR TAXONOMY. Voids, metadata corruption, stale states.
startup-ops58MISSING FROM THEIR TAXONOMY. Account setup, Stripe customer creation.

Our Jira digest pipeline classifies every CUSTESC ticket (engineering escalation) using 741 signal patterns across 11 categories. Over 27 weeks, all categories show stable trends — no category is spiking or declining significantly.

Category6mo TotalWeeklyTrendTop Signals
subscription-lifecycle41015stableCan't cancel, ghost charges, stuck Processing
payment-block29511stableCard declined, PayPal fail, 3DS, preauth
invoice-remediation2489stableVoided invoices, metadata errors, stale states
bad-debt1385stablePhantom balance, blocked accounts, flag drift
entitlement-drift1144stablePaid but Free, missing features, plan mismatch
refund994stableUsage shock, duplicate charge refund requests
duplicate-charge943stableDouble sub, retry idempotency, zone re-add
startup-ops582stableAccount creation, Stripe customer, PM link
provisioning502stableR2 activation, Workers paid, preauth failures
product-enablement14<1stableFeature access, plan feature mismatch
address-checkout11<1stableAvalara/address validation, registrar checkout
Invoice remediation: 248 Jira tickets, 0 in reference report
Invisible to support classification

Voided-but-not-voided invoices, metadata corruption, stale uncollectible states. BQ shows 1,356 invoices with missing bad_debt metadata and 42,492 with amount overrides. Customers experience this as "my invoice is wrong" but support classifies it into whatever they complain about first.

Registrar: 443 reported cases, 11 Jira tickets
Invisible to engineering

The registrar payment flow is entirely outside subscriptions-api. Support resolves domain payment failures without engineering escalation. The single largest reported category generates almost no Jira signal.

Container billing: 340 reported cases, not a system bug
Product gap, not billing bug

The reference report counts this as a "system issue" but correctly notes it's a UX/product gap — no billing caps, no usage alerts, no sleep-after-idle. This belongs in the product roadmap, not the billing bug backlog.

The reference report makes several specific claims with BigQuery numbers. Here's our independent verification.

ClaimTheir NumberOur NumberVerdict
Accounts flagged bad debt73,602✅ Grounded
Bad-debt cleanup accounts13,103⚠ Unverifiable (table not in our BQ)
CC stuck in dunning92,89510,369 past_due⚠ Definitional gap
Stuck PayPal retry events18,870⚠ Unverifiable (no table)
PayPal bad debt 10× increase$183K→$1.85M⚠ Unverifiable
Stale uncollectible invoices195,745 ($980M)154,175 ($973.5M)✅ Confirmed (close match)
Double-charged accounts1,277 ($34K extra)✅ Grounded
Uncollectible rate (current)0.72% (Mar 2026, all reasons)✅ Grounded (includes create/update)
Failed void pipeline0/day (resolved)✅ Grounded
Inconsistent bad-debt state540 accounts✅ Grounded

Based on the combined support case and Jira analysis, grounded in BQ data, ranked by impact.

1. Ship Unified Checkout for Registrar
Addresses 443 cases/mo (reported)

The single largest reported category with zero Jira visibility. Registrar has its own payment flows — no 3DS, no platform retry logic. Migrating to Unified Checkout eliminates the #1 reported case driver. Already planned. Don't slip.

2. Fix the entitlement-drift pipeline
Addresses 960 unpaid active subs in Feb

Growing 12× since mid-2025. The Payment Loop workstream (Deferred Collection) requires payment confirmation before entitlement grant. Until this ships, the backlog grows 900/month and the "paid but still Free" population widens.

3. Bad-debt flag cleanup + auto-restore
Addresses 73,602 flagged + 540 inconsistent

16,097 accounts have orphaned bad-debt flags. Auto-restore logic (SHIP-12738) would clear bad-debt after payment, preventing the "paid but still Free" class. Combined with drift remediation, this closes the phantom-balance problem.

4. Usage billing caps + alerts
Addresses 340 cases/mo (reported)

Not an engineering fix. Default sleep-after-idle for containers, spend threshold alerts for D1, hard billing caps for PAYGO. Highest-impact support case reduction opportunity per the reference report.

5. Continue drift remediation
Addresses 9,108 drifted accounts daily

Baseline is stable at 8,500–9,200. Billing-cycle spikes to 12,000 suggest drift is created during renewal processing. Focus on preventing new drift at the source rather than remediating after.