Skip to content
Metricsjar

Article · Updated August 2026

Find failed payments before they become churn

Editorial cover: failed invoices moving through a recovery queue before churn

A failed renewal is not yet the same thing as a customer choosing to leave. It is a billing state with a recovery window, a customer experience and an eventual outcome.

Track the lifecycle from the first failed attempt through recovery or expiration. Then report voluntary churn and billing loss separately.

Failed-payment lifecycle from detection through retry, customer action and final outcome

Define the states

Use states that reflect your billing source rather than one generic “churned” flag.

StateMeaningOperating action
Payment failedA renewal invoice or store charge did not succeedRecord event and reason; start policy
Retry scheduledThe source will attempt collection againShow next attempt and avoid duplicate outreach
Customer action requiredNew payment method or authentication is neededSend a safe, direct recovery path
Grace periodAccess remains active for a defined intervalCommunicate status; monitor deadline
RecoveredPayment succeeded and subscription continuesClose incident; preserve recovery attribution
Expired for billingRecovery ended without paymentRevoke access according to policy; classify billing loss
Voluntary cancellationCustomer disabled renewal or asked to leaveKeep separate from billing failure

Stripe documents invoice.payment_failed for subscription failures and retry updates. RevenueCat sends a BILLING_ISSUE event and distinguishes billing-error cancellation and expiration in supported store flows. Implement against the source’s current event contract rather than these labels alone.

Capture a canonical billing incident

For each incident, store:

Make ingestion idempotent. Webhooks can be delivered more than once or out of order. Key events by the provider’s event identifier and derive current state from timestamps and source objects.

Separate initial-payment failure from renewal failure

An initial payment failure means the customer may never have become paid. A renewal failure affects an existing subscriber and can become involuntary churn.

Keep separate reporting:

Failure classDenominatorUseful measure
Initial purchaseAttempted new purchasesSuccessful payment conversion
Trial conversionTrials reaching billing pointTrial-to-paid collection rate
RenewalRenewals attemptedRenewal payment failure rate
RecoveryFailed renewal value/accountsRecovery rate and recovered value
Final billing lossFailed renewals not recoveredInvoluntary logo/MRR churn

Do not divide failed-payment value by ending MRR and call it churn without defining the cohort and outcome window.

Build the recovery queue

The queue should answer:

  1. Which active customers have an unresolved billing issue?
  2. What amount is exposed?
  3. Is the source retrying automatically?
  4. Does the customer need to act?
  5. When does grace or retry end?
  6. Who owns exceptional follow-up?

Sort by deadline and customer impact, not only amount. A small account about to lose access may need action sooner than a larger invoice with automated retries remaining.

AccountExposed MRRStateNext eventDeadlineOwner
Northstar$149Action requiredPayment update14 AugAutomated + support
Bramble$79Retry scheduledRetry 216 AugBilling system
Cedar$299Grace periodStore retry18 AugMonitor

These are fictional accounts and values.

Configure source recovery first

Stripe Billing supports Smart Retries or custom retry schedules, failed-payment email and recovery automation. Stripe notes that some failures are recoverable while hard declines require a new payment method. Use the current source configuration as the control plane rather than building a competing retry engine accidentally.

For app subscriptions, store billing and grace rules vary. RevenueCat documents BILLING_ISSUE, RENEWAL and EXPIRATION flows and whether entitlements remain active during grace. Configure App Store or Play policies, RevenueCat behavior and your entitlement code as one system.

Document:

Test the full lifecycle in supported sandbox environments. A webhook arriving is not proof that access and customer messaging behave correctly.

Communicate without creating a phishing pattern

A recovery message should explain the affected product/account, what happened, any access deadline and the trusted place to update payment.

Avoid requesting card data by reply. Send customers to the billing provider’s authenticated portal or your own authenticated billing settings. Make the destination domain recognizable.

Coordinate source email, product messaging and human outreach. Three different notices for one failure can damage trust.

Segment communication by state:

A fictional recovery cohort

During one mature weekly cohort:

OutcomeAccountsMRR
Renewal attempts240$18,600
Initially failed18$1,420
Recovered automatically9$710
Recovered after customer action4$360
Still open at cutoff2$120
Expired for billing3$230

For the 18 initially failed accounts:

This fictional example does not provide a benchmark. Its job is to demonstrate denominators and maturity.

Diagnose the unrecovered tail

Group final failures by actionable category supported by the source:

Then compare recovery by source, product, interval, currency, retry policy and customer segment. Use minimum sample sizes and show counts beside rates.

A low recovery rate can be a communication problem, a retry-policy problem, a customer-quality problem or a measurement bug. Inspect the incident records before choosing a fix.

Put failed payments in the founder report

Use a compact block:

Billing recoveryCurrent mature cohortPrior
Initially failed MRR$1,420$1,210
Recovered MRR$1,070$940
Final involuntary loss$230$190
Still open$120$80

Follow with one action: for example, inspect an increase in authentication-required failures after a checkout change.

Do not add unresolved failures to final churn and then add them again if they expire. Why MRR never matches Stripe or RevenueCat explains how lifecycle definitions create reporting differences.

Operational checks

Frequently asked questions

Is a cancelled subscription churned immediately?

Not necessarily. Cancellation can mean renewal is disabled while access remains active. Define churn at the actual loss point appropriate to your source and analysis.

Should access stop after the first failed payment?

That is a product and billing-policy decision. If you use grace, align entitlement behavior with the provider state and communicate the deadline.

Should every failed payment trigger human outreach?

No. Let configured recovery handle ordinary cases. Escalate based on customer impact, value, deadline and the need for customer action.

What is the most important metric?

Track both recovered value and final involuntary loss for mature cohorts. A single rate can hide account mix and open incidents.

Can MetricsJar retry payments?

No. The billing or subscription source owns retries. MetricsJar can help surface exposed, recovered and lost recurring value in a founder reporting workflow.

Sources

Keep reading