Know how close you are to a payout freeze in 60 seconds — and take away the reasons it usually happens.
Payouts on hold. A banner that says your account is under review. A dispute due in 7 days. This kit shows your risk in real numbers, closes the leaks that cause it, and gives you the exact words for each case.
Runs 100% in your browser. Nothing is sent anywhere — not even to me.
7 pieces. Each one does one job, in minutes.
Your rate against 6 official Visa, Mastercard and Stripe lines, your risk zone, and how many more disputes you can take this month.
Descriptor, policies, checkout, 3DS, Radar, delivery logs, subscriptions, monitoring. Score yourself at the end.
One per Stripe category: what the bank needs to see, evidence mapped to Stripe's fields, and a fill-in rebuttal letter.
Give it the dispute, the order and your logs. Get fight-or-accept, an evidence plan and a one-page rebuttal. It never invents evidence.
Hour by hour: which of the 4 situations you're in, the evidence pack, the one reply to send, and how to keep selling.
One paste-in prompt. No install, works in any AI chat.
Receipt, trial and renewal reminders, cancellation, refund, "checkout moved". Each one closes a common reason to dispute.
Open any of them to read it, or copy the whole thing in one click.
Stripe category: fraudulent · also use for unrecognized
Typical codes: Visa 10.4 (card-absent fraud) · Mastercard 4837 (no cardholder authorization), 4863 (does not recognize) · Amex F29, 176
The claim: "I didn't make this purchase" or "I don't recognize this charge." Stripe notes that "unrecognized" is "effectively indistinguishable from the Fraudulent reason" (Stripe).
One or more of these (Stripe: dispute categories):
| Situation | Decision |
|---|---|
| You see logins and usage after purchase from the same IP/device as the purchase, and the email matches the cardholder | Fight |
| Returning customer with 2+ undisputed payments on the same card, 120–364 days old (Visa) | Fight with CE 3.0 |
| Payment was 3DS-authenticated | Fight (Stripe adds 3DS evidence) |
| Account was created minutes before purchase, never used, IP country ≠ card country, disposable email | Accept. This is probably real fraud. Revoke access. Add a Radar rule. |
| Several payments on different cards from the same IP in one hour | Accept all of them, revoke access, and look at card testing defenses |
From Stripe: Visa CE 3.0:
merchandise or servicesIf eligible, Stripe usually pre-fills the fields. Don't edit pre-filled CE 3.0 fields: Stripe warns that changes can affect eligibility (Stripe). Still fill in the normal evidence too, in case the CE 3.0 submission is rejected.
| Evidence | Stripe field | What to put in it |
|---|---|---|
| Customer IP at purchase | customer_purchase_ip | From your checkout logs or the Stripe payment |
| Customer name | customer_name | As entered at checkout |
| Customer email | customer_email_address | The account email |
| Access and activity logs | access_activity_log | Logins, downloads, feature use after payment, with IPs and timestamps. Highlight matches with the purchase IP or device. |
| Other evidence | uncategorized_file / uncategorized_text | Device location at time of purchase; device ID; earlier undisputed payments on the same card; any proof a household member made it; CVC check result if it failed but was approved or was unchecked |
| Customer communication | customer_communication | Any email from the customer's address after purchase (support requests, replies to onboarding) |
Re: Dispute on charge [CHARGE_ID], [AMOUNT] [CURRENCY], [PURCHASE_DATE]
We believe this payment was made by the cardholder, and ask that this dispute be reversed.
[PRODUCT_NAME] is a [one-line description, e.g. "web-based AI writing tool, billed monthly"].
The customer bought [PLAN] on [DATE] at [TIME TZ] using the email [EMAIL].
Timeline
1. [DATE TIME]: Purchase from IP [IP], [CITY/COUNTRY], device [DEVICE/BROWSER]. (Exhibit A)
2. [DATE TIME]: Access email delivered to [EMAIL]. (Exhibit B)
3. [DATE] to [DATE]: [N] logins from the same IP/device as the purchase, using [specific features: e.g. "created 37 documents"]. (Exhibit C)
4. [If applicable] [DATE]: Customer emailed support from [EMAIL] about [topic], confirming they had access. (Exhibit D)
5. [If applicable] The same card paid us on [DATE] and [DATE] without any dispute. (Exhibit E)
6. [DATE]: Dispute opened. No contact from the customer before the dispute. / The customer contacted us on [DATE] and said [summary].
[If 3DS] The payment was authenticated with 3D Secure.
[If CE 3.0] This dispute qualifies for Visa Compelling Evidence 3.0; matching prior transactions are included.
Evidence attached
A. Purchase record with IP and device
B. Delivery email log
C. Account activity log after purchase
D. Customer emails
E. Prior undisputed payments on the same card
We ask that this dispute be reversed in our favor.
[YOUR NAME], [BUSINESS NAME], [SUPPORT EMAIL]
Recognizable descriptor. Receipts with your brand and support email. Collect IP and email on every payment. 3DS for elevated risk. Refund early fraud warnings on small charges.
Made by Dan Shipped — @danshipped. Not legal advice.
Stripe category: product_not_received
Typical codes: Visa 13.1 (merchandise/services not received) · Mastercard 4855 · Amex C08
The claim: "I paid and never got access" or "the service was never provided."
From Stripe: dispute categories:
For digital products, Stripe says to "focus on evidence of usage, login, or download", because there's no tracking number.
| Situation | Decision |
|---|---|
| Logs show login, download, or use after payment | Fight |
| The delivery date hasn't arrived (pre-sale, cohort starts later) and it was stated at purchase | Fight |
| Access email bounced, account never activated, no logins | Accept or refund. Fix your delivery. |
| Outage or bug blocked access during the period they paid for | Accept (or partial refund if they used part of it) |
| Evidence | Stripe field | What to put in it |
|---|---|---|
| Customer IP at purchase | customer_purchase_ip | |
| Customer name | customer_name | |
| Customer email | customer_email_address | |
| Delivery and access logs | access_activity_log | Proof the customer accessed or downloaded the product after paying: IPs, timestamps, actions. Include the access email send/delivery log. |
| Customer communication | customer_communication | Any messages. If they never contacted you before disputing, say so clearly. |
| Other | uncategorized_file / uncategorized_text | Device location and ID; proof the delivery date hasn't arrived yet; if only part was undelivered, show the disputed amount exceeds the undelivered part |
Re: Dispute on charge [CHARGE_ID], [AMOUNT] [CURRENCY], [PURCHASE_DATE]
The customer received and used the product. We ask that this dispute be reversed.
[PRODUCT_NAME] is a [digital product / web app]. Access is delivered [instantly by email / by account login] at [URL, as text, not a link].
Timeline
1. [DATE TIME TZ]: Purchase of [PLAN/PRODUCT] by [EMAIL]. (Exhibit A)
2. [DATE TIME TZ]: Access email sent and delivered to [EMAIL]. (Exhibit B)
3. [DATE TIME TZ]: First login / first download from IP [IP]. (Exhibit C)
4. [DATE] to [DATE]: [N] sessions; [specific usage: "downloaded 3 files", "completed 6 of 10 lessons", "made 1,204 API calls"]. (Exhibit C)
5. [DATE]: Dispute opened. The customer did not contact us before opening it. / The customer wrote on [DATE]; we replied within [X] hours. (Exhibit D)
[If not yet due] The purchase was for [cohort/program] starting [DATE], as shown on the checkout page (Exhibit E). The service is not due yet.
Evidence attached
A. Order record
B. Delivery email log
C. Access and usage log after purchase
D. Customer communication (or statement that none was received)
E. Checkout page showing the delivery date [if applicable]
We ask that this dispute be reversed in our favor.
[YOUR NAME], [BUSINESS NAME], [SUPPORT EMAIL]
Instant welcome email with a big access button. A "didn't get it? reply here" line on the receipt. Log first login and first download. Chase unactivated accounts at 24 hours.
Made by Dan Shipped — @danshipped. Not legal advice.
Stripe category: product_unacceptable
Typical codes: Visa 13.3 (not as described or defective), 13.5 (misrepresentation) · Mastercard 4853 · Amex C31, C32
The claim: "It's not what was advertised," "it doesn't work," or "it was misrepresented."
From Stripe: dispute categories:
Stripe also says to include your refund policy and how you disclosed it. Depending on the network, the issuer "might or might not take this into consideration, but it can't hurt your case".
| Situation | Decision |
|---|---|
| Your sales page matches what they got, they used it, and they never asked for help | Fight |
| They asked for a refund within your policy window and you didn't give it | Accept. Honor your policy next time. |
| Your page promised results ("make $5k in 30 days") | Accept and rewrite the page. Misrepresentation claims are hard to beat, and income claims are a restricted-business risk. |
| A real bug made the core feature unusable during their period | Accept or partial refund |
| Evidence | Stripe field | What to put in it |
|---|---|---|
| Product description as shown before purchase | product_description / uncategorized_file | Screenshot of the sales page and checkout as of the purchase date (keep dated archives). Highlight the parts the claim is about. |
| Customer communication | customer_communication | Every message. If they never contacted you, say so. |
| Access and usage logs | access_activity_log | Shows the product worked and was used: IPs, timestamps, actions |
| Refund policy + disclosure | refund_policy, refund_policy_disclosure | The policy text, and where it was shown before purchase (checkout screenshot) |
| Other | uncategorized_file / uncategorized_text | If partly used, show the dispute exceeds the unused value; any replacement or fix you provided; any refund already issued |
Re: Dispute on charge [CHARGE_ID], [AMOUNT] [CURRENCY], [PURCHASE_DATE]
The product was described accurately and worked as described. We ask that this dispute be reversed.
What we sold: [PRODUCT_NAME]. Before purchase, the sales page stated: "[exact quote of the key promise]" (Exhibit A, captured [DATE]).
What the customer received: [exactly that: e.g. "access to the web app with features X, Y, Z on the Pro plan"].
Timeline
1. [DATE]: Purchase. The customer accepted our terms, which include our refund policy: "[short quote]" (Exhibit B).
2. [DATE] to [DATE]: The customer used the product [N] times, including [specific actions]. (Exhibit C)
3. [DATE]: [The customer never contacted support before the dispute.] / [The customer asked about X. We replied on DATE with Y.] (Exhibit D)
4. [DATE]: Dispute opened.
The customer's claim is "[cardholder's words from the bank documents]". This does not match the product as described: [one or two factual sentences].
[If applicable] Our policy offers a refund within [N] days of purchase. The customer did not request one during that period.
Evidence attached
A. Sales page and checkout as shown before purchase
B. Terms and refund policy as accepted at checkout
C. Usage log after purchase
D. Customer communication
We ask that this dispute be reversed in our favor.
[YOUR NAME], [BUSINESS NAME], [SUPPORT EMAIL]
Describe features and limits plainly. No outcome promises. Show the plan comparison at checkout. Offer a short no-questions refund window: a refund costs less than a dispute and doesn't touch your rate.
Made by Dan Shipped — @danshipped. Not legal advice.
Stripe category: subscription_canceled
Typical codes: Visa 13.2 (canceled recurring) · Mastercard 4841 · Amex C28
The claim: "I canceled, and you kept charging me." This is the most common category for SaaS and memberships.
From Stripe: dispute categories:
Stripe also lists, for digital products: the controls you give customers to manage automated billing and monitor usage; that the product was used before the billing date; that the customer has the cancellation date wrong (e.g. it was set for a future date); and that a payment was an installment, not a true recurring charge (some networks only allow this reason code for recurring payments).
| Situation | Decision |
|---|---|
| No cancellation in your system, the customer kept logging in after the charge | Fight |
| They canceled after the renewal charge, and your policy (shown at checkout) says no refunds on renewals | Fight, but consider a refund. This is where most "friendly" disputes come from. |
| They emailed "please cancel" before renewal and you missed it | Accept. Fix your support process. |
| Your app had no self-serve cancel, or it was hidden | Accept and add an in-app cancel button this week |
| No renewal reminder before an annual charge | Probably accept. Add reminders. |
| Evidence | Stripe field | What to put in it |
|---|---|---|
| Cancellation policy as shown | cancellation_policy | The exact text |
| How and when it was shown before purchase | cancellation_policy_disclosure | "Shown in full at checkout above the Subscribe button, and in the confirmation email (Exhibit B)." |
| Why this charge is valid | cancellation_rebuttal | "No cancellation request was received before the renewal on [DATE]. Self-serve cancellation is available in Settings → Billing." |
| Renewal notice or continued use | customer_communication | The renewal reminder email you sent, and/or proof of use after the date they claim they canceled |
| Other | uncategorized_file / uncategorized_text | Billing controls you offer (cancel button, usage dashboard, spend caps); login log after the claimed cancel date; account audit log showing no cancellation event |
Re: Dispute on charge [CHARGE_ID], [AMOUNT] [CURRENCY], renewal on [RENEWAL_DATE]
The subscription was active and was not canceled before this renewal. We ask that this dispute be reversed.
Subscription terms: [PLAN], billed [monthly/yearly] at [PRICE]. At signup on [DATE], the customer actively agreed to recurring billing (Exhibit A: checkout with consent checkbox and full terms).
Cancellation: customers can cancel anytime in Settings → Billing, with one click. Cancellation takes effect at the end of the paid period. This was stated at checkout and in the welcome email (Exhibit B).
Timeline
1. [DATE]: Subscription started; [N] previous renewals were paid without dispute.
2. [DATE]: Renewal reminder sent to [EMAIL], [N] days before the charge, with a cancel link. (Exhibit C)
3. [RENEWAL_DATE]: Renewal charge. No cancellation request existed in our system or support inbox. (Exhibit D: account audit log)
4. [DATE] to [DATE]: The customer logged in [N] times after the renewal and used [features]. (Exhibit E)
5. [DATE]: Dispute opened. [No cancellation or refund request was ever sent to us.]
Evidence attached
A. Checkout terms and consent
B. Welcome email with cancellation instructions
C. Renewal reminder email
D. Account audit log (no cancellation event)
E. Usage after renewal
We ask that this dispute be reversed in our favor.
[YOUR NAME], [BUSINESS NAME], [SUPPORT EMAIL]
In-app cancel button. Instant cancellation confirmation. Reminder about 7 days before yearly renewals and 2–3 days before monthly ones. Refund in full if someone cancels the day after a renewal.
Made by Dan Shipped — @danshipped. Not legal advice.
Stripe category: duplicate
Typical codes: Visa 12.6.1 (duplicate processing), 12.6.2 (paid by other means) · Mastercard 4834 · Amex P08, C14
The claim: "I was charged twice for the same thing" or "I already paid another way."
From Stripe: dispute categories:
| Situation | Decision |
|---|---|
| Two charges for two different things (e.g. a plan + an add-on, two seats, two months) | Fight |
| An upgrade and a prorated charge that look alike | Fight, and explain the proration in one sentence |
| A real double charge (retry bug, double-click) | Accept, refund the duplicate if not already disputed, fix the integration. Stripe says your integration should handle errors without double-charging. |
| They paid by invoice/bank transfer and also by card for the same thing | Accept |
| Evidence | Stripe field | What to put in it |
|---|---|---|
| The other charge's ID | duplicate_charge_id | The ch_... ID of the payment the customer thinks is the duplicate |
| Why they're different | duplicate_charge_explanation | "Charge 1 was the Pro plan for March. Charge 2 was 500 extra credits bought on March 12." |
| Receipts for both | duplicate_charge_documentation | Both receipts side by side, each with its line items |
| Customer communication | customer_communication | Any messages |
| Other | uncategorized_file / uncategorized_text | Usage showing both items were delivered (two seats in use, credits consumed); any refund already issued |
If no duplicate charge exists, Stripe says you can open All Fields from the gear menu in the Dashboard and give other evidence instead.
Re: Dispute on charge [CHARGE_ID], [AMOUNT] [CURRENCY], [DATE]
These are two separate purchases, not a duplicate. We ask that this dispute be reversed.
Charge 1: [OTHER_CHARGE_ID], [DATE], [AMOUNT], for [ITEM 1]. (Exhibit A)
Charge 2 (disputed): [CHARGE_ID], [DATE], [AMOUNT], for [ITEM 2]. (Exhibit B)
The difference: [one sentence, e.g. "Charge 1 renewed the monthly plan. Charge 2 is a one-time purchase of 500 credits that the customer made from the Billing page at 14:32 UTC."]
Both were delivered: [e.g. "The 500 credits were added at 14:32 UTC and 431 have been used since." (Exhibit C)]
Evidence attached
A. Receipt for charge 1
B. Receipt for charge 2
C. Delivery/usage of the second item
We ask that this dispute be reversed in our favor.
[YOUR NAME], [BUSINESS NAME], [SUPPORT EMAIL]
Itemized receipts. Different statement descriptor suffixes per product type (e.g. SHIPPED* PRO PLAN vs SHIPPED* CREDITS). Idempotency keys on payment requests so a retry can't charge twice (Stripe: error handling).
Made by Dan Shipped — @danshipped. Not legal advice.
Stripe category: credit_not_processed
Typical codes: Visa 13.6 (credit not processed), 13.7 (canceled merchandise/services) · Mastercard 4860 · Amex C02, C05
The claim: "I was promised a refund and never got it" or "I canceled and should get money back."
From Stripe: dispute categories:
For digital products, Stripe also suggests showing whether the customer used the product in whole or in part, and whether the dispute amount exceeds the unused portion.
| Situation | Decision |
|---|---|
| You already refunded (full or the agreed partial) | Fight, with the refund record. Note: a partially refunded payment can still be disputed for the full amount. |
| They're outside your refund window, and the policy was shown in full before purchase | Fight |
| You promised a refund by email and didn't send it | Accept |
| Your policy was only a link in the footer | Probably accept, and fix checkout. Stripe says a link alone may not count as disclosure (Stripe). |
Note: you can't refund outside the dispute process once a dispute exists (Stripe). If you agree with the customer, accept the dispute.
| Evidence | Stripe field | What to put in it |
|---|---|---|
| Refund / cancellation policy | refund_policy, cancellation_policy | The policy text as shown at the time of purchase |
| How it was shown before purchase | refund_policy_disclosure, cancellation_policy_disclosure | Checkout screenshot with the full text and the consent checkbox |
| Why no (further) refund is owed | refund_refusal_explanation, cancellation_rebuttal | "The policy offers refunds within 14 days. The request came on day 41." Or: "A partial refund of $X was issued on DATE for the unused months." |
| Customer communication | customer_communication | The refund request and your reply |
| Other | uncategorized_file / uncategorized_text | Refund record (Stripe refund ID, date, amount); usage showing the product was used; withdrawal message if any |
Re: Dispute on charge [CHARGE_ID], [AMOUNT] [CURRENCY], [PURCHASE_DATE]
[Option A] The refund the customer was entitled to has already been issued.
[Option B] The customer is not entitled to a refund under the policy shown before purchase.
We ask that this dispute be reversed.
Policy shown at checkout: "[exact quote of the refund policy]" (Exhibit A). The customer accepted it on [DATE] by [checking the box / clicking Subscribe].
Timeline
1. [DATE]: Purchase of [PRODUCT/PLAN].
2. [DATE] to [DATE]: Usage: [specific actions]. (Exhibit B)
3. [DATE]: Customer requested a refund, [N] days after purchase. (Exhibit C)
4. [Option A] [DATE]: We refunded [AMOUNT], refund ID [re_...]. It is visible on the customer's statement within [X] business days. (Exhibit D)
[Option B] [DATE]: We replied explaining the [N]-day refund window and offered [cancellation of future renewals / credit / partial refund]. (Exhibit C)
5. [DATE]: Dispute opened.
Evidence attached
A. Refund policy as shown at checkout, with acceptance
B. Usage log
C. Customer communication
D. Refund record [if applicable]
We ask that this dispute be reversed in our favor.
[YOUR NAME], [BUSINESS NAME], [SUPPORT EMAIL]
Refund the same day you agree to. Send a refund confirmation email with the amount and the expected timing (template in templates/customer-messages.md). Keep policy versions with dates.
Made by Dan Shipped — @danshipped. Not legal advice.
Copy, fill the [BRACKETS], send from an address a human reads. Short on purpose. People skim billing emails.
Check your local consumer rules for required wording on subscriptions, renewals, and refunds. Not legal advice. Last verified: October 2026.
Subject: Your [PRODUCT] access + receipt
Hi [FIRST_NAME],
Thanks for buying [PRODUCT]. Here's everything in one place.
Access it here: [LOGIN_URL]
Your login email: [EMAIL]
What you paid: [AMOUNT] [CURRENCY] for [PLAN], [one-time / billed monthly / billed yearly].
On your card statement it shows as: [STATEMENT_DESCRIPTOR]
[If subscription] Your next charge: [AMOUNT] on [DATE]. Cancel anytime in Settings → Billing, one click.
Refund policy: [one sentence, e.g. "Full refund within 14 days, just reply to this email."]
Stuck? Reply to this email. A human (me) reads it.
[NAME], [BUSINESS]
Why it works: the "shows as" line kills most "I don't recognize this charge" disputes before they start.
Subject: The one thing to do first in [PRODUCT]
Hi [FIRST_NAME],
Most people get their first result in [PRODUCT] by doing one thing: [SINGLE_ACTION, e.g. "connecting their Stripe account and running the first report"].
It takes about [N] minutes: [DEEP_LINK]
If something isn't working, reply here and I'll fix it with you.
[NAME]
Subject: Your [PRODUCT] trial ends on [DATE]
Hi [FIRST_NAME],
Your free trial of [PRODUCT] ends on [DATE].
If you do nothing, your card ending in [LAST4] will be charged [AMOUNT] [CURRENCY] on [DATE], then [every month / every year] until you cancel.
Keep it: no action needed.
Cancel: [CANCEL_LINK] (one click, no call, no email needed).
Questions? Reply here.
[NAME], [BUSINESS]
Visa requires a trial reminder at least 7 days before a free or promotional trial ends, with a simple way to cancel (Visa). Mastercard requires one 3 to 7 days before the end of a digital-goods trial (Braintree summary). Sending at 7 days satisfies both.
Subject: [PRODUCT] renews on [DATE] for [AMOUNT]
Hi [FIRST_NAME],
Heads up: your [PLAN] renews on [DATE]. We'll charge [AMOUNT] [CURRENCY] to the card ending in [LAST4]. It will show as [STATEMENT_DESCRIPTOR].
Want to keep it? Nothing to do.
Want to change or cancel? [BILLING_LINK]
Over the last [period] you [one usage line, e.g. "generated 214 reports"].
[NAME]
Timing follows Stripe's suggestion (Stripe).
Subject: Canceled: you won't be charged again
Hi [FIRST_NAME],
Your [PRODUCT] subscription is canceled. You won't be charged again.
You keep access until [DATE] (the end of the period you paid for).
Cancellation reference: [CANCELLATION_ID], [DATE TIME TZ]
If this was a mistake, you can restart anytime: [LINK]
If you have a minute, reply with the one reason you left. I read every answer.
[NAME]
Keep the cancellation ID. It's your best evidence in a "subscription canceled" dispute.
Subject: Refund sent: [AMOUNT] [CURRENCY]
Hi [FIRST_NAME],
I've refunded [AMOUNT] [CURRENCY] to your card ending in [LAST4]. Refund reference: [REFUND_ID].
Banks usually take [5–10] business days to show it. If you don't see it by [DATE], reply here and I'll send the reference your bank needs.
[If access ends] Your access to [PRODUCT] ends today.
Thanks for giving it a try.
[NAME]
Send within 24 hours of a dispute. Be kind. Never threaten. Keep the reply for your evidence.
Subject: About your [PRODUCT] charge on [DATE]
Hi [FIRST_NAME],
Your bank told us you disputed a charge of [AMOUNT] from [STATEMENT_DESCRIPTOR] on [DATE]. That's [PRODUCT], which you [bought / subscribed to] with [EMAIL].
If it looked unfamiliar: no problem, that happens. If something went wrong with the product or billing, tell me and I'll make it right.
If you recognize it now, you can ask your bank to withdraw the dispute.
[NAME], [BUSINESS], [SUPPORT_EMAIL]
Note: once a dispute is open, you can't issue a separate refund for that payment (Stripe). If the customer is right, accept the dispute in the Dashboard.
Subject: Quick note: new checkout link for [PRODUCT]
Hi [FIRST_NAME],
We've moved our checkout to a new payment provider. Same product, same price.
New checkout: [NEW_CHECKOUT_URL]
On your statement, new purchases will show as: [NEW_DESCRIPTOR]
Nothing changes for anything you've already bought. Your access stays the same.
[NAME]
Say only what's true. You don't owe anyone the backstory, and you shouldn't guess about the outcome of a review in writing.
Subject: Action needed: keep your [PRODUCT] subscription running
Hi [FIRST_NAME],
We've moved billing to a new payment provider. To keep your [PLAN] running after [DATE], please add your card again here (about 60 seconds):
[UPDATE_LINK]
Your price stays [AMOUNT] [CURRENCY] per [PERIOD]. Your next charge will be on [DATE] and will show as [NEW_DESCRIPTOR].
If you'd rather not continue, do nothing and your access ends on [DATE]. No charge.
[NAME]
Clear statement of the new descriptor plus "do nothing = no charge" prevents a wave of "unrecognized" disputes after a migration.
Made by Dan Shipped — @danshipped. Not legal advice.
For when: Stripe has paused your payouts, put a reserve on your balance, asked for documents, restricted your account for risk, or closed it.
Read this now, while nothing is wrong. The best hour of this plan is the one you spend before you need it (see "Before it happens" at the end).
Not legal or financial advice. This is a practical plan, not a promise of any outcome. Stripe decides based on its own risk review, and it doesn't publish all its criteria. If large sums are at stake, talk to a payments lawyer or accountant. Last verified: October 2026.
Don't reply yet. Don't post about it publicly. Don't open a new account or reroute payments in a hurry: a new account tied to the same people and business, opened right after a restriction, looks like an attempt to get around the review.
Look in 3 places: the Dashboard banner, your email (including spam), and Dashboard → Balance.
| What you see | Situation | What it usually means | Can you still sell? |
|---|---|---|---|
| "Reserve" on the Balance page; email with a % and a period | A. Reserve | A share of funds is held (fixed or rolling) to cover future refunds and disputes. Released at the end of the period if not needed. | Yes. Stripe: "Reserves do not impact a business's ability to continue accepting payments." |
| Banner asking for information or verification; payouts paused | B. Info request | Stripe needs documents or details before it pays out. | Usually yes, while you respond. |
| Email about risk; charges or payouts restricted | C. Risk restriction | Stripe may pause charges, pause payouts, or reverse payments. | Maybe not. |
| Email saying the account will be closed | D. Closure | Payouts are typically held for 120 days from the notice email. You can appeal through the Dashboard. | No. |
Sources: Reserves FAQ · Why Stripe reserves funds · Unacceptable Risk Policy
Do now (15 minutes):
tools/dispute-rate-calculator.html and save a screenshot.Prepare everything, even what wasn't asked. You'll send only what's requested, but you'll have the rest ready if a second request comes. Name files clearly: 01_business_registration.pdf, 02_owner_id.pdf, etc.
Business identity
What you sell and how you deliver it
Your risk numbers, explained
Money
Existing customers come first. Keep delivering every order and every subscription you've been paid for. A freeze followed by undelivered orders becomes a wave of "not received" disputes, which turns a review into a closure.
If you can still accept payments (A, often B): keep selling normally. Pause anything that adds risk: a new ad campaign, a big launch, a new country, a new affiliate. Don't push volume through an account under review.
If you can't accept payments (C, D) and have a backup ready:
templates/customer-messages.md) only to people with open carts or upcoming orders, if relevant.If you have no backup yet: apply to one merchant of record today with an honest, complete application. Expect it to take days, not hours. Meanwhile, invoices or bank transfer for B2B customers can bridge the gap (check your local tax and invoicing rules).
Customer message (if anything visible changed):
Subject: Quick update about [PRODUCT]
Hi [FIRST_NAME],
A quick note: we're [changing our payment provider / updating our checkout].
Your access and your orders are not affected. [If billing changes: "Your next charge will show as [NEW_DESCRIPTOR]."]
If anything looks off, reply to this email and I'll sort it out personally.
[NAME], [BUSINESS]
Short, factual, no drama. Never speculate in writing about why, or about the outcome.
Send one clear, complete message through the Dashboard (or the channel Stripe asked you to use). Not ten. Answer every question asked, in the same order, and attach the matching files.
Reply template
Subject: [Account ID] – Response to your request dated [DATE]
Hello,
Thank you for reviewing our account. Below are the answers to each point you raised, with documents attached.
1. [Their first question, quoted]
[Your answer, 2–4 factual sentences.] See attachment [01_...].
2. [Their second question, quoted]
[Answer.] See attachment [02_...].
About our business
[BUSINESS_NAME] sells [PRODUCT], a [one-line description]. Customers pay [one-time / monthly / yearly] between [PRICE RANGE]. Access is delivered [instantly by email / by account login] and we keep login and usage logs for every customer.
About recent activity [if relevant]
Volume increased from about [X] to [Y] per week between [DATE] and [DATE] because of [cause]. Evidence attached [file]. Refunds in the last 90 days: [N] ([X]%). Disputes: [N] ([X]%).
What we've changed
- [e.g. Enabled 3D Secure for elevated-risk payments on DATE]
- [e.g. Changed our statement descriptor from "HZN LLC" to "SHIPPED.COM" on DATE]
- [e.g. Added in-app cancellation and renewal reminders on DATE]
We will reply within 24 hours to any further request.
[NAME], [ROLE], [BUSINESS_NAME]
[PHONE], [EMAIL]
Rules for this message: facts, numbers, dates. No anger, no threats, no "I've been a loyal customer for years". Admit what went wrong if something did, and show the fix. Reviewers respond to evidence of control, not to pressure.
templates/dispute-responses/ or the Claude skill.| Situation | What to expect | What to do |
|---|---|---|
| Reserve | A set period, then a credit review. Stripe may remove, lower, or extend it. "In some rare cases, a reserve may be required indefinitely." | Keep disputes low and refunds fast during the period. Ask for a review near the end with your new numbers. |
| Info request | Often resolved once the documents match. | Answer any follow-up within 24 hours. |
| Risk restriction | Depends on Stripe's review. | Keep the backup live. Don't move the backup's volume back until you're cleared. |
| Closure | Funds typically held 120 days from the notice, minus refunds and disputes. | Appeal once with evidence. Answer every dispute in the meantime: lost disputes come out of the held balance. |
The thing to avoid at all costs: a MATCH or VMSS listing. These last 5 years and most processors automatically reject listed businesses and owners. Mastercard code 4 applies with chargebacks over 1% of monthly transactions and $5,000+ in the same month. Winning disputes later doesn't remove it (Stripe: high-risk merchant lists). If your rate is high, cut it now: refund aggressively, stop the traffic source, add 3DS.
Made by Dan Shipped — @danshipped. Not legal or financial advice.
How to use it: do a first pass in 20 minutes. Tick what's done. Put a date next to what isn't. Repeat once a quarter, and before every launch.
Items marked [S] come straight from Stripe's docs (source linked at the end of each section). Items marked [N] come from card-network rules. Unmarked items are my own practice: common sense for digital sellers, not an official rule.
Not legal or financial advice. Policies and subscription terms must also follow your local consumer laws. Check them. Last verified: October 2026.
< > \ ' " *, reflects your business (DBA) name. A bare common word doesn't count. [S]SHIPPED* PROMPT KIT). The full string must still fit 22 characters, including the * and the space. [S]Sources: Statement descriptors · Best practices · Monitoring programs
Sources: Website checklist · Restricted businesses
Sources: Best practices · Monitoring programs · Visa CE 3.0
Request 3D Secure if :risk_level: != 'normal' and :amount_in_usd: > 25. [S]Request 3D Secure if is_missing(:seconds_since_card_first_seen:). [S]Block if :is_3d_secure: and not :is_3d_secure_authenticated:. [S]Review if :is_disposable_email: and :card_funding: = 'prepaid'. [S]Notes: custom rules need a Radar plan that supports them. EU businesses: the Geo-blocking Regulation limits country-based blocking inside the EU. Sources: Radar rules · Website checklist (card testing)
You can't create these after a dispute arrives. Start now.
access_activity_log asks for exactly this. [S]Sources: Dispute categories · How disputes work · Visa CE 3.0
templates/customer-messages.md.Source: Best practices
Sources: Monitoring programs (best practices section) · Visa trial rules · Mastercard trial requirements (via Braintree)
Sources: How disputes work · Best practices
tools/dispute-rate-calculator.html or the Stripe Dashboard (Analytics shows dispute activity; Radar shows dispute rate by charge date). Know your lines:
Sources: Measuring disputes · Monitoring programs · High-risk merchant lists · Visa VAMP fact sheet · Why Stripe reserves funds
| Ticked | What it means |
|---|---|
| 45–52 | You've removed almost every common reason. Keep the weekly check. |
| 35–44 | Solid. Fix sections E (logs) and G (subscriptions) first; they matter most in disputes. |
| 20–34 | Real exposure. Do A, B and C this week. They take an afternoon. |
| Under 20 | Do the 5-minute win in the README today, then come back. |
Made by Dan Shipped — @danshipped. Not legal or financial advice.
Do it this week, then once a quarter and before every launch. Your progress is saved on this device.
Write these on a sticky note. They are the lines the card networks use. They are not Stripe's private rules, which nobody outside Stripe knows.
| Line | What happens there | Extra condition | Source |
|---|---|---|---|
| 0.5% | Visa VAMP "non-compliant" level, as listed by Stripe. Visa may assess fees. | VAMP count of 5 | Stripe |
| 0.75% | "The credit card processing industry standard recognizes dispute activity above 0.75% as excessive." | A spike can trigger action earlier | Stripe |
| 1% | Mastercard MATCH code 4 (Excessive Chargebacks), applied if an account is terminated | Chargebacks ≥ $5,000 in the same month | Stripe |
| 1.5% | Visa VAMP Excessive Merchant (AP, Canada, EU, US; lowered from 2.2% on April 1, 2026; LAC was already 1.5%) | 1,500+ fraud + disputes in the month | Visa, Stripe |
| 1.5% | Mastercard Excessive Chargeback Merchant (ECM). Fines start in month 2 ($1,000) and rise to $100,000 by month 19. | 100+ chargebacks | Stripe |
| 1.8% | Visa VMSS code 22 (Excessive Disputes), applied if an account is terminated and you didn't remediate | 1,000 disputes; ratio by amount | Stripe |
| 2.2% | Visa VAMP Excessive Merchant, CEMEA region | 150+ count and $75,000+ | Visa |
| 3% | Mastercard High Excessive (HECM). Fines up to $200,000. | 300+ chargebacks | Stripe |
The small-seller trap. The big programs need 100 or 1,500 disputes a month, so a small SaaS will almost never be fined. Don't relax. The 0.75% line and the MATCH 1% line have no big count minimum. And at low volume, 2 disputes on 150 payments is already 1.3%. Stripe itself says that if you have "fewer than 100 payments per month", one or two fraud disputes can have "a very outsized impact" on your rate (Stripe: best practices).
My working rule (an opinion, not a rule from Stripe): treat 0.5% as yellow, 0.75% as red, and 1% as an emergency. The calculator uses these zones.
In the US, Stripe charges a $15 "dispute received" fee, plus a $15 "dispute countered" fee if you submit evidence. You get the countered fee back if you win. You never get the received fee back (Stripe Support: dispute pricing). Fees differ by country, so check your own pricing page. Add the product you already delivered and the hours you spend. A US $29 sale that you fight and lose costs you $59 ($29 + $15 + $15) plus your time. Even if you win, you're out the $15 received fee, and the dispute still counts toward your rate.
Because one kit should feel like ten.
One complete answer, in their order, with labeled documents. Plus the 14-document evidence pack to build in a calm week.
Every Visa and Mastercard threshold, how each network counts your rate, and what one lost dispute really costs.
Emails 8 and 9: move customers to a new checkout or ask them to re-add a card, without a wave of "I don't recognize this" disputes.
Every other free kit I've made: Money-Back Kit, Claude OS, First 100 Customers and more.
Every kit I've made, free. Same quality, different problems.
The deep dives, when you want them.
A processor isn't trying to punish you. It's protecting itself. When a customer disputes a charge, the money comes out of the processor's side first. If you can't cover it, the processor eats the loss. So risk teams watch for signs that losses are coming.
Stripe says it uses "a combination of machine learning models, heuristics and human reviews" to detect risk (Stripe Unacceptable Risk Policy, updated July 29, 2026). It doesn't publish the exact rules. But its docs name the patterns plainly. Here they are, with sources.
Stripe lists "an unexplainable sharp increase in processing volume" as a reason it places a reserve (Stripe Support: reserves). It also says that "a sudden spike or steep upward trend" can put you in a monitoring program before you reach 0.75% (Stripe: measuring disputes).
Why it scares them: a launch that does $40,000 in 3 days on an account that did $2,000 a month looks like a business that will be gone before its refunds arrive. Card networks let cardholders dispute for up to 120 days, sometimes longer (Stripe: how disputes work). Your processor carries that tail.
What takes the reason away: tell them before it happens (see the checklist), keep your fulfillment proof clean, and keep cash in the account during the 120-day tail.
This is the big one. Stripe lists "elevated dispute activity" as a reserve reason (Stripe Support: reserves). Above certain levels, Visa and Mastercard put the account into monitoring programs with fines, and Stripe has to act (Stripe: monitoring programs).
Three facts most founders miss:
When the name on the bank statement doesn't match what the customer bought, they think it's fraud. Stripe's advice for both "fraudulent" and "unrecognized" disputes starts with the same line: make your statement descriptor "easily recognizable" and reflect "the URL or business name they would associate with their purchase" (Stripe: dispute categories).
Mismatch also shows up on the risk side. If your Stripe profile says "productivity software" and your site sells a trading course, that gap is exactly what a reviewer looks for. Stripe also says to keep one Stripe account per business: "Each Stripe account should represent a single business" (Stripe: best practices).
Stripe keeps a public list of businesses it can't support, or can support only with extra approval (Stripe: Restricted Businesses, updated September 22, 2026). The ones that most often catch digital sellers:
Plain SaaS isn't restricted. What gets founders in trouble is the marketing around the product. If your landing page promises income, read that list line by line.
Stripe's website checklist asks for a description of what you sell, the currency, customer service contacts ("something besides contact forms"), refund, cancellation and delivery policies, a privacy policy, promotion terms, and a secure checkout (Stripe: website checklist). If a reviewer can't find them, Stripe says it may ask you to add them.
Policies also matter in disputes. Stripe warns that a checkbox containing only a link to your policy may be rejected by the bank as evidence. There must be "reasonable evidence that you presented your customer with a full copy of your policies prior to their purchase" (Stripe: best practices).
Fraudsters test stolen cards on small checkouts. Digital products with instant delivery and $5 price points are a favorite target. Visa runs a separate "enumeration" monitor for card testing (300,000 attempts and a 20% ratio) (Stripe: monitoring programs). Even far below that level, a wave of declined test charges, followed by fraud warnings and disputes, shows up in your risk profile.
From October 2026, Visa's Merchant Elevated Risk Program (MERP) applies to businesses accepting Visa in Asia Pacific. It looks at new accounts before they have big volume. Visa looks at fraud, disputes and declines together and doesn't publish thresholds. Possible results include backdated fraud disputes, account closure, and a listing other processors can see (Stripe: monitoring programs).
| What you see | What it means | Can you still sell? | Source |
|---|---|---|---|
| Reserve (fixed or rolling) | A % of your funds is held for a set time to cover future refunds and disputes. | Yes. "Reserves do not impact a business's ability to continue accepting payments." | Stripe Support: reserves |
| Payouts paused, info requested | Stripe needs documents or verification before paying out. | Usually yes, while you respond. | Your Dashboard banner |
| Charges or payouts restricted for risk | Stripe may pause charges, pause payouts, or reverse payments. | Maybe not. | Unacceptable Risk Policy |
| Account closed | Payouts are typically held for 120 days from the notice email. You can appeal from the Dashboard. | No. | Unacceptable Risk Policy |
The worst case sits past all four: a listing on Mastercard's MATCH or Visa's VMSS list. Those listings last 5 years, and most processors automatically reject listed businesses and owners (Stripe: high-risk merchant lists). Everything in this kit exists so you never get near that.
Full list: checklists/prevention.md (52 checks). Here's the logic behind it, in 6 layers.
access_activity_log (Stripe: dispute categories). Start logging today. You can't create these logs after a dispute arrives.Custom rules need a Radar plan that supports them. Test each rule against your past payments before you turn it on, and start with Review before Block. Stripe's rule tester runs on your last 6 months of payments, and you can roll a rule out to a small share of traffic first (Stripe: Radar rules). These examples follow Stripe's documented syntax:
Request 3D Secure if :risk_level: != 'normal' and :amount_in_usd: > 25
Request 3D Secure if is_missing(:seconds_since_card_first_seen:)
Review if :is_disposable_email: and :card_funding: = 'prepaid'
Block if :card_country: != 'US' and :risk_level: = 'elevated'
Block if :is_3d_secure: and not :is_3d_secure_authenticated:
Why 3D Secure matters: if a payment is authenticated with 3DS, liability for most fraud disputes "typically shifts from the seller to the issuer" (Stripe: Radar rules). Two catches. Too much 3DS can lower conversion. And you still receive early fraud warnings, which count in Visa's program (Stripe: best practices).
Stripe also warns EU businesses that the Geo-blocking Regulation limits blocking customers by EU country (Stripe: Radar rules). Check your local rules before you write any country rule.
Stripe's own data: about 40% of Visa and Mastercard early fraud warnings become fraud disputes if you don't refund. Its suggestion is to refund flagged charges roughly at or below your dispute fee, and not to bother above about 135% of it (Stripe: how disputes work). The exception: if your rate is already high, or you have under 100 payments a month, refund more aggressively (Stripe: best practices).
For a SaaS with access you can revoke, refund and revoke. For a $9 template that's already been downloaded, the refund costs less than the dispute.
You get one shot. Stripe sends your response to the bank immediately, and "you can't edit the response or submit more files" (Stripe: respond to disputes). You usually have 7 to 21 days depending on the network, and missing the deadline loses the dispute automatically. The bank then takes 60 to 75 days to decide (Stripe: how disputes work).
Fight when you can prove the customer's claim is wrong. Accept (or refund at the inquiry stage) when they're right. Use this quick test:
| Question | If yes |
|---|---|
| Did they actually not get access, get charged twice, or ask for a refund your policy promised? | Accept. Fix the cause. |
| Do you have logs showing they used the product after paying? | Fight. |
| Is it a Visa fraud dispute (code 10.4) from a returning customer? | Fight. Check Visa Compelling Evidence 3.0 eligibility (below). |
| Was the payment 3DS-authenticated? | Fight. Stripe adds the 3DS proof automatically. |
| Is the amount smaller than your fees plus an hour of your time? | Probably accept, unless you need the win to discourage a repeat abuser. |
Each file in templates/dispute-responses/ gives you: what the bank needs to see, the evidence to attach for SaaS and digital products (mapped to Stripe's evidence fields), a fill-in rebuttal letter, and the mistakes that lose cases.
| Stripe category | Typical Visa / Mastercard codes | Template |
|---|---|---|
| Fraudulent (and Unrecognized) | Visa 10.4 · Mastercard 4837, 4863 | 01-fraudulent.md |
| Product not received | Visa 13.1 · Mastercard 4855 | 02-product-not-received.md |
| Product unacceptable (not as described) | Visa 13.3, 13.5 · Mastercard 4853 | 03-not-as-described.md |
| Subscription canceled | Visa 13.2 · Mastercard 4841 | 04-subscription-canceled.md |
| Duplicate | Visa 12.6.1, 12.6.2 · Mastercard 4834 | 05-duplicate.md |
| Credit not processed | Visa 13.6, 13.7 · Mastercard 4860 | 06-credit-not-processed.md |
Codes from Stripe: dispute categories. Mastercard maps some codes to more than one category, so always read the category Stripe shows on the dispute.
For Visa fraud disputes with code 10.4, you can point to the customer's own history. You need at least 2 earlier, undisputed payments on the same card, made 120 to 364 days before the disputed one. They must match on 2 main data points (IP address, device fingerprint or device ID), or 1 main plus 1 secondary (shipping address, email, customer account ID) (Stripe: Visa CE 3.0).
A monthly subscriber who suddenly disputes month 7 as "fraud" often qualifies. Stripe auto-fills what it can. Stripe can only see payments it processed, so this is one more reason to collect IP address and email on every payment.
From Stripe: respond to disputes:
skills/dispute-responder/Drop the folder into your Claude skills. Give it the dispute (reason, network code, amount, deadline), the order, your logs, your policies and any emails. It returns:
It's built never to invent evidence. If your data doesn't support a win, it tells you to accept. ChatGPT or Gemini users: paste skills/dispute-responder/PROMPT.md.
Full hour-by-hour version: playbooks/frozen-48h.md. The short version:
| When | Do this |
|---|---|
| Hour 0–1 | Find out which of the 4 levels you're at (reserve, info request, risk restriction, closure). Screenshot the banner and the email. Don't open a new account or reroute payments in a hurry. |
| Hour 1–6 | Answer exactly what was asked, with documents. Build the evidence pack: business docs, product description, policies, delivery logs, dispute history, and an explanation of any volume spike. |
| Hour 6–12 | If checkout is affected, switch to your backup checkout and tell customers (template included). Keep fulfilling every existing order. |
| Hour 12–24 | Send one clear, complete written explanation through the Dashboard. One message, not ten. |
| Hour 24–48 | Follow up once. Refund anything clearly problematic. Lower risk: pause ads, delay the next launch. Plan for the 120-day tail. |
The most useful thing you can do about a freeze is to set up the backup before you need it. That's the next chapter.
I'm building Chargeback Defender: it watches your Stripe disputes, pulls the order, login and usage data, and drafts the evidence pack for you to approve. Reply YES to my Instagram DM and you're first in line.