Your customers didn't cancel. Their card failed.
When a Stripe payment fails, Dunly emails the customer within minutes with a one-tap way to fix it. You see every dollar it wins back, and not a cent it didn't earn.
Your dashboard, on day one
One screen shows what failed, who is being chased and what came back. There are no reports to build.
The green number only counts money that came back after one of our emails.
Stop one customer's reminders, or send their next email right now.
See the moment a customer opens the payment link.
What your customer actually gets
A plain email under your product's name, not ours. One button to Stripe's own payment page. Replies land in your inbox.
Hi Maya,
We tried to charge $49.00 for your Acme Analytics subscription, but the payment was declined.
This usually happens when a card expires or the bank flags the charge. It takes about a minute to fix.
Update payment detailsSent on behalf of Acme Analytics.
- 1Your product name as the sender, so nothing looks like a stranger's email.
- 2The button opens Stripe's hosted payment page. We never touch the card.
- 3Replies go to your support address. Rewrite any of the four emails in your own voice.
Four emails, then it stops
- 15 minutes after the failureYour payment didn't go through
- Day 3Reminder: please update your payment
- Day 7Action needed: your subscription is at risk
- Day 12Final notice: payment overdue
- The moment the invoice is paidReminders stop immediately
Who is Dunly for?
A two-minute check before you spend time on a trial.
Dunly is a good fit if
- You bill subscriptions through StripeMonthly or yearly plans, with invoices that sometimes fail to charge.
- Your customers can fix a card themselvesSoftware, memberships, courses and newsletters, where one click on a link is enough.
- You run things alone or in a small teamNobody has time to chase every declined card by hand.
- A few failed payments a month already hurtWinning back a single $29 subscription pays for the plan.
Probably not for you if
- You don't use StripeDunly listens to Stripe only. PayPal, Paddle and bank transfers are not supported.
- You only sell one-time productsWith no renewals, there is nothing that fails twice.
- You need calls, texts or in-app messagesDunly sends email and nothing else.
SaaS founders
Failed renewals stop quietly eating your monthly revenue.
Communities and memberships
Members keep their access because a card got fixed, not because they forgot.
Courses and newsletters
Paying readers stay subscribed through card expiries.
Small agencies
Retainer invoices get paid without an awkward chase email from you.
What failed payments cost you every month
Change the numbers to match your business. The defaults are cautious guesses, not promises.
Check Stripe's billing reports for your real number.
Results differ by business. Dunly shows your real figure after a few weeks.
Everything in one place
One plan covers every section. We list what already works today, and mark the rest as coming.
Recovery
Emails that win back failed payments, in your customer's language, with your own wording.
Customers
Every customer's history, plus groups like repeat failures and people who opened the link but didn't pay.
Invoices
Every invoice that failed, with its status, a link to Stripe and a CSV export.
Workflow
Choose which of the four emails go out and when, and skip one if the customer already opened the link.
Automations
If a payment of $500 fails, email me. If a customer fails twice, tell my chat or your own server. Small rules that run on their own.
Experiments
Test two versions of your first email and see which one gets paid more.
Insights
Which email works, how fast the money returns and what is likely still on its way, in plain arithmetic.
Revenue analytics
Monthly revenue, churn and lifetime value from your Stripe data, using an optional read-only key.
Money alerts
A message when a customer disputes a charge, when you refund one, and when monthly revenue falls by 10% or more.
Dunly AI
Ask why revenue dropped and get an answer based on your own numbers, with the next step to take.
Works with the tools you already use
Dunly reads from Stripe and speaks to your chat or your own server.
Works with Zapier, Make and n8n through webhooks.
What happens when a payment fails
The reason matters, so the follow-up differs. Here are three common ones.
Card expired
- Stripe reports the failure.
- Within 15 minutes the customer gets an email asking them to update the card.
- They pay on Stripe's secure page.
- The payment is marked as recovered.
Bank declined
- The bank refuses the charge.
- Dunly sends a calm reminder, and the next ones on your schedule.
- The customer tries another card or asks their bank.
- You see the result on your dashboard.
Customer doesn't respond
- The first email goes unopened.
- The follow-ups go out as you set them in Workflow.
- An automation can tell you when the same customer fails twice.
- After 30 days Dunly stops and marks the payment as lost.
Stripe retries the payment. Dunly recovers the customer.
They do different jobs, and they work well together.
Stripe retries
Stripe tries the same card again on a schedule. That fixes temporary problems, like a bank that was briefly unavailable.
Dunly emails
When a card has expired or the bank keeps saying no, someone has to act. Dunly asks the customer, in their language, and gives them a secure link to pay.
Dunly counts a payment as recovered only when it came after one of its emails.
What we're building next
Tell us which of these you need. We read every vote and build in that order.
Small tool, no loose ends
Everything below is already in your dashboard on day one.
Speaks your customer's language
Reminders go out in English, Russian, Spanish, German, French or Portuguese, chosen from the customer's Stripe locale and country.
Fast first reminder
The first email goes out 15 minutes after Stripe reports the failure, while the customer still remembers the purchase. Prefer another pace? Pick gentle, standard or fast.
Your voice
Rewrite all four emails with a live preview. Placeholders fill in the customer's name, the amount and your product.
See who opened the link
Know when a customer opens the payment page, so you can tell a reminder landed before the money does.
Pings when money returns
Get a Slack or Discord message, or a short email, each time a payment fails and each time one comes back.
A weekly summary
One short email a week with what was recovered. It only arrives when something happened.
A page you can show
Turn on a public results page with your recovered revenue and a chart, to link from your site or share with investors. No customer data on it.
A demo before Stripe
Run a demo payment and receive the real emails in your own inbox, then mark it paid and watch the stamp land.
Stop or nudge
Stop reminders for one customer, or send their next email right now. You stay in control.
Safe by design
Recovery runs on signed Stripe webhooks, and Stripe's own page takes the payment. Dunly cannot charge a card.
Your data, any time
Export every failed payment as a CSV in one click.
We only take credit for what we earned
Many tools count every late payment as a win. Dunly doesn't, so the number on your dashboard is one you can trust.
Paid after we emailed
At least one reminder went out before the customer paid. That money is in your account partly because of Dunly.
Paid on Stripe's own retry
The card worked on a retry before any email went out. You see these separately, and they never inflate our total.
Built so it can't touch your money
Dunly only listens. It never sees a card number, never holds your money and can't charge anyone.
Stripe
A payment fails and Stripe tells us.
Dunly
Checks the signature, then writes the email in your customer's language.
Your customer
Gets a plain email under your product's name.
Stripe's own page
The card is entered there and never passes through Dunly.
What Dunly receives
- The invoice number and amount
- The customer's email address and name
- Whether the invoice was paid
What Dunly never gets
- A full Stripe secret key
- Card numbers or bank details
- Permission to charge or refund anyone
Every message is verified
Anything without a valid Stripe signature, or that is too old, is thrown away.
Passwords are hashed
We store a salted hash, so nobody at Dunly can read your password.
No third-party scripts
No trackers or outside code run on any page, and the browser enforces it.
Your data is yours
Export every failed payment as a CSV whenever you like.
No invented customer logos here, and no five-star quotes. Real numbers will go on this page when there are real customers.
The maker of DunlyWhy Dunly exists
A failed payment is the quietest way to lose a customer. They never decided to leave. Their card expired, the bank said no, and nobody noticed.
One friendly email usually fixes it, yet many small products never get around to sending it. So I built Dunly.
I wanted three things: it never touches your money, it only counts what it really won back, and you can understand it in five minutes.
If something looks wrong or a reminder reads badly, write to us. It gets fixed, not filed.
- Dunly Pro, monthly$29.00
- 7-day free trial−$29.00
- Failed payments chasedunlimited
$29 a month. One plan.
If Dunly wins back a single $29 subscription a month, it has paid for itself.
- Unlimited failed payments
- Four reminders in your own words, in six languages
- Automations, experiments and customer insights
- Slack, Discord and email alerts
- Honest recovery numbers
Questions
Do you need my Stripe API key?
Not to recover payments. Dunly only receives webhooks that Stripe signs with a secret you control, and sends customers to Stripe's own hosted invoice page. For the optional Revenue page you can add a restricted, read-only key. Full secret keys are refused, and you can remove the key at any time. We can't charge cards or move your money.
Who do the emails come from?
They show your product name as the sender and go out through Dunly's mail domain. Customer replies land in the support email you set in Settings.
How do you decide what counts as recovered?
An invoice counts only if we sent at least one reminder before it was paid. Payments that succeed on Stripe's own retry are shown separately.
Which Stripe events do you use?
invoice.payment_failed, invoice.paid, invoice.voided and invoice.marked_uncollectible. Add charge.failed as well if you want to see why payments fail, and charge.dispute.created and charge.refunded for dispute and refund alerts.
Which languages does Dunly speak?
The site and dashboard come in English, Russian, Spanish and German. Reminder emails can also go out in French and Portuguese, and Dunly picks the right one from the customer's Stripe locale and country.
Does it work with other currencies?
Yes. Amounts are shown in the currency of each invoice, and your dashboard totals each currency separately.
What happens when the trial ends?
Failed payments are still recorded, but reminders pause until you upgrade. Nothing is deleted.
Stop losing customers who wanted to stay
Connect Stripe in two minutes, or run a demo first and see the whole thing work.