In this guide · 8 sections
Short answer
Turn on Stripe Smart Retries (Stripe recommends 8 tries within 2 weeks), switch on failed-payment and expiring-card emails with a link to update the card, add a short grace period, and pause rather than cancel where you can. PayNow cannot be charged automatically, so send invoices with reminders instead.
Why subscription payments fail
Most failures are not customers trying to avoid paying. They fall into two groups, and they need different handling.
| Type | Common causes | What recovers it |
|---|---|---|
| Soft decline | Insufficient funds, daily limit, temporary bank issue, 3D Secure needed | Retrying at a better time; asking the customer to confirm the payment |
| Hard decline | Expired card, card replaced, account closed, card reported lost | Customer updates their card; automatic card updates where supported |
| Customer-side | Customer forgot, changed bank, wants to pause | Clear reminders, a pause option, an easy portal |
A good dunning set-up handles all three automatically, so staff only deal with the few that need a conversation.
Step 1: set up retries in Stripe
Stripe's Smart Retries use a machine-learning model to pick the best times to retry a failed payment. You set how many tries over what period: 1 week, 2 weeks, 3 weeks, 1 month or 2 months. Stripe's recommended default is 8 tries within 2 weeks, and you can also set custom retry rules instead.
Open revenue recovery settings
In the Stripe Dashboard, go to Billing settings, then the revenue recovery or retries section.
Turn on Smart Retries
Start with the recommended 8 tries in 2 weeks. A monthly membership may want 3 weeks; a weekly class pack may want 1 week.
Choose what happens when retries run out
Cancel, mark as unpaid, leave overdue, or pause if eligible. See the section on pausing below.
Check where the payment method is stored
Stripe retries on the payment method attached to the subscription. When a customer updates their card, make sure it replaces the right default, or retries keep failing on the old one.
Listen for the events
If your website or member app controls access, use Stripe's webhook events for failed and paid invoices so access changes automatically.
Step 2: card updates and expiring-card emails
Card networks run updater services that tell Stripe when a saved card is replaced. Stripe's card documentation says this is widely supported for US-issued cards, that international support varies by country, and that you cannot tell in advance which cards support it. For Singapore customers, do not rely on it alone.
The dependable fix is to ask the customer before the card expires. Stripe's customer email settings include an option to send an email 1 month before the saved card expires, plus failed-payment notifications. Both can include a link to the Stripe-hosted Customer Portal or your own page, where the customer updates the card in a minute.
Step 3: a reminder sequence customers do not mind
Retries work quietly in the background. Reminders are what the customer sees, so make them helpful rather than threatening.
| When | Channel | Message |
|---|---|---|
| Day 0, first failure | Email (Stripe) | Payment did not go through; here is a link to update your card. No action needed if you already have |
| Day 3 | Friendly reminder with the same link; mention the date access would change | |
| Day 7 | WhatsApp or SMS | Short note with the update link, from your business number |
| Day 12 | Last reminder before the grace period ends; offer to pause instead | |
| After retries end | Access paused or ended, how to restart, and who to contact |
WhatsApp reminders need the WhatsApp Business API and an approved message template, and the customer must have opted in. Our WhatsApp Business API cost guide explains the set-up and per-message charges.
Grace periods: pause vs cancel
Decide what a customer keeps during retries and what happens if nothing works. When retries are exhausted, Stripe lets you cancel the subscription, mark it unpaid (invoices keep being created as drafts), leave it overdue (invoices keep being generated and charged on your retry settings) or, for eligible subscriptions, pause it. Stripe's changelog of 30 September 2026 added automatic pausing after the first failed renewal or after retries end, for subscriptions in flexible billing mode.
Pause when
- The customer has paid for months and probably has a card problem
- You want to keep their history, plan and price
- Restarting should be one click
- Service delivery can simply stop, like a gym or app
Cancel when
- The plan is low-value or a trial that never converted
- You hold stock, bookings or capacity for them
- The customer asked to stop
- Unpaid invoices would otherwise pile up
During the grace period, many businesses keep access on for a week, then limit booking or downloads, then pause. Write the rule into your terms so customers know what to expect; our gym membership website guide shows how studios phrase it.
PayNow and other non-card payments
Many Singapore customers prefer PayNow, but it is not a card you can charge in the background. Stripe's PayNow documentation says PayNow payments do not support automatically charging invoices, so subscriptions and invoices must use the send-invoice collection method. The customer receives an invoice each period and pays it themselves.
- Use send-invoice subscriptions for PayNow customers, with Stripe's unpaid recurring invoice reminders switched on
- Set a sensible due date, such as 7 days, and a reminder before and after it
- Offer card or another automatic method as the default, with PayNow as an option
- For fixed monthly fees such as school or preschool fees, GIRO may suit better; see our GIRO and online fee collection guide
Stripe also notes that it does not retry failed payments made with local payment methods by default; you turn that on separately if your methods support it.
Do it yourself or get help?
If you already run subscriptions in Stripe, switching on Smart Retries, expiring-card emails, failed-payment emails and the Customer Portal takes under an hour. Test with Stripe's test cards that simulate declines before you trust it. Our Stripe subscription billing guide covers the initial set-up, and Stripe fees in Singapore lists what Billing costs.
If you want it configured for you, our Subscriptions & Recurring Billing package (S$490) sets up plans and prices in Stripe, a sign-up page or payment links, the customer portal, failed-payment retries and reminder emails, and a monthly revenue report.
Frequently asked questions
Dunning is the process of recovering failed recurring payments. It combines automatic retries of the charge, reminder emails or messages to the customer with a link to update their payment method, a grace period, and a rule for what happens to the subscription if payment still fails, such as pausing or cancelling.
Stripe's recommended Smart Retries default is 8 attempts within 2 weeks, with the timing chosen by its model. You can choose a window from 1 week to 2 months. Match it to your billing cycle: shorter for weekly plans, up to 3 weeks or a month for monthly memberships.
Not as an automatic charge through Stripe. Stripe's documentation says PayNow payments do not support automatically charging invoices, so PayNow subscriptions must use the send-invoice collection method, where the customer pays each invoice. Turn on reminder emails, or offer card or GIRO for automatic collection.
Pausing keeps the customer's plan and history, so restarting is easy once the card is fixed. Stripe can now pause eligible subscriptions automatically after a failed renewal or once retries run out. Cancel when the plan is low-value, the customer asked to stop, or you hold capacity for them.
Turn on Stripe's expiring-card emails, which go out 1 month before a saved card expires, with a link to update it. Card networks' automatic updaters help with some cards, but Stripe notes international support varies, so do not rely on them alone for Singapore customers.