Edge Subscriptions articles

How to Build a Subscription Dunning Flow

Anurag Chandra9 min read

A charge fails at three in the morning. Your app retries it three times over three days, all three fail, and the contract cancels itself on Friday. Nobody told the customer anything. That is not a dunning flow. It is a retry loop with a death sentence attached.

Subscription dunning emails are the half most stores never build. Retries ask the bank the same question again. The messages do the real work, because a card that has stopped working will never succeed no matter how politely you ask. The only thing that fixes it is the customer tapping four times on a phone.

This post is the build: the retry schedule, the four messages with copy written out, the one-tap card update, the handover point, and the numbers that prove it works.

What does a dunning flow have to accomplish?

Two tracks on one clock. The retry track is silent and mechanical, the message track visible and human. They share one exit condition: the moment a charge succeeds, both stop. Between them they have four jobs.

  • Recover the charge with nobody in your business touching it. A flow that needs an agent for every failure is a queue.
  • Keep the subscription, not just this month's money. Point every message at the relationship continuing, not an invoice being settled.
  • Stay quiet while the machine still has a chance. Some failures clear on a later attempt. Emailing that group creates tickets for a problem about to solve itself.
  • Exit cleanly. A subscriber who lapsed on a card is the easiest person you will win back, so leave the door open.

Deciding whether the failure is recoverable at all is a separate job, covered in failed subscription payments.

How do you design the retry schedule?

Three principles set the gaps.

  • Widen the intervals. Early attempts catch temporary problems, later ones catch a refilled balance. Clustering retries inside 48 hours re-asks a question the issuer already answered.
  • Cross a payday. Most balance failures are timing, not poverty. Attempts after weekly and monthly pay runs convert better than attempts before them.
  • Cap the total. Repeated attempts on a credential that cannot work push your authorisation failure rate up, and that rate is watched.
RetryDay after first failureWhy this gap
FirstDay 2Long enough for a short balance problem to clear, short enough that delivery is not visibly late
SecondDay 5Crosses a weekend for a midweek failure, lands after most weekly pay runs
ThirdDay 9Catches the refilled account, and lands after the customer has been asked twice
FourthDay 14Final mechanical attempt. Sits past the monthly pay date

Two overrides. A successful card update fires the charge on the spot and cancels the remaining retries. If the decline can never succeed, leave the retry track and jump to message two.

How many messages should the sequence contain, and on which days?

Four. Fewer leaves money behind. More reads as harassment about a payment the customer may think they already fixed.

MessageDayChannelJob
1Day 2, after retry one failsEmailTell them plainly. One link
2Day 5, after retry two failsEmail, plus SMS if consentedName the consequence and the date
3Day 9EmailTwo lines. Nothing but the link
4Day 14EmailClose it, leave the door open

Four rules hold the sequence together.

  • Never message before the first retry resolves. Day zero and day one are silent, which is why a good flow generates fewer tickets than a bad one.
  • One message per day across every channel. An email and an SMS landing a minute apart reads as a malfunction.
  • Suppress everything the instant a charge succeeds. The commonest complaint about a payment retry flow is a reminder arriving after the customer paid.
  • Send from a human name at a monitored address. People reply to these, and a reply is a buying signal.

What should each message actually say?

Short, specific, no blame, one link. Name the product, the amount and what happens next.

Message one, day two.

Subject: Your Coffee Club payment did not go through

Hi Sarah, your card was declined for the £34 Coffee Club renewal on 4 December. Usually that means the card was reissued or the balance was short.

Update it and we will charge straight away: [Update card]

Your December bag is held until then.

Message two, day five.

Subject: Your December Coffee Club bag is on hold

Hi Sarah, we have tried the card twice and it was declined both times. Your bag is packed but stays here until the £34 clears.

[Update card] takes about twenty seconds.

If you would rather pause or move the billing date, reply and we will sort it.

Message three, day nine.

Subject: One tap and your Coffee Club is back on

Sarah, your card still needs updating for the £34 December renewal.

[Update card]

Message four, day fourteen.

Subject: Last one from us about your Coffee Club subscription

Hi Sarah, we could not take the £34 payment, so we are pausing your subscription today rather than emailing you again.

Nothing is lost. Your grind, bag size and address are saved. [Restart whenever you like] and the next bag ships that Tuesday.

If something was not working, I would like to know. Reply and it comes to me.

How do you make updating a card take a single tap?

This is where recovery happens, and where most flows leak. Every screen between the email and the card field loses people who meant to pay you. Build it in this order.

  1. Generate a link scoped to one contract. A signed token identifies the subscription. No account lookup, no order number.
  2. Skip the login. A password set eleven months ago is a subscriber you have lost. The token authenticates.
  3. Land on the card field, not a portal home page. The input is first on screen, focused, with a numeric keypad on mobile.
  4. Put the context above the field. Product, amount, date of the failed charge. This is what stops the page reading as phishing.
  5. Offer the wallet first. Apple Pay and Google Pay turn a card update into a fingerprint.
  6. Charge on save. The moment the method is stored, run the outstanding charge. Do not wait for the next retry.
  7. Show the result on the same screen. "Paid. Your December bag ships tomorrow." No redirect, no confirmation email needed.
  8. Cancel remaining retries and messages atomically, in the same transaction as the successful charge, not a nightly job.
  9. Expire the link when the sequence ends, and make the expired state offer a restart rather than an error.

Verify before you turn it on. Put a declining card on a real contract, let the failure land, then open message one on a phone, logged out, in a private window. Confirm the page loads without a login, the wallet button appears, saving the card charges in seconds rather than at the next cron run, and that messages two, three and four never send.

It has gone wrong if the link asks for an email address before showing the card field, if the page renders your full account navigation, or if a reminder still sends after you paid.

When should the flow stop and hand over to a person?

Automation is right for most failures and wrong for the expensive ones. Set triggers that pull an account out of it.

  • Annual value above your threshold. If a year of a subscriber is worth more than an hour of someone's time, spend the hour.
  • Long tenure. Someone who has paid twelve times has earned a person, and the message should say so.
  • A reply to any message. Any reply exits immediately. Automated reminders sent to someone who wrote back turn a recoverable account into a complaint.
  • Second failure within ninety days. One failure is a card. Two is a pattern, and a pattern means the plan does not fit the customer's cash flow.

Give the human the account, not the ticket: tenure, plan, previous failures and delivery history in one place, with permission to move the billing date or pause. Retention work beyond billing is covered in reducing subscription churn.

How do you measure whether the flow is working?

Five numbers, tracked monthly against your own baseline.

MetricHow to calculate itWhat it tells you
Recovery rateFailed charges eventually paid, over all failed chargesThe headline
Recovery by attemptWhich retry or message produced the paymentWhere to add or remove a step
Days to recoveryMedian days from failure to cleared chargeWhether the schedule suits your billing cycle
Card update rate per messageUpdates attributed to each sendWhich copy earns its place
Tickets per hundred failuresSupport contacts caused by the sequenceThe cost side

Failure shows in the shape of the data, not in an error log. If every recovery is attributed to retries and none to messages, the card update link is broken or unreachable on mobile. If message one produces most updates and the rest almost none, the later copy is not being read and the sequence is too long. If tickets climb while recovery stays flat, you are messaging people who already paid.

Where does Edge Subscriptions fit in the dunning flow?

Edge Subscriptions handles subscribe and save, the customer portal and dunning. It is new, and I will not quote a rating or review count because it does not have one.

AppRating and reviewsEntry pricingWhere it wins
Recharge4.8 stars, 2,967 reviewsStarter $25/mo, no transaction fee for the first 50 subscribersComplex billing. Deepest tooling of the three
Appstle5.0 stars, 8,289 reviewsFree to $500/mo revenue, then $10/moCheapest route to a working sequence
Edge SubscriptionsNo reviews yetSee listingPortal and dunning as one product

Pricing and features checked on 22 August 2026. App Store listings change without notice, so verify on the listing before you commit to a plan.

With thousands of contracts and unusual billing logic, Recharge is safer and I would tell a client so. Under a few hundred subscribers, Appstle is hard to argue with on price. Edge Subscriptions suits the store that wants the card update built the way step five describes.

Whichever you pick, build the sequence first. The app matters less than four messages on days two, five, nine and fourteen with a link that takes one tap. If the plans are not set up yet, the Shopify subscriptions guide covers that groundwork.

Questions people ask next

How long should the whole dunning sequence run before I give up?

Fourteen days is a sensible outer edge for a monthly subscription, because the next billing date is close behind it and you do not want two sequences overlapping on one customer. For quarterly or annual plans you can stretch to twenty one days. Beyond that the messages stop being billing notices and start reading as marketing nobody asked for.

Should I offer a discount to recover a failed payment?

Not in the first three messages. A discount teaches the small group who notice that letting a charge fail is how you get money off, and it costs you margin on every subscriber who would have fixed the card anyway. Save any concession for the final message, and prefer a paused delivery or a moved billing date over a price cut.

Can I just change the plan price so the charge goes through?

No. Shopify documents that updates to a selling plan do not modify pre-existing subscription contracts, so editing the plan changes nothing for anyone already subscribed. The failing contract needs the payment method replaced or the contract itself amended. A plan edit only affects people who subscribe after you made it.

Source
Is it safe to write that a subscription expires in 24 hours to push people to act?

Only if it is true and you will actually enforce it. UK guidance on the DMCC Act lists falsely stating that something is available for a limited time to force an immediate decision as a banned practice. A real deadline you honour is fine and works better anyway, because the date matches what the customer sees happen.

Source
Should SMS be part of the sequence or is email enough?

Add SMS at the second message only, and only for subscribers who consented to it. It lands where the phone already is, which matters because updating a card is a phone job. Sending SMS at every step burns goodwill fast and costs money per send on a customer who has not paid you yet.

Anurag Chandra

Founder, Edgecoms

Anurag runs Edgecoms, a studio of Shopify apps. He spends most of his week inside merchant stores working out why a number is lower than it should be.

Connect on LinkedIn

Read this on your assistant

Opens with a summary request for this page already written.

Read next

Supercharge the traffic you already have

See why Shopify brands run Edge to raise order value, lift conversion, and keep customers coming back.