DunningKit

Stripe is letting 5–15% of your MRR walk out the door every month.

Stripe's Smart Retries recover about 30–50% of failed payments. The other half — expired cards, soft declines, customer-side fixable errors — quietly disappears unless you chase them. DunningKit is an open-source toolkit + paid hosted recovery service that picks up where Smart Retries leaves off.

Get the v0.1 release + the dunning playbook for B2B SaaS:

No spam. We'll send exactly two things: launch announcement, and a one-pager on retry timing for B2B annual plans (where the recovery game is hardest).

What's actually leaving the door

A typical SaaS subscription processed through Stripe sees somewhere between 5% and 15% of monthly attempted charges fail. The split, roughly:

Stripe's Smart Retries handles a lot of the easy wins automatically — it picks decent retry timing for insufficient_funds and a few common decline codes. What it doesn't do well: customer-side flows (you have to email the customer to update their card), retry timing for the long-tail decline codes, and visibility into which specific charges are at risk vs already lost.

What DunningKit does

30-second tour

$ pip install dunningkit
$ dunningkit analyze stripe-failed-charges.csv

Period: 2026-04-01 to 2026-04-30
Failed charges: 142 totalling $14,820

Recoverable estimate (based on decline-code recovery rates):
  insufficient_funds        38 charges  $3,940   ~70% likely recoverable
  expired_card              31 charges  $3,210   ~85% with card-update flow
  do_not_honor              22 charges  $2,290   ~40% likely recoverable
  generic_decline           18 charges  $1,870   ~30% likely recoverable
  card_velocity_exceeded     9 charges  $940     ~50% if delayed 24h
  other                     24 charges  $2,470   varies

Total recoverable potential: ~$8,400 (57%)
You may already be losing this if your dunning relies on Stripe defaults.

Run with --suggest-sequences to get retry-timing + email templates.

Pricing

Free

$0
  • CLI + analysis on CSV exports
  • Decline-code recovery-rate library
  • Email/SMS template generator
  • Community support

Starter

$99/mo
  • Live Stripe API connection
  • Up to $50k MRR processed
  • Automated retry sequences
  • Recovery dashboard

Team

$249/mo
  • Up to $500k MRR processed
  • SMS + Slack escalation
  • Per-customer retry policies
  • Cohort recovery reports

Business

$599/mo
  • Unlimited MRR processed
  • Multi-account / multi-currency
  • Custom retry-rule scripting
  • SSO + audit log

Need this before the hosted dashboard ships? Early-access program is open: free CLI now plus a manual recovery-audit on your last 90 days of Stripe data, until the live integration lands. Email dunningkit@quantcalc.app with your Stripe CSV export and we'll send a detailed report within 48 hours.

Background reading

Questions

How is this different from Churn Buster / Stunning / Baremetrics Recovery?

Those are good, established players in the SMB tier. DunningKit's angle is the open-source CLI + transparent retry logic — engineers who'd otherwise build it themselves get a free starting point. The paid hosted tier is competitive on price ($99 vs $99–129) but skips the percent-of-recovered fee that's standard in the category.

Doesn't Stripe Smart Retries already handle this?

It handles the easy 30–50%. The other half is what the paid recovery tools (and DunningKit) exist for. Smart Retries times retries reasonably for insufficient_funds and a few common codes; it doesn't do customer-facing card-update emails, doesn't handle the long-tail decline codes well, and gives you minimal visibility into what's still leaking.

Is the CLI open source?

Yes. Apache 2.0 on GitHub. The hosted dashboard, live Stripe integration, and team workflow features are the paid parts.

What if I just want to know how much I'm losing?

Run the free CLI on a CSV export of your failed charges from Stripe Dashboard. Takes 30 seconds.

When does this ship?

v0.0.1 (CSV analysis + recovery-rate library) is on PyPI now. The live Stripe API integration and hosted dashboard ship in summer 2026.