What you will learn
On this pageContentsCloseOpen
Every subscription app has the same settings page: number of retry attempts, days between attempts, and what to do when they run out. Merchants tune those three numbers, watch the recovery rate move a point or two, and assume the remaining failures are simply lost.
That framing is wrong in a specific and expensive way. Shopify's billing API returns more than 50 distinct error codes for a failed subscription charge, and a retry schedule is only the right tool for a minority of them. Some failures resolve on their own within days. Some will fail identically on attempt ten because nothing about the customer's account has changed. And one very common category — a renewal that can't be filled because the product is out of stock — may never enter the dunning cycle at all.
This article covers what Shopify handles natively for failed subscription payments, which failures retries can and cannot recover, and how Appstle, Seal, Loop, and Recharge price the difference.
What Shopify does natively
More than most comparison articles admit. Before evaluating any third-party app, know that the free first-party Shopify Subscriptions app already ships configurable dunning.
According to the Shopify Help Center, the app's Settings → Billing attempts section lets you adjust the Number of retry attempts, the Days between payment retry attempts, and the Action when all retry attempts have failed — skip, pause, or cancel. A notification is sent to the customer in each case.
The detail worth noting: those settings exist separately for Payment method failure and for Not enough inventory. Shopify treats a declined card and an unfillable renewal as two different problems with two different cadences. Appstle and Seal, by contrast, each document a single retry schedule covering failed billing generally.
Four more native pieces matter:
- Automatic card updates. Shopify's subscription considerations page documents a card auto updater: Shopify Payments works with the major card networks to update saved card details when a customer receives a new card. Availability is "widely supported in the United States for major card networks, with international support varying." It costs nothing and it is tied to your gateway, not your app. On other gateways Shopify says you should confirm with your provider whether you can receive updated details at all.
- A self-serve update link. From a customer's profile, Payment methods → Send link to update card emails the customer a link. Shopify notes that these links expire 48 hours after they're sent. If your dunning email cadence is three days apart, every link you send is dead before the next attempt.
- A Failed payment segment. The customer list can be filtered by Product subscription status → Failed payment, so you can find and message the affected cohort without an app.
- Shopify Flow triggers. Flow ships both a subscription billing attempt failure trigger and a subscription billing attempt challenged trigger, each passing the full billing attempt and subscription contract objects. You can branch on the error code and route to Klaviyo, a Slack alert, or a tag without buying a recovery product.
Native billing timing is fixed: customers are billed the day after the subscription is due, at 10:00 am in your store's local time.
Verdict: if you are on Shopify Payments in the US and running a few hundred subscriptions, native dunning plus Flow covers the mechanics. What you're buying from an app is scheduling sophistication, notification design, and reporting — not the ability to retry.
The error code decides what a retry can do
Shopify's SubscriptionBillingAttemptErrorCode enum is documented as existing to "supplement the error_message to provide consistent results and help with dunning management." The codes are the intended input to your retry logic, not a debugging afterthought.
They fall into three groups, and only the first is a retry problem.
| Group | Example codes | What a retry does |
|---|---|---|
| Temporary, state may change | INSUFFICIENT_FUNDS, TRANSIENT_ERROR, CALL_ISSUER, TRANSACTION_LIMIT_EXCEEDED | Genuinely useful. Payday, a credit cycle, or a bank flag clearing can flip the outcome. |
| Requires the customer to act | EXPIRED_CARD, EXPIRED_PAYMENT_METHOD, INVALID_PAYMENT_METHOD, PAYMENT_METHOD_NOT_FOUND, BUYER_CANCELED_PAYMENT_METHOD, INVALID_CUSTOMER_BILLING_AGREEMENT | Nothing. The same instrument will decline every time until the customer updates it. Retries here are only useful as a schedule for sending emails. |
| Merchant-side or configuration | PAYMENT_PROVIDER_IS_NOT_ENABLED, TEST_MODE, MERCHANT_RULE, INVALID_CURRENCY, PAYMENT_METHOD_INCOMPATIBLE_WITH_GATEWAY_CONFIG | Nothing, and it burns your retry budget while you don't know a setting is broken. |
Two documented behaviours make this sharper than the enum alone suggests. Skio's public payment and billing errors reference, which maps each code to a merchant action, records that AUTHENTICATION_REQUIRED, AUTHENTICATION_FAILED, and EXPIRED_BUYER_ACTION are "treated as a generic decline, not routed through the 3DS challenge flow." In Skio, a customer whose bank wants a 3D Secure step therefore looks identical to a hard decline in your dunning queue.
And despite their names, MERCHANT_ACCOUNT_ERROR, PAYMENT_PROVIDER_ERROR, and PROCESSING_ERROR are each documented there as being treated as a genuine decline rather than a transient platform issue. If you assumed those three were safe to retry aggressively, that assumption does not hold.
One more, specific to Shop Pay: PAYMENT_METHOD_NOT_FOUND "commonly occurs when a customer removes the card from Shop Pay, breaking the billing agreement." Shopify's own documentation confirms the mirror case — if a customer deletes a card from their Shop Pay account, linked subscriptions continue until cancelled separately. The subscription stays alive, the payment instrument does not, and no number of retries will bridge that.
The failure that never reaches your dunning queue
Now the part almost nobody documents publicly.
Skio's documentation states plainly that, in Skio, out-of-stock errors do not enter the dunning cycle, and describes two outcomes:
- If all items in a subscription are out of stock at billing time, billing is skipped entirely. No charge is made, no failure email is sent, and the subscription does not appear in the Failed tab.
- If only some items are out of stock, those line items are removed before billing and the remaining items are charged. The order goes through successfully, at a lower amount than expected.
Read that second case again. Your renewal succeeded, your recovery dashboard is clean, and your revenue is quietly short. It surfaces only in the subscription audit log as a "Billing out of stock" event.
This is exactly the scenario Shopify's native split addresses by giving Not enough inventory its own retry count and interval in the Shopify Subscriptions app. Whichever app you use, the practical rule is the same: if your renewal revenue is below forecast but your recovery rate looks fine, check inventory before you touch the retry schedule.
What the apps actually change
Five apps, on the same axis: what they let you do about a failed renewal, and what they charge for it. All figures are from each app's Shopify App Store listing, checked September 5, 2026.
Shopify Subscriptions

Source: Shopify App Store (Shopify Subscriptions), retrieved September 5, 2026
Free, from Shopify, rated 3.7 across 801 reviews. Retry count, retry interval, and terminal action, configured separately for payment failures and inventory failures. Customer notifications are toggled in Settings → Notifications alongside the rest of your store's emails. No phased cadences, no recovery analytics beyond standard subscription reporting.
Appstle℠ Subscriptions App

Source: Shopify App Store (Appstle℠ Subscriptions App), retrieved September 5, 2026
Appstle℠ Subscriptions App carries the Built for Shopify badge and is rated 5.0 across 8,566 reviews. Its Failed Payment Recovery documentation specifies 1–10 retry attempts, an interval of 1–10 days, and cancel, pause, or skip on exhaustion.
The differentiator is phased retry, documented June 7, 2026 and the only staged retry cadence publicly documented among the apps checked here: instead of one fixed cadence, you define ordered phases each with their own attempt count and spacing. Appstle's worked example — phase 1 of 2 attempts one day apart, phase 2 of 3 attempts five days apart — retries on days 1, 2, 7, 12, and 17. That maps directly onto the error taxonomy above: front-load for temporary declines, then space out to give customers time to update a card. A Results tab reports recovery rate, recovered revenue, subscriptions still in dunning, and the most common decline reasons. Appstle states phased retry is an advanced capability set up by contacting their support, not self-serve.
Pricing runs on monthly subscription revenue with a 0% transaction fee: Free up to $500/month, Starter $10/month up to $5,000, Business $30/month up to $15,000, Business Premium $100/month up to $100,000. Payment retry is listed in the free plan's feature set.
Seal Subscriptions App

Source: Shopify App Store (Seal Subscriptions App), retrieved September 5, 2026
Seal Subscriptions App is Built for Shopify, rated 4.9 across 3,076 reviews. Its documentation places retry configuration in Settings → General Settings → Billing settings, and recommends enabling a per-failure customer email with update instructions under Settings → Notifications — that email is opt-in, not on by default.
The important constraint is the terminal action. Seal's documentation states that if the payment fails on all tries, "the subscription will be cancelled automatically." Where Shopify Subscriptions and Appstle let you choose skip, pause, or cancel, Seal documents only the cancellation outcome. On a long retry ladder that difference decides whether an exhausted subscriber is recoverable later.
Pricing is by active subscription count with a 0% transaction fee on every tier: Free for 50 subscriptions, $5.95/month for 100, $9.95/month for 250, $24.95/month for 500, with larger plans available. Annual billing saves 20%.
Loop Subscriptions App

Source: Shopify App Store (Loop Subscriptions App), retrieved September 5, 2026
Loop Subscriptions App is rated 5.0 across 747 reviews. Its listing advertises "Smart dunning management with 15 retries" — a higher published ceiling than the 1–10 attempts Appstle documents.
Check which plan it sits on. Loop's Free Forever plan covers 50 active subscriptions and lists a customer portal, subscription alerts, and growth analytics. Dunning is not in that feature list; it appears in the Starter plan at $99/month plus 1.0% per transaction. Pro is $399/month plus 0.75%. So the retry ceiling Loop advertises is not part of the tier a small store would start on.
Recharge Subscriptions App

Source: Shopify App Store (Recharge Subscriptions App), retrieved September 5, 2026
Recharge Subscriptions App is rated 4.8 across 3,116 reviews, with a 60-day free trial. Failed Payment Recovery is listed in the Starter feature set at $99/month plus 1.49% + 19¢ per transaction. Recharge also lists a $25/month plan for 25–50 subscribers whose feature list reads "Entire Starter feature set," with no transaction fees for the first 50 subscribers — so recovery is not gated behind the $99 tier. Plus is $499/month plus 1.34% + 19¢.
The listing notes that external charges may be billed by Recharge separately from your Shopify invoice, which matters for reconciliation. Category context: Recharge announced on April 30, 2026 that Skio was joining the company. Skio's error-code documentation remains public and is worth reading whichever app you run.
Same volume, very different bills
Take a store doing $12,000/month in subscription revenue across roughly 300 active subscriptions and 300 renewal orders, at a $40 average order value. Applying each app's published rates:
| App | Plan | Monthly cost at this volume | Denominator |
|---|---|---|---|
| Shopify Subscriptions | — | $0 | Free |
| Seal Subscriptions App | LEGEND | $24.95 | Active subscription count |
| Appstle℠ Subscriptions App | Business | $30 | Monthly subscription revenue |
| Loop Subscriptions App | Starter | $99 + $120 = $219 | Flat + 1.0% of transactions |
| Recharge Subscriptions App | Starter | $99 + $178.80 + $57 = $334.80 | Flat + 1.49% + 19¢ per transaction |
That is a 13x spread for a capability every one of them describes as dunning. The gap is not retry quality — it is that Seal and Appstle charge 0% on transactions while Loop and Recharge take a percentage, so their cost scales with the revenue you are trying to protect. On revenue-share pricing, recovering a $40 order costs you a cut of that $40.
The math inverts at scale, where percentage-based platforms bundle implementation, benchmarking, and support that flat-rate apps don't attempt. But run your own numbers before assuming the expensive tier recovers more.
How to decide
- Shopify Payments, US, under a few hundred subscriptions → native Shopify Subscriptions plus a Flow workflow on the billing attempt failure trigger. Turn on the card auto updater path by staying on Shopify Payments, and stop there.
- Cost-sensitive, want a real settings page → Seal at $5.95–$24.95/month by subscription count, or Appstle at $10–$100/month by revenue. Both charge 0% on transactions. Choose Appstle if auto-cancel on exhaustion is unacceptable; Seal documents cancellation as the outcome when all retries fail.
- You want cadence control tuned to error type → Appstle's phased retry is the only publicly documented staged cadence in this group. Budget a support conversation to enable it.
- Not on Shopify Payments → your recovery ceiling is set by your gateway's card-updater support, not your app. Confirm that first; it will change the answer more than any retry setting.
- Renewal revenue is short but recovery looks healthy → this is an inventory problem, not a dunning problem. Check whether out-of-stock renewals are being silently skipped or partially billed.
What none of them fix
Three constraints sit under every option here. Retries cannot recover a payment method the customer has removed or that has expired without being replaced — those need a working update path, and Shopify's update links expire in 48 hours. Bank challenge emails ("Confirm payment for your subscription") carry your logo and accent color but, per Shopify, cannot be customized further. And editing the checkout subscription disclosure wording requires the Shopify Plus plan.
Pick the app whose pricing denominator matches how your subscription business actually grows — by subscriber count, by revenue, or by order volume — and configure the retry schedule around what the error codes can actually change. Before you add a tenth attempt, confirm your gateway is updating cards on its own and that the update link reaches the customer inside its 48-hour window. Those two paths address the failure categories a retry cannot.
Sources
- Managing Shopify Subscriptions app settings — Shopify Help Center
- Considerations and payment gateways for subscription products — Shopify Help Center
- Viewing and managing customers' subscriptions in your Shopify admin — Shopify Help Center
- Subscription billing attempt failure trigger — Shopify Help Center
- SubscriptionBillingAttemptErrorCode — Shopify GraphQL Admin API
- Payment and billing errors — Skio Help Center
- Failed Payment Recovery in Appstle Subscriptions — Appstle Help Center
- Phased payment retry campaigns in Appstle Subscriptions — Appstle Help Center
- What happens when an auto-charging payment fails? — Seal Subscriptions
- Recharge Welcomes Skio to Build the Future of Subscription Commerce — PR Newswire
- Shopify Subscriptions — Shopify App Store
- Appstle℠ Subscriptions App — Shopify App Store
- Seal Subscriptions App — Shopify App Store
- Loop Subscriptions App — Shopify App Store
- Recharge Subscriptions App — Shopify App Store
Hextom: Free Shipping Bar is no longer available on the Shopify App Store. Here's what Shopify's native announcement bar can and can't do, and five real apps that fill the gap in 2026.