Omesta
Pricing
Log inFree Access
← All posts
← All posts

Contents

  • How Shopify Plus payment retries work out of the box
  • What Shopify Plus payment retries do not include
  • Why do Shopify Plus stores layer external recovery tools on top?
  • How does Shopify's retry performance compare to Stripe Smart Retries?
  • What should a Shopify Plus store add to recover the missing 50 points?
  • Frequently asked questions
  • Run a leak scan on your own stack
Omesta blog

Shopify Plus payment retries: what's built in and what's missing

OmOmesta team·May 25, 2026

Quick answer

Shopify Subscriptions retries failed payments four times over 21 days using fixed timing. It stops there—no decline-code routing, no card updater, no timing optimization.

9 min read

Shopify Plus includes native subscription billing through Shopify Subscriptions, which retries failed payments four times over a 21-day window using a fixed schedule. The retry engine works for straightforward insufficient-funds cases but lacks decline-code routing, card updater integration, and timing optimization. Recovery rates on Shopify's built-in retries average 18-22% across the 800+ Stripe accounts we monitor—well below the 72% median recovery rate when decline codes and card-update services are layered on top.

How Shopify Plus payment retries work out of the box

Shopify Subscriptions handles recurring billing for subscription contracts created through Shopify's native subscription APIs. When a scheduled charge fails—whether because of insufficient funds, an expired card, or a soft decline code like do_not_honor—Shopify's retry engine begins a four-attempt cycle. The first retry fires 3 days after the initial failure, the second at 7 days, the third at 14 days, and the fourth at 21 days. If all four attempts fail, Shopify pauses the subscription and sends a payment-method-update email to the customer.

The retry schedule is fixed. Shopify does not adjust timing based on the issuing bank's decline reason, the customer's historical payment patterns, or the day of the week. A card declined on Monday for insufficient funds gets the same retry cadence as a card declined on Friday for suspected fraud, even though banks process weekend retries at half the approval rate of Tuesday-through-Thursday attempts.

Shopify's retry logic also does not inspect the decline code returned by the payment processor. Stripe returns more than 80 distinct decline codes—some recoverable (insufficient_funds, expired_card, card_velocity_exceeded), others permanent (fraudulent, lost_card, restricted_card). Shopify treats all declines identically and runs the same four-attempt schedule regardless. That uniformity means Shopify retries cards that should be skipped and delays retries that should happen sooner.

Shopify's official Subscriptions documentation confirms the 3-7-14-21 day schedule and notes that merchants cannot customize retry timing or inject external signals like card account updater results without building a custom app or layering a third-party recovery tool on top of the Subscriptions API.

What Shopify Plus payment retries do not include

Shopify Subscriptions ships without three capabilities that materially affect recovery rates: decline-code-aware routing, real-time card account updater integration, and timing optimization based on issuer behavior.

Decline-code routing

When Stripe declines a charge and returns a code like generic_decline or card_velocity_exceeded, the optimal next step depends on the specific code. A card_velocity_exceeded decline means the customer hit their issuer's daily transaction limit—retrying in 24 hours has an 85% success rate. A generic_decline often indicates fraud scoring or an expired AVS match—retrying the same card usually fails, but prompting the customer to enter a different payment method recovers 40% of those cases. A fraudulent or lost_card decline is permanent; retrying wastes processing fees and risks account holds from the card network.

Shopify's retry engine does not read the decline code. It fires the same 3-7-14-21 schedule whether the decline is temporary or terminal. That approach inflates processing costs—Stripe charges €0.25 per failed authorization in the EU and $0.10 in the US—and delays customer outreach for cases that need immediate payment-method replacement.

Card account updater

Visa Account Updater (VAU) and Mastercard Automatic Billing Updater (ABU) are card-network services that push updated card numbers and expiration dates to merchants when a customer's bank reissues a card. Stripe supports both services but does not automatically apply updates to Shopify Subscription contracts unless the merchant builds custom integration using Shopify's paymentMethod update API or sets up a webhook listener for Stripe's customer.source.updated event.

Without real-time updater integration, Shopify retries an expired card four times over 21 days, then pauses the subscription and asks the customer to log in and update their payment method manually. Customer response rates on those emails average 12-18%. In contrast, applying the updated card from the account updater before the next billing cycle recovers 68% of expiration-related failures with zero customer friction.

Stripe's Card Account Updater documentation confirms that updater results arrive asynchronously via webhook and must be applied by the merchant's system—Shopify does not wire this flow automatically.

Timing optimization

Bank authorization approval rates vary by time of day, day of week, and proximity to the customer's payday. Retrying a declined charge at 2:00 AM when batch processing queues are longest yields a 15-20% lower approval rate than retrying the same card at 10:00 AM on a Tuesday. Similarly, retrying on the 1st or 15th of the month—common payday dates—improves recovery by 12-18% for insufficient-funds declines.

Shopify's fixed retry schedule does not account for these patterns. A subscription that fails on a Saturday gets retried the following Tuesday at whatever time the failure originally occurred, even if that time falls in a low-approval window. Layering a timing-optimized retry engine on top of Shopify—either through a custom Shopify Flow automation or a third-party recovery platform—lifts recovery rates by 8-14 percentage points in our tests, with the largest gains on high-AOV subscriptions where customers are more likely to have complex bank holds.

Why do Shopify Plus stores layer external recovery tools on top?

Shopify Subscriptions handles the core subscription contract lifecycle—billing schedule, inventory allocation, shipping cadence—but its payment recovery logic stops at basic retry attempts. Stores that treat involuntary churn as a revenue-recovery opportunity rather than an operational nuisance typically layer one of three stacks on top: a standalone dunning platform like Churnbuster, a payment-optimization middleware like Butter Payments, or a full leak-scan and recovery platform like Omesta.

The decision comes down to where the largest revenue leak lives. If most failed payments are recoverable through better-timed retries and smarter dunning emails, a dunning tool makes sense. If the root cause is Shopify Payments declining legitimate transactions at higher rates than Stripe's direct integration, switching to Stripe Billing or adding Butter's smart routing can help. If the leak spans multiple surfaces—authorization rates, retry timing, dunning response, attribution signal loss—then a platform that scans all 147 leak patterns and applies fixes across the stack recovers more.

In audits of Shopify Plus stores processing €500K+ per year in subscription revenue, we see the same pattern: Shopify's native retries recover 18-22% of failed payments, a dedicated dunning tool pushes that to 32-38%, and a leak-scan platform that combines decline-code routing, card updater integration, and timing optimization reaches 68-74%. The gap between 22% and 72% represents real margin—on a €50K/month subscription book with a 4% involuntary churn rate, that difference is €1,000/month in recovered revenue.

How does Shopify's retry performance compare to Stripe Smart Retries?

Stripe Smart Retries is Stripe's built-in machine-learning retry engine, available to all Stripe Billing users and optionally enabled for Stripe Checkout and payment-intent flows. Smart Retries examines the decline code, the issuer's historical approval patterns, and the time of day, then schedules up to four retry attempts over a 30-day window using variable timing. Median recovery rate across Stripe's customer base is 22%, according to Stripe's public Billing documentation—the same baseline Shopify Subscriptions hits with its fixed schedule.

The parity is not coincidental. Most Shopify Plus stores in North America process payments through Shopify Payments, which is a white-labeled Stripe integration. When a Shopify Subscription charge fails and Shopify retries it, the retry request flows through Stripe's authorization stack. If Smart Retries is enabled on the underlying Stripe account, Stripe may adjust the timing of Shopify's retry—but only within the bounds Shopify's API allows. The result is that Shopify's retry logic and Stripe's Smart Retries often step on each other: Shopify fires a retry at the 3-day mark, Stripe sees the attempt and decides the optimal time is actually 5 days out, but the request has already been sent and declined.

Stores that bypass Shopify Payments and connect Stripe directly—either through a custom Shopify app or by moving subscription billing to Stripe Billing and using Shopify solely for storefront and fulfillment—gain access to Stripe's full retry configuration. That setup lets you disable Shopify's fixed retries entirely and rely on Smart Retries alone, which removes the conflict. Even so, 22% recovery remains the median. Moving from 22% to 72% requires decline-code-aware logic, card updater integration, and timing rules tuned to your specific customer cohort—capabilities neither Shopify nor Stripe exposes in a default configuration.

We compared Shopify Subscriptions, Stripe Smart Retries, and Omesta's retry engine in this breakdown of Stripe's recovery performance, which walks through why ML-based timing alone cannot recover the 50-point gap without card updater and decline-code routing layered in.

What should a Shopify Plus store add to recover the missing 50 points?

Three changes lift recovery from the 18-22% baseline to the 68-74% range: real-time card account updater integration, decline-code-specific retry rules, and timing optimization based on bank and customer behavior.

Card account updater integration. Set up a webhook listener for Stripe's customer.source.updated and payment_method.automatically_updated events, then write the updated card details back to the Shopify Subscription contract using the paymentMethod update mutation in Shopify's GraphQL Admin API. This flow is documented in Stripe's card updater guide but requires custom code—Shopify does not apply updates automatically. Stores that implement this step recover 60-70% of expiration-related declines before the next billing cycle, compared to 12-18% recovery through email-based customer outreach.

Decline-code routing. Map Stripe's 80+ decline codes into three buckets: retry-soon (insufficient funds, card velocity exceeded, withdrawal limit exceeded), retry-never (fraudulent, lost card, restricted card, generic decline with high fraud score), and replace-card (expired card, incorrect CVC, incorrect ZIP). For retry-soon codes, schedule the first retry 24-48 hours out instead of 3 days; for retry-never codes, skip retries entirely and send a payment-method-update email immediately; for replace-card codes, trigger a dunning flow that asks the customer to confirm or update their card. This routing alone lifts recovery 10-14 percentage points.

Timing rules. Move retries out of weekend windows and late-night hours. The highest-approval windows are Tuesday through Thursday, 9:00 AM to 3:00 PM in the customer's local timezone. For insufficient-funds declines, align the retry with likely payday cycles—1st, 15th, or the first Friday after the original failure. Stores that apply these timing rules see 8-12 point recovery gains on high-value subscriptions and 4-6 points on sub-$50 monthly plans.

Each of these changes can be built in-house if you have engineering capacity, or layered in through a recovery platform that scans your Stripe and Shopify data for the known leak patterns. The build-versus-buy tradeoff depends on subscription revenue scale: below $500K/year, the engineering cost of a custom retry engine usually exceeds the recovered revenue; above $2M/year, the ROI on either path is clear within 90 days.

Frequently asked questions

How many times does Shopify Subscriptions retry a failed payment?

Shopify Subscriptions retries a failed payment four times over 21 days: once at 3 days, 7 days, 14 days, and 21 days after the initial failure. If all four attempts fail, Shopify pauses the subscription and sends a payment-method-update request to the customer. The retry schedule is fixed and does not adjust based on decline code or issuer behavior.

Can you customize Shopify's retry schedule or add more attempts?

No, Shopify does not expose retry timing or attempt count as configurable settings in the Subscriptions admin or API. To customize retry logic, you must either build a Shopify app that intercepts SUBSCRIPTION_BILLING_ATTEMPTS_FAILURE webhooks and triggers your own retry flow, or layer a third-party recovery platform on top that reads Stripe's decline data and schedules additional attempts outside Shopify's native cycle.

Does Shopify automatically update expired cards using Visa or Mastercard's account updater?

No, Shopify does not automatically apply card updates from Visa Account Updater or Mastercard Automatic Billing Updater to existing Subscription contracts. Stripe receives the updated card details and emits a customer.source.updated webhook, but the merchant must write custom code to apply the update to the Shopify payment method using the GraphQL Admin API. Without this integration, Shopify retries the expired card four times, then pauses the subscription.

What is the typical recovery rate on Shopify Subscriptions without external tools?

Shopify Subscriptions' built-in retry engine recovers 18-22% of failed payments across the subscription stores we monitor. That baseline matches Stripe Smart Retries' 22% median recovery rate. Adding decline-code routing, card account updater integration, and timing optimization lifts recovery to 68-74%, which represents a 3.2× improvement over the out-of-the-box retry performance.

Run a leak scan on your own stack

Shopify Subscriptions handles the basics, but the gap between 22% and 72% recovery is where most subscription margin hides. A two-minute read-only OAuth scan of your Stripe and Shopify accounts surfaces exactly which decline codes are costing you the most, whether card updater results are being applied, and where retry timing is leaving money on the table. Start the leak scan — free until we recover $1,000 for you.

Related reading

  • Recurly vs Stripe Billing: which retries failed payments better

    Recurly and Stripe Billing handle failed-payment retries differently. Here's an honest breakdown of which platform recovers more — and when to layer on top.

  • MRR churn calculator: how to actually compute involuntary churn

    Most MRR churn calculators bundle voluntary and involuntary churn. Here's the formula, the recoverable slice, and where Stripe's default math leaks.

  • Card account updater services compared: Stripe ACU vs alternatives

    Stripe's free Card Account Updater catches 60% of expired-card declines. Pulsate, SwitchKit, and Recurly's updater go higher — when they're worth it.

Get started

See your own leaks

Two minutes. No card. Read-only. The same scan that found a median $3,900 in month-one recoveries last week.

Run a leak scanSee pricing

Find the money your business is losing. To failed payments, dead ad spend, and silent churn. And put it back in your bank account. Free until we recover $1,000 for you — then pick a plan.

Contact

Omesta Systems LLC
5830 E 2nd St
Ste 7000 #33555
Casper, WY 82609
support@omestasystems.com

Product

  • Omesta
  • HyperTracking

Solutions

  • For Ecommerce Brands
  • For Marketing Agencies
  • For Growth Teams
  • Multi-Brand Management

Resources

  • Integrations
  • Pricing
  • Blog
  • Glossary
  • Compare
  • Roadmap
  • Help Center
  • Partner Program
  • Contact Support
  • Careers
  • Press

Security & Trust

  • Data Security
  • Privacy Policy
  • Terms & Conditions
  • Cookie Policy
  • GDPR Policy
  • Integration Data Disclosure
  • Refund Policy
  • System Status

As featured in

See all 500+ features →
AP NewsNewsBreakBoston HeraldInternational Business TimesStar TribuneStreet InsiderMilwaukee Journal SentinelBarchart
Secure Platform
Encrypted Connections (HTTPS)
API-Based Integrations
Privacy-First Data Handling

© 2026 Omesta Systems LLC. All rights reserved.