For the complete documentation index, see llms.txt. This page is also available as Markdown.

How FlyCode handles Shopify subscription failed payments

How FlyCode recovers failed Shopify subscription payments on Recharge, Skio, Stay AI and Loop: what replaces built-in dunning, retry limits, no double dunning.

By the FlyCode team. Last reviewed September 2026.

TL;DR: Shopify subscription apps (Recharge, Skio, Stay AI, Loop) ship with fixed-rule dunning: a set retry schedule, usually capped at 8 attempts, and reminder emails at every attempt. FlyCode takes over the failed-payment step only. It retries each failed charge on a per-merchant machine-learning schedule (up to 15 attempts a month within card network rules), charges another card on file when the primary fails hard, and coordinates branded emails and SMS with the retries so customers are not messaged about a charge that is about to succeed. The app you already use keeps managing the subscription, and guardrails prevent double-dunning. Merchants see a 25 to 40 percent improvement in recovery over the apps' native tools, and integration takes about a day.

Why Shopify subscription payments fail

Shopify subscription renewals are merchant-initiated charges on a stored card, run in batches by the subscription app on the renewal date. The same decline reasons apply as anywhere else, but two things make Shopify DTC subscriptions harder to recover than SaaS. First, the customer mix skews to consumer debit and prepaid cards, which fail more often: FlyCode's data shows debit cards run about 11 percent involuntary churn and prepaid cards 23 percent, against 6 percent for credit cards. Second, order values are lower and more frequent, so a renewal that lands before payday is common; insufficient_funds is often 50 to 70 percent of all failures. Most of these are soft declines that succeed when retried at the right moment, which is exactly what a fixed schedule cannot do.

What the subscription apps do by default

Recharge, Skio, Stay AI and Loop each include dunning. It is rule-based: a retry schedule you set (for example day 1, 3, 5 and 7), a cap of about 8 attempts, an action when the cap is reached (cancel, skip or leave), and reminder emails or SMS at each failed attempt. It works as a floor, but it retries every customer on the same days regardless of payday, issuer or card type, it uses up card network attempt allowances on low-probability days, and it tells customers about failures that a well-timed retry would have fixed, which converts some involuntary churn into cancellations.

What changes with FlyCode

App's built-in dunning
With FlyCode

Retry timing

Fixed schedule, same for every customer

Per-merchant model picks the moment per card (payday cycle, issuer behaviour, time of day)

Attempts

Up to 8

Up to 15 per month, inside Visa and Mastercard limits

Hard declines

Retried or emailed

Not retried; backup card on file charged automatically, then outreach

Emails and SMS

Sent at every failed attempt

Held while retries have a good chance, then sent in the customer's local time from your domain

Segmentation

One flow

Tailored dunning per segment and per failure reason

Reporting

Basic

Churn baseline, recovery by decline code, retries and email funnel

Support

App support

Payments experts by phone, Slack and email

FlyCode also reads the real decline reason behind each failure using network-level signals and more than 100 data points per transaction, which is what lets it separate a customer who is short of funds this week from a card that will never work again.

How the integration works

FlyCode receives failed charge events from the subscription app, decides how to recover each one, executes the retry through the store's payment connection, and writes the result back. The app and Shopify remain the systems of record: subscription status, order history and customer records are updated where they already live. On activation FlyCode loads every charge currently in an error state and backfills the error details, so recovery starts on the existing failed book.

Guardrails. FlyCode is built to complement the app's dunning rather than collide with it. At go-live one system is chosen to own retries and one to own messaging (usually FlyCode for both). Guardrails prevent double-dunning: no email is sent after a soft decline while a retry is pending, no email is sent while a retry is in progress, and recovered charges sync back so the app does not send its own reminder for a charge that is already paid. A per-customer safeguard also caps attempts per hour.

Time to launch. About one day for Recharge and Skio; no developer work on the merchant side.

Recharge

Recharge is the largest subscription platform on Shopify, and Recharge Retain bundles referrals, rewards, cancellation prevention, win-backs and failed payment recovery. FlyCode integrates with Retain so that failed payments are routed to FlyCode for specialist recovery while everything else in Retain keeps running. Setup is an app install from the Recharge App Marketplace plus three payment settings: allow third-party integration, set max retries to 8, and set the action at max retries to "Do nothing" so Recharge does not cancel or skip while FlyCode is still recovering. Top Recharge merchants already run both. Full steps: Step-by-step: integrate FlyCode with Recharge. Partnership details: flycode.com/partners/recharge.

Skio

Skio is known for its modern subscriber portal and passwordless checkout. FlyCode has a built-in Skio integration: sign up, invite FlyCode as a Shopify collaborator with access to Skio, and FlyCode activates in Skio's marketplace and agrees a launch date with you. Skio's cancellation flows, skip and swap features and portal are untouched. Full steps: How to install FlyCode on Skio. Partnership details: flycode.com/skio.

Recharge and Skio. On 30 April 2026 Recharge announced it had acquired Skio for USD 105 million. Both platforms continue to operate and a combined roadmap is expected. For merchants this means the subscription platform question may change over the coming year, while the failed-payment problem does not: subscriptions fail for reasons independent of which app manages them. FlyCode works with Recharge, Skio and Loop, so recovery stays constant whatever the platform decision. See Recharge welcomes Skio: what it means for merchants.

Stay AI and Loop

FlyCode supports Stay AI natively and partners with Loop. Setup follows the same pattern (connect, align the app's retry and email settings, agree a launch date); contact FlyCode for the current steps for your app. FlyCode is compatible with the subscription apps in the Shopify ecosystem; if yours is not listed, ask support to confirm the connection path.

Results on Shopify

Across Shopify merchants FlyCode reports a 25 to 40 percent average improvement in recovery rate over native tools. Documented examples: Gardencup (meal delivery) went from 62 to 82 percent recovery with a 20 percent increase in customer LTV; BUBS Naturals (supplements) went from 51 to 66 percent in one month with a 71 percent peak; PlixLife (nutrition) saw a 21 percent recovery boost, a 9 percent reduction in involuntary churn and 12X ROI; Cymbiotika (supplements, USD 150M-plus revenue) saw a 22 percent revenue increase from recovery and 25 percent churn reduction; Just Meats a 62 percent increase in payment recovery and 33 percent churn reduction; Lucy a 46 percent increase in recovery and 11 percent fewer billing failures.

Setup checklist (any app)

FAQ

Do I need to change anything in Shopify? No. Checkout, theme and orders are untouched; the only settings changes are inside the subscription app.

Can I keep my app's dunning flows? You can keep the app's cancellation, skip, swap and retention features. Only one system should retry and email on failed payments; most merchants let FlyCode own both.

Does FlyCode retry charges that failed for inventory or configuration reasons? Yes on Recharge, once the underlying cause is fixed in Shopify or the app.

How is FlyCode priced for Shopify merchants? Outcome-based: a share of revenue recovered above your existing baseline, with no seats, minimums or setup fees.

Where do I see results? In FlyCode's dashboard (recovery rate, recovered revenue against baseline, decline code mix, email funnel) and in the app and Shopify, where recovered charges appear as paid.

Was this helpful?