Dunning & Account Recovery
Intelligently retry failed charges, downgrade accounts, and handle disputes automatically, minimizing churn
Stripe integration that manages the lifecycle of failed charges—retry, downgrade to free/lower tier, or cancel—based on customer value and failure pattern.
When a Stripe subscription payment fails, Nora catches the event and starts a recovery sequence. It reads the customer's lifetime value (LTV) and failure reason. It retries the payment three times over ten days using a backoff schedule. If the charge still fails, Nora checks the LTV. For high-value accounts, it sends an email offering a downgrade to a lower tier instead of canceling. For low-value accounts, it cancels the subscription after the third failure.
The finance manager no longer tracks declined cards or manually adjusts subscription states in Stripe. They review a weekly log of recovered revenue, downgraded accounts, and churned users in their chat channel. They step in only for special cases, such as when a high-value customer disputes a charge or requests a custom payment plan.
Runs real-time as payments fail, on retry schedule using Stripe, run by your Finance Manager.
How it works
- Detect failed payment — Nora monitors Stripe for failed payment events. It extracts the customer ID, subscription details, and failure reason. It then calculates the customer lifetime value to determine the appropriate recovery path.
- Execute retry schedule — Over the next ten days, Nora triggers three payment retries at three, five, and seven-day intervals. It logs each attempt and outcome on the customer record in Stripe.
- Evaluate customer value — If the final retry fails, Nora checks the LTV threshold. Low-value accounts are marked for cancellation. Medium-value accounts are paused to allow the customer time to update their billing details.
- Propose account downgrade — For high-value customers, Nora drafts and sends an email explaining the payment failure. It includes a link to a Stripe Checkout Session for a lower-priced subscription tier to keep the account active.
- Apply subscription changes — If the customer accepts the downgrade, Nora updates the subscription in Stripe to the new price. If they ignore it, Nora cancels the subscription after a set grace period.
- Handle explicit cancellations — If a customer explicitly replies to cancel or disputes the charge, Nora immediately halts the dunning process. It cancels the subscription and alerts the finance manager in their chat channel.
What this replaces
A finance or support team member exports a list of failed Stripe payments daily. They open each customer record, check billing history, and manually trigger a retry. If it fails again, they email the customer. After a week of no response, they log back into Stripe, locate the subscription, and manually click cancel or change the pricing plan.
- Exporting daily failed payment reports from Stripe
- Reviewing customer billing history to determine account value
- Manually clicking retry on failed invoices
- Drafting and sending individual warning emails
- Manually canceling or downgrading subscriptions in the dashboard
Rough estimate rather than a measured figure: about 45 minutes a day, on the basis of 15 failed payments requiring 3 minutes each to review, retry, or email.
What it needs to run
Accounts and plans
- Stripe account with active subscriptions
- An email provider or communication channel for sending downgrade offers
Access it asks for
- Stripe Secret Key (sk_live_...) to authenticate API requests
- Read access to customers, subscriptions, and invoices to assess LTV and payment status
- Write access to subscriptions, invoices, and PaymentIntents to process retries and downgrades
What Nora reads
- Customer lifetime value (LTV) and billing history
- Subscription status and current pricing tier
- Failed invoice details and decline codes
What Nora writes
- Payment retries on existing invoices
- Subscription cancellations or pauses
- Subscription tier downgrades via new pricing plans
- Customer communication logs
When it goes wrong
- Stripe API rate limit exceeded during a large batch of payment retries. Nora pauses the operation, applies an exponential backoff, and attempts the retries again after the rate limit window resets. It logs the delay in the execution history.
- The customer's card issues a hard decline indicating a stolen or lost card. Nora skips the remaining retry schedule and immediately pauses the subscription. It sends a notification to the customer asking for a new payment method and waits for an update.
- The customer replies to the downgrade email with a custom negotiation request. Nora does not parse custom negotiations. It halts the automated dunning for that account, does nothing further in Stripe, and forwards the email to the finance manager for review.
- The Stripe API key expires or is revoked by an administrator. Nora stops all dunning activities immediately. It sends an alert to the designated admin channel stating that the Stripe connection requires re-authentication before it can resume.
Who this is for
Worth it if
- SaaS or subscription businesses processing 500+ recurring charges a month.
- Finance operators spending more than an hour a week manually chasing declined cards.
- Companies with multiple pricing tiers where downgrading is a viable alternative to churn.
Not worth it if
- Businesses with very low transaction volumes where manual review of every failed payment is preferred.
- Enterprise sales models where billing is handled via manual invoicing and wire transfers rather than automated card charges.
- Companies that only offer a single product tier, making downgrade paths impossible.
A worked example
A B2B software company processes 2,000 monthly subscriptions. They tell Nora to retry payments three times, pause accounts under $1,000 LTV, and offer a $49/mo downgrade to accounts over $1,000 LTV that fail the final retry.
Payment for invoice in_1N4b failed (insufficient_funds). Customer cus_8XyZ has an LTV of $4,200. Action: Initiated 10-day retry schedule. - Retry 1 (Day 3): Failed. - Retry 2 (Day 5): Failed. - Retry 3 (Day 7): Failed. Action: Sent downgrade proposal email to billing@acmecorp.com offering the $49/mo Basic Tier. Result: Customer accepted via Checkout Session cs_live_a1b2. Subscription sub_9A2b updated to new price. Recovered account.
Frequently asked questions
How do I change the LTV thresholds or retry schedule?
You tell Nora in your chat channel what you want changed. If you want to increase the high-value threshold from $500 to $1,000, or change the retry intervals from three days to two, you type that request in plain English. Nora updates its operating instructions immediately.
What happens if a customer disputes a charge while in the dunning process?
Nora reads the dispute event from Stripe. It immediately halts any further payment retries or downgrade emails for that customer, pauses the subscription, and notifies you in your channel so you can submit evidence or accept the dispute manually.
Will Nora email customers who have already told us they want to cancel?
No. If a customer has an explicit cancellation request logged, or their subscription is already marked to cancel at the end of the billing period, Nora skips the dunning process entirely and lets the subscription lapse.
Does Nora process the actual credit card data?
No. Nora only interacts with the Stripe API using customer and payment intent IDs. It triggers Stripe to retry the stored payment method. Nora never sees, reads, or stores the raw credit card numbers.
Connects to
Related automations
- Auto-Reconcile Bank Transactions Daily — Close your books in hours instead of days with automatic bank reconciliation.
- Automated Mileage Reimbursement Processing — Process mileage expenses in minutes instead of managing spreadsheets.
- Auto-Categorize Expenses by Pattern Learning — Stop manually categorizing every receipt—Nora learns your patterns.
- Automatic 1099 Contractor Tracking — Never miss a 1099 filing deadline with automated tracking.
- Failed Payment Recovery Campaign — Automatically retry failed subscription payments and notify customers before an expired card becomes a cancellation
- Invoice & Charge Sync to Accounting — Automatically log Stripe invoices and charges to your accounting system (Odoo, QuickBooks) in real-time
- Subscription Renewal & Expiry Alerts — Alert high-value customers before their subscription renews, and notify you of upcoming expirations to follow up
- Monthly Revenue & MRR Report — Get a snapshot of MRR, churn, expansion revenue, and cohort health every month, with trends and forecasts