CHARGEBACKSSTRIPE

Stripe early fraud warnings: refund or fight?

What a Stripe early fraud warning is, what the actionable flag means, how refunds and monitoring programs interact, and how to decide charge by charge.

Published 6 min read

An early fraud warning on Stripe is the card issuer telling you, before any dispute exists, that a cardholder has reported a charge as fraud. For a subscription business that raises an awkward question: do you refund now and lose the revenue for sure, or wait and defend the charge if a dispute arrives?

This guide explains what an early fraud warning (EFW) is on Stripe, what you can and cannot do with one, and a practical way to decide. It sticks to Stripe’s own pages: the Early Fraud Warning API reference, how disputes work, dispute and fraud monitoring programs and Stripe’s monitoring program FAQ (all accessed November 2026). Where Stripe’s docs do not answer a question, we say so.

What an early fraud warning is

Stripe’s API reference describes the object plainly: an early fraud warning indicates that the card issuer has notified Stripe that a charge may be fraudulent. It is not a dispute. No money has moved, and there is nothing to respond to.

Each warning carries a few fields worth knowing:

Field What it holds
charge The charge the warning is about
payment_intent The PaymentIntent behind that charge
fraud_type The issuer’s label: card_never_received, fraudulent_card_application, made_with_counterfeit_card, made_with_lost_card, made_with_stolen_card, unauthorized_use_of_card or misc
actionable Whether you can still do something about it
created When the warning was created

The actionable flag

Stripe defines actionable precisely: a warning is actionable if the charge has not received a dispute and has not been fully refunded. Once either happens, the flag turns false. In practice this flag is your to-do list. An actionable warning is one where your decision still matters.

The webhooks

Stripe sends radar.early_fraud_warning.created when a warning is created and radar.early_fraud_warning.updated when it changes (for example, when it stops being actionable). You can also list warnings through the /v1/radar/early_fraud_warnings endpoint, which is useful for a daily review if you do not want to act on webhooks in real time.

What Stripe itself suggests

Stripe’s API reference states the option directly: you may wish to proactively refund a charge that receives an EFW, in order to avoid receiving a dispute later. That is a suggestion, not a rule, and Stripe does not refund every warning on your behalf. Its support article on getting started with fraud and disputes says Stripe may proactively refund a payment that receives an early fraud warning only in certain, comparatively rare, situations.

If you use Radar for Fraud Teams, Stripe also documents a preview feature called Smart Refunds on its reviews page: Radar estimates the likelihood of a dispute after a payment completes, and when that likelihood is high it adds a refund recommendation to your Reviews list. It is a recommendation you act on, not an automatic refund.

What a refund changes, and what it does not

This is where most teams get confused. A refund and a warning are tracked separately.

  • A refund can prevent a dispute. That is the whole point of Stripe’s suggestion above.
  • A refund does not erase the warning. Stripe’s monitoring programs page says early fraud warnings, although they are not disputes, are considered fraudulent regardless of their outcome, and that Visa’s VAMP program includes them in its calculations.
  • Stripe’s own rates and the networks’ rates differ. Stripe’s monitoring program FAQ notes that card networks such as Visa and Mastercard count these when they calculate your dispute and fraud rates on their network, even where Stripe’s own dispute and fraud rates do not.

So refunding is not a way to make fraud disappear from your record. It is a way to avoid the cost and work of a dispute on top of the fraud report.

What a dispute costs if you wait

If you do not refund and the cardholder disputes, Stripe’s how disputes work page describes what follows:

  1. Stripe notifies you through the Dashboard, email, webhooks and the API.
  2. Stripe debits the disputed amount plus a dispute fee from your balance.
  3. If you counter the dispute, a further dispute countered fee applies, which Stripe returns if you win. Unless your Stripe contract says otherwise, Stripe never returns the dispute received fee.
  4. You get one opportunity to respond. Stripe forwards your response and files to the issuer immediately, and you cannot edit it or add files afterwards.

Fee amounts vary by country and contract, so check your own Stripe pricing rather than relying on a figure from a blog. The response deadline is shown on each dispute in your Dashboard and is the one that counts.

Refund or wait: a practical way to decide

Stripe does not give a universal rule, and neither will we. But the decision is easier if you look at the same few signals every time. For a subscription business, the useful ones are:

Signal Leans toward refund Leans toward waiting
Account activity No logins or usage since signup Regular, ongoing use of the product
Billing history First payment on a new account Many months of paid renewals on the same card
fraud_type made_with_stolen_card, made_with_lost_card, fraudulent_card_application misc with an account that looks genuine
Amount Small relative to the cost and time of a dispute Large annual plan where evidence is strong
Customer contact No reply, or the email bounces The customer recognizes the purchase when you ask

A few practical rules sit on top of the table:

  1. Stop future charges first. If the card really was stolen, the next renewal will produce another warning or dispute. Cancel the subscription or remove the card before anything else.
  2. Refund the whole charge, not part of it. Stripe’s actionable flag only clears on a full refund, and a partial refund leaves a disputable balance.
  3. Do not refund blindly. Refunding every warning means every warning costs you the full amount, including ones that would never have become disputes.
  4. Write down why. For each warning, record the signals you looked at and what you decided. After a few months you will see which kinds of warnings actually turn into disputes for your business.
  5. Fix the source. Clusters of warnings from new signups usually point to card testing or a leaky signup flow. Stripe’s Radar rules are the place to tighten that.

When waiting makes sense

Waiting is reasonable when the account shows real, sustained use by the cardholder. A family member using a parent’s card, or an employee using a company card without telling finance, can produce a fraud report on an account that has been active for months. If a dispute follows, that usage is your evidence. Keep it ready: login history, feature usage, emails sent and answered, the terms the customer accepted at signup and any cancellation attempts.

When refunding is the obvious call

Refund quickly when the account was created and paid in one go with no activity afterward, when several warnings arrive on accounts created around the same time, or when the amount is too small to justify the time a dispute takes. In those cases the money is very unlikely to stay with you, and the dispute adds its own cost on top.

A weekly routine that takes ten minutes

  1. List actionable warnings (filter on actionable being true).
  2. For each one, open the customer and check usage, history and the fraud_type.
  3. Decide: refund and cancel, or keep and prepare evidence.
  4. Log the decision and the reason.
  5. Once a month, compare decisions with what happened: which kept charges were later disputed, and which disputes you won.

Doing this with NoChurn

NoChurn connects to Stripe and, when a dispute does arrive, gathers the evidence automatically: cancel flow answers, emails sent, product usage you send by API and support conversations from your help desk. It drafts a reply with AI, and nothing is sent to Stripe until a person on your team has reviewed it. The refund decision on an early fraud warning stays yours, made in Stripe. The churn score and custom data help you see which accounts look genuine. See NoChurn + Stripe.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover