LostChurn Docs
Recovery

Recovery States

The full lifecycle of a payment recovery attempt, from initial failure to resolution.

Every failed payment in LostChurn progresses through a series of states that represent where it is in the recovery process. Understanding these states helps you track recoveries in the dashboard and configure your recovery workflow.

State Diagram

State Reference

New

The initial state assigned when a failed payment webhook is received. The system has recorded the failure but has not yet analyzed the decline code.

PropertyValue
DurationMilliseconds (transitions immediately)
Next statesClassifying
Dashboard indicatorGray dot

Classifying

The decline code is being mapped to a category and the recovery strategy is being determined. The ML model scores the retry probability and the orchestration engine decides the next step.

PropertyValue
DurationMilliseconds (transitions immediately)
Next statesSilent Retry Pending, Communication Pending, Terminal
Dashboard indicatorBlue dot

During classification, the system:

  1. Looks up the raw decline code in the decline_code_map table
  2. Determines the category (Soft Retry, Hard Customer, Terminal, Unknown)
  3. Runs the ML scoring model to get a retry probability
  4. Calls the orchestration decision tree to determine the next state

Silent Retry Pending

A silent retry has been scheduled but has not yet executed. The payment is waiting for the optimal retry time determined by the retry strategy.

PropertyValue
DurationHours to days (based on cooldown and ML timing)
Next statesSilent Retry In Progress
Dashboard indicatorYellow dot, with countdown timer

You can see all pending retries in the dashboard under Recovery > Pending Retries. Each entry shows the scheduled time and the ML confidence score.

Silent Retry In Progress

The retry is actively being submitted to the payment processor. This state is brief -- it lasts only as long as the API call takes to complete.

PropertyValue
DurationSeconds (API call latency)
Next statesRecovered, Silent Retry Pending (if retries remain), Communication Pending (if exhausted)
Dashboard indicatorYellow dot, pulsing

After the retry completes:

  • Success: State moves to Recovered and attribution is recorded
  • Failure with retries remaining: State moves back to Silent Retry Pending with the next retry scheduled
  • Failure with no retries remaining: State moves to Communication Pending to begin dunning
  • Failure with ML score below 0.10: State moves to Communication Pending (early escalation)

Communication Pending

The system has determined that customer communication is needed. The customer is about to be enrolled in a dunning campaign.

PropertyValue
DurationSeconds to minutes (campaign enrollment)
Next statesCommunication Active
Dashboard indicatorOrange dot

This state is reached when:

  • Silent retries have been exhausted
  • The decline category is Hard Customer or Unknown
  • The ML model recommends early escalation

Communication Active

Dunning messages are being sent to the customer through the configured campaign channels (email, SMS, push, WhatsApp). The campaign step sequence is in progress.

PropertyValue
DurationHours to days (depends on campaign step delays)
Next statesAwaiting Customer
Dashboard indicatorOrange dot, with campaign step indicator

During this state:

  • Campaign steps execute on their configured schedule
  • Each message delivery is tracked (sent, delivered, opened, clicked)
  • If the customer updates their payment method and a retry succeeds, state moves directly to Recovered

Awaiting Customer

All scheduled dunning messages have been sent. The system is waiting for the customer to update their payment method or take the requested action.

PropertyValue
DurationDays (until customer acts or timeout)
Next statesRecovered, Terminal
Dashboard indicatorRed dot

Payments that remain in the Awaiting Customer state past your configured timeout period will automatically transition to Terminal. Configure this timeout in your merchant settings to match your subscription grace period.

Recovered (Final)

The payment has been successfully collected. This is a terminal state -- no further action is taken.

PropertyValue
DurationFinal state
TriggerSuccessful retry or customer payment update
Dashboard indicatorGreen checkmark

When a payment is recovered, LostChurn records:

  • The recovery type (Silent Retry, Dunning Email, Dunning SMS, Self-Service, Backup Method)
  • The attribution confidence score (how confident we are this recovery is attributable to LostChurn)
  • The amount recovered in cents
  • The time to recovery from initial failure

Terminal (Final)

The payment cannot be recovered. This is a terminal state -- all recovery activity stops.

PropertyValue
DurationFinal state
TriggerTerminal decline, timeout, or manual marking
Dashboard indicatorRed X

A payment reaches Terminal when:

  • The decline category is Terminal (fraud, stolen card, closed account)
  • The customer does not respond within the configured timeout
  • A team member manually marks the recovery as terminal
  • All recovery strategies have been exhausted

The terminal reason is recorded for reporting (e.g., "Terminal decline: fraudulent" or "Silent retries exhausted, dunning timeout").

State History

Every state transition is recorded in the recovery state's history array. Each entry includes:

  • The previous state and new state
  • A timestamp of when the transition occurred
  • A reason explaining why the transition happened

This history is visible in the dashboard when you click into a specific recovery, providing a full audit trail of every decision the system made.

Tracking State in the Dashboard

The LostChurn dashboard provides several views for monitoring recovery states:

ViewWhat It Shows
Recovery OverviewAggregate counts by state, with trend charts
Active RecoveriesAll payments currently in non-terminal states
Pending RetriesPayments in Silent Retry Pending, with scheduled times
Awaiting CustomerPayments waiting for customer action, sorted by age
Recently RecoveredPayments recovered in the last 24/48/72 hours
TerminalPayments that could not be recovered, with reasons

You can filter any view by date range, decline category, recovery type, or amount.

Timeouts and Automatic Transitions

LostChurn enforces timeouts to prevent payments from sitting indefinitely in non-terminal states:

StateDefault TimeoutTransition
Silent Retry Pending30 daysTerminal (retries expired)
Communication Active14 daysAwaiting Customer
Awaiting Customer21 daysTerminal (customer unresponsive)

These timeouts are configurable in your merchant settings. Set them to match your subscription platform's grace period and dunning window.

Next Steps

On this page