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.

No card needed to start Connects with one webhook URL Recovery needs no API key from you

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.

Acme Analytics <billing@mail.dunly.uk>Your Acme Analytics payment didn't go through

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 details
Questions? Reply to this email or write to help@acme.dev.
Sent 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

  1. 15 minutes after the failure
    Your payment didn't go through
  2. Day 3
    Reminder: please update your payment
  3. Day 7
    Action needed: your subscription is at risk
  4. Day 12
    Final notice: payment overdue
  5. The moment the invoice is paid
    Reminders 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.

Revenue that fails every month
$500
Won back at your win-back rate
$150 per month
That is $1,800 a year, about 5 times what Dunly costs.

Everything in one place

One plan covers every section. We list what already works today, and mark the rest as coming.

Ready

Recovery

Emails that win back failed payments, in your customer's language, with your own wording.

Ready

Customers

Every customer's history, plus groups like repeat failures and people who opened the link but didn't pay.

Ready

Invoices

Every invoice that failed, with its status, a link to Stripe and a CSV export.

Ready

Workflow

Choose which of the four emails go out and when, and skip one if the customer already opened the link.

Ready

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.

Ready

Experiments

Test two versions of your first email and see which one gets paid more.

Ready

Insights

Which email works, how fast the money returns and what is likely still on its way, in plain arithmetic.

Beta

Revenue analytics

Monthly revenue, churn and lifetime value from your Stripe data, using an optional read-only key.

Ready

Money alerts

A message when a customer disputes a charge, when you refund one, and when monthly revenue falls by 10% or more.

Coming soon

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.

StripeFailed payments and revenue
SlackAlerts in your channel
DiscordAlerts in your server
WebhooksSigned events to any URL

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

  1. Stripe reports the failure.
  2. Within 15 minutes the customer gets an email asking them to update the card.
  3. They pay on Stripe's secure page.
  4. The payment is marked as recovered.

Bank declined

  1. The bank refuses the charge.
  2. Dunly sends a calm reminder, and the next ones on your schedule.
  3. The customer tries another card or asks their bank.
  4. You see the result on your dashboard.

Customer doesn't respond

  1. The first email goes unopened.
  2. The follow-ups go out as you set them in Workflow.
  3. An automation can tell you when the same customer fails twice.
  4. 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.

Only used to tell you when it ships.
Planned

Paddle

Recover failed payments from Paddle as well as Stripe.

Planned

Lemon Squeezy

The same recovery emails for Lemon Squeezy stores.

Planned

Dunly AI

Ask why revenue changed and get an answer from your own numbers.

Planned

Team members

Invite a teammate to see the dashboard without sharing your login.

Planned

Send from your own domain

Recovery emails that come from your address, not ours.

Planned

Telegram alerts

The same alerts you get in Slack and Discord, in Telegram.

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.

Counted

Paid after we emailed

At least one reminder went out before the customer paid. That money is in your account partly because of Dunly.

Shown, not counted

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.

Signed message

Dunly

Checks the signature, then writes the email in your customer's language.

Email with a link

Your customer

Gets a plain email under your product's name.

One click

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 Dunly

Why 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.

$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
Start 7-day free trial

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.

Start 7-day free trial