In this article
In this article
Dunning Management

Shopify Dunning: How Failed Payment Recovery Works by Subscription App

Shopify dunning is the retry and messaging process that recovers a failed subscription renewal on a Shopify store. Shopify processes the charge, but the subscription app that owns the subscription decides when to retry, what to tell the customer, and what happens after the last attempt. So your dunning depends on which of three setups bills your customers: a third party subscription app such as Recharge, Loop, or Skio; Shopify Subscriptions, Shopify's own app; or a custom build on the Shopify Subscriptions API.

How subscription billing works on Shopify

In all three setups, a selling plan defines the offer, such as delivery every 30 days at 10% off. When a customer buys it, Shopify creates a subscription contract and shares it with the app that owns it. At each renewal, that app creates a billing attempt on the contract, Shopify charges the stored payment method, and a successful attempt creates an order.

Shopify's developer docs make the owning app responsible for scheduling payments and handling billing failures. Shopify sends a subscription_billing_attempts/failure webhook (or /challenged when the bank asks for 3D Secure), and the attempt carries an error code such as INSUFFICIENT_FUNDS, EXPIRED_CARD, CARD_DECLINED, or DO_NOT_HONOR.

Card updates usually run through Shopify. Payment methods sit in Shopify's vault, and Shopify can email a customer a secure link to update a specific stored card. Many subscription apps use that email, or the customer's account page, as their card update step.

Setup 1: Third party subscription apps

Most subscription brands on Shopify bill through an app such as Recharge, Loop, Skio, Stay.ai, Smartrr, Seal, Ordergroove, Awtomic, or Rivo. Each owns its contracts and runs its own dunning. Most let you set the number of retries and the spacing between them, choose what happens after the last one (cancel, pause, skip, or keep the subscription active), and send a failed payment email with a way to update the card.

Setup 2: Shopify Subscriptions

Shopify Subscriptions is Shopify's own subscription app, managed from the Shopify admin. The Shopify Help Center documents these dunning settings as of September 2026.

  • Retries: you set the number of retry attempts and the days between them, separately for payment failures and for inventory failures.
  • Final outcome: you choose to skip, pause, or cancel the subscription when all retries fail, and Shopify notifies the customer in each case.
  • Notifications: subscription emails to customers and staff, on by default.
  • Card updates: from a subscription contract in the admin, you can email the customer a link to update their card. Customers can also change the payment method in their account under Subscriptions.
  • Upcoming order reminder: an email 3 days before each recurring charge.

The Help Center doesn't describe retry timing by decline type, SMS, or testing.

Setup 3: A custom build on the Shopify Subscriptions API

Some enterprise brands, usually on Shopify Plus, build their own subscription app on the Subscriptions API. Shopify still handles checkout, the payment vault, and order creation. Your app owns the contracts and everything that happens when a renewal fails.

Your app creates each billing attempt with subscriptionBillingAttemptCreate, passing an idempotency key so a retried request can't charge the customer twice. Shopify reports the outcome through the success, failure, and challenged webhooks.

  1. Event handling. Listeners for billing attempt failures, successes, and 3D Secure challenges, plus contract cancels and pauses.
  2. Decline handling. A map from Shopify's error codes to what to do next. An expired card or incorrect number needs a new card, while insufficient funds can pass on a later retry. Card networks cap the number of reattempts before penalties are incurred.
  3. A retry scheduler. Jobs that create new billing attempts at the right intervals, each with its own idempotency key.
  4. Customer messages. Email and SMS sequences with a card update link, either Shopify's update email (customerPaymentMethodSendUpdateEmail) or your own portal.
  5. Charge timing after a card update. Physical goods subscriptions often delay the charge so the customer can adjust the order first, sometimes until the next scheduled attempt. Either way, save the new card to the correct subscription.
  6. An end state. What the contract does when the campaign ends: cancel, pause, or skip.
  7. Reporting. Tracking every failed payment to one of four outcomes and judging each cohort only after its campaigns close.
  8. Maintenance. Updates as Shopify versions its API and gateways and issuers change their behavior.

Dunning spans engineering, finance, and retention, so a custom system often ships once and then goes without an owner who tunes retry spacing, copy, and campaign length.

What native dunning covers and where it stops

Setup Who times retries Customer messages Card update Documented limits
Third party app The app, on a schedule you configure (some add smart timing) App emails, sometimes SMS or Klaviyo flows App portal or Shopify's update email Varies by app
Shopify Subscriptions Shopify Subscriptions, by count and spacing Shopify subscription emails Admin email link or customer account No decline-based timing, SMS, or testing described
Custom API build Your code Whatever you build Shopify's update email or your portal Everything is yours to build and maintain

Where the gaps tend to show up

  • One schedule for many failures. An expired card, insufficient funds, and a do-not-retry block need different handling, and a fixed ladder treats them the same.
  • Retries and messages set up in different places. When retries live in the app and failed payment emails live in Klaviyo, someone has to keep the two in line by hand.
  • Little room to test. Few built-in tools support A/B tests on copy, timing, or campaign length, or segments by plan, tenure, or decline type.
  • Reports that can't separate the campaign from the baseline. Often around 15% of failed payments resolve before anyone contacts the customer. A dashboard that counts those with everything else can't show what the campaign added.

For many stores, native dunning is enough. But as a company scales, the gap between what's recoverable, and what's recovered, will grow. Built-in dunning vs Churn Buster compares the benefits platform by platform.

How Churn Buster works on Shopify

Churn Buster is a subscription retention software company that recovers failed payments and prevents cancellations for subscription eCommerce and SaaS businesses. It sells two products, Dunning (failed payment recovery) and Cancel Flows (cancellation prevention), on their own or together.

On third party apps. Churn Buster connects to Recharge, Loop, Skio, Stay.ai, Smartrr, Ordergroove, Seal, Awtomic, and Rivo. Where the app sends its own failed payment emails, setup turns them off so customers get one sequence.

On a custom Subscriptions API build. Churn Buster connects through a Shopify custom app with Subscriptions API access, one per store, so brands with separate US, UK, and EU stores install one in each. Your system sends failed payment, successful payment, and cancellation events to Churn Buster's API, and Churn Buster runs the recovery campaigns.

Cancel Flows adds skips, pauses, discounts, plan swaps, and exit surveys to the cancel path, with a one-click cancel option that keeps save offers visible. Better flows surface higher quality cancel feedback and more chances to save the customer.

Measurement. Rolling Analysis tracks four outcomes for every failed payment (card update, successful retry, cancellation, passive churn), including the ones that pull the rate down, and only counts a cohort once every campaign in it has closed. How Rolling Analysis works.

Pricing. Starts at $269/mo for Dunning or Cancel Flows and $430/mo for both, which covers up to $150k MRR. Above that, a flat fee set by MRR tier, month to month, with no share of recovered revenue. See pricing.

Setup guides. Recharge, Loop, Skio, Seal, Rivo, Smartrr, and Cancel Flows.

FAQs

What is Shopify dunning?

The process that recovers a failed subscription renewal on a Shopify store by retrying the charge, asking the customer to update their card, and deciding what happens if the payment never clears.

Does Shopify retry failed subscription payments automatically?

Shopify processes each charge, and the subscription app decides when to retry. The Shopify Subscriptions app retries on the count and spacing you set. Third party apps such as Recharge and Skio run their own schedules. On a custom Subscriptions API build, your code creates every retry.

Which Shopify subscription apps does Churn Buster work with?

Recharge, Loop, Skio, Stay.ai, Smartrr, Ordergroove, Seal, Awtomic, and Rivo, plus a Shopify custom app for brands on their own Subscriptions API build. See Dunning for the full platform list.

How do customers update their card on a Shopify subscription?

Usually through Shopify. Most apps send Shopify's secure update email or a link to the customer's account or subscription portal.

Should the customer be charged right after updating the card?

Digital subscriptions usually charge right away. Physical goods subscriptions often wait, sometimes until the next scheduled attempt, so the customer can adjust the order first. In both cases, save the new card to the subscription.

What's the best dunning software for Shopify?

Best dunning management software compares the options.


Got a churn problem worth solving? Book a call with our team.