Skip to content

Failed payment recovery for Shopify

Sean WeasBy Sean Weas · Co-Founder, Product & EngineeringReviewed by Jay StevensUpdated 3 min read
Summarize with AI

Quick answer

Shopify Subscriptions retries a failed subscription payment on a schedule you configure (the number of attempts, the days between, and the final action — skip, pause, or cancel) and sends standard email notifications. Its native dunning is widely described as intentionally basic: email-only, uniform timing, no card account updater. Email-only dunning recovers ~20%; human outreach gets 60–85%+. Revatto re-attempts the charge through Shopify's Subscription Contracts API on an AI-timed schedule and adds email + SMS + human outreach under your brand, done for you — 20% of the first recovered payment, $0 setup, $0 monthly, cancel anytime.

The gap Shopify leaves open

What Shopify recovers on its own

  • Shopify Subscriptions lets you configure the number of billing-attempt retries, the days between them, and the final action (skip / pause / cancel).
  • Automated subscription emails notify the customer of a failed payment with a link to update their card.
  • Shopify doesn't publish a default retry count — it's merchant-configured, and its native dunning is widely described as intentionally basic.
  • Capture runs through the store's subscription-capable gateway, typically Shopify Payments.
  • Shopify stops at: Shopify Subscriptions' native dunning is intentionally basic — uniform retries and standard emails.Revatto adds: AI-timed billing attempts plus email + SMS + human outreach on top.
  • Shopify stops at: Customer notifications are email-only — no SMS and no human follow-up.Revatto adds: Multi-channel outreach under your brand, not a single templated email.
  • Shopify stops at: There's no native card account updater — expired cards rely on the customer self-serving.Revatto adds: Revatto drives the update with sequenced human follow-up, then re-attempts the billing.
  • Shopify stops at: Once the retries exhaust, the contract just skips, pauses, or cancels — no win-back.Revatto adds: Recovery continues past Shopify's last attempt to actually reconnect the customer.

How Revatto recovers failed Shopify payments

  1. 1
    Detect the failureRevatto ingests Shopify's subscription billing-attempt failure webhook the moment a contract charge fails.
  2. 2
    Enrich the contractA Subscription Contracts query fills in the customer, pricing, and payment-method context Shopify's sparse webhook leaves out.
  3. 3
    Re-attempt on an AI-timed scheduleWhere a retry can clear it, Revatto creates a new billing attempt through Shopify's Subscription Contracts API — timed for recovery, not Shopify's uniform interval.
  4. 4
    Reach the customerEmail + SMS + a human recovery specialist reach the customer under your brand to update the card — the channels Shopify's email-only dunning doesn't cover.
  5. 5
    Stop on successShopify's billing-attempt success webhook ends the sequence automatically.

How a Shopify decline maps across stacks

Insufficient funds — ISO 51 (a soft decline worth re-attempting). Recovery looks the same across every stack Revatto runs on — here is how the same issuer decision is named on each.

ISO 8583
Code51
CalledInsufficient FundsClassic soft decline
Stripe
Codeinsufficient_funds
Calledcard_declinedStripe Smart Retries target this code
Authorize.net
Code2
CalledDeclinedReason code 2 — detail in the response text
NMI
Code202
CalledInsufficient fundsresponse_code 202 (response = 2)

See what Revatto would recover from Shopify

Failed payments recovered automatically — no engineering, no manual chasing. We do the work; you keep the revenue.

See Your Recovery Potential

Frequently asked questions

Recovery, done for you

The same managed recovery layer runs on every stack — including Shopify. Here is what it has recovered for our clients.

$55M+ ARR

Recovered for our clients

65,000+

Payments recovered

54%

Average recovery rate