Dodo Shield watches every payment.succeeded, flags stolen cards, card-testers and sketchy emails — then alerts you or auto-refunds (your choice) before the bank files.
No code · test key stays in your browser · free while it’s an experiment
per dispute on Dodo — including ones Visa RDR “resolves” for you. Source: Dodo docs, Sep 2026.
Visa dispute-ratio tripwire. Cross it (or 100 disputes/mo) and fines scale toward $50k+/mo.
per manual refund, within 30 days. A $1 refund before filing beats a $30 fee after it.
Three moves, seconds apart. You choose per rule whether step two is a tap-to-refund alert or a capped auto-refund.
buyer@mailinator.com pays $49 after 4 failed attempts. The disposable-domain + card-test rules trip on payment.succeeded.
Email lands instantly. Alert-only? One click opens the Dodo payment. Auto-refund ON and under your cap? POST /refunds fires itself.
No bank filing, no $30 fee, no ratio hit. The ledger logs rule, amount and receipt — proof you acted first.
New Dodo sellers feel this the worst: two bad payments in your first fifty orders is already a 4% ratio — four times the tripwire. Sellers on Stripe learned this with lifetime bans; Dodo sellers have woken up to suspension banners and platform-wide auto-refunds with no warning. One card-tester at 3 a.m. is all it takes.
01:12 · $9 fails → 01:13 · $9 fails → 01:14 · $129 succeeds with a throwaway email. Without rules, that $129 becomes your most expensive order ever: product gone, $30 fee, ratio dented. With rules, it’s a $1 refund and a log line.
No code. No dashboard spelunking. Pattern borrowed from the best in the space, rebuilt for Dodo.
Paste a Dodo test key, copy one webhook URL, tick payment.*, dispute.*, refund.*. Green badge, done.
Disposable email, velocity, failed→succeeded, first-payment high-ticket. Thresholds editable, saved instantly.
Alert-only default, or opt-in capped auto-refund per rule. Over-cap and edge cases always fall back to manual.
The rule engine below runs entirely in your browser. Try the throwaway email, then flip on auto-refund and watch the outcome change.
Guardrails: test key first · any opted-in rule fires · one refund per payment · 30-day + balance checks · full log. Demo simulates.
Stored in localStorage only. Switch them all off and we’ll warn you.
Simulator only — nothing touches Dodo. Real wiring is documented below.
| Time | Payment | Rule | Status | Next |
|---|
Webhook URL — paste in Dodo Dashboard → Developer → Webhooks → Add endpoint:
https://dodo-shield-api.aqeelbrh65.workers.dev/webhooks/dodo
Subscribe to payment.succeeded, payment.failed, dispute.opened, dispute.won, dispute.lost, refund.succeeded · receiver verifies webhook-id / signature / timestamp, dedupes by webhook-id, then runs your rules. Backend status: live, alert-first (auto-refund server-disabled until enabled). After creating the endpoint, copy its signing secret into the receiver to activate.
Subscribe to payment.succeeded, payment.failed, dispute.opened, dispute.won, dispute.lost, refund.succeeded · verified via webhook-id / signature / timestamp (Standard Webhooks).
POST /refunds ← fires only for opted-in rules under your cap
{ "payment_id": "pay_...", "reason": "shield: disposable-email + velocity" }
Experiment pricing, stated plainly. No charge in v0 — these are the hypotheses we’ll test next.
One prevented dispute ($30 fee + ratio hit) pays for months. “Planned” means hypothesis — we measure willingness with a real pay button before charging anyone.
No — it sits in front. Dodo screens velocity, geography and failed attempts, and RDR auto-resolves Visa disputes under $100. We add seller-visible rules and act before the bank files. Note RDR resolutions still bill the $30 fee.
Your call, per rule. Default is alert-only with a one-click path into Dodo. Enable auto-refund with a max-amount cap and qualifying hits refund themselves; over-cap and edge cases always stay manual. Live firing needs the Phase-12 backend that holds your key — the demo simulates.
Yes. Friendly fraud (“forgotten subscription”) looks identical to a happy customer until the bank letter arrives. Nothing prevents 100% — the goal is catching the cheap, obvious ones first.
In v0: nothing server-side. Rules, settings and the test ledger live in your browser’s localStorage. No invented testimonials, no invented user counts — the proof here is the demo you just ran.
Stripe already has ByeDispute, Radar and a crowded shelf. Nobody builds the pre-dispute rule layer for Dodo’s indie sellers — the fastest-growing, least-served corner.
Dodo Shield v0 runs entirely in your browser. Rules, settings and the test ledger live in your browser’s localStorage; nothing is sent to any server, there is no analytics, no cookies, no account. Pasting a test key never transmits it anywhere. Clearing site data removes everything.
Provided as-is for testing with Dodo test mode. No warranty; no dispute is guaranteed preventable. Do not use live keys in v0. Refunds you issue in Dodo follow Dodo’s terms ($1/refund, 30-day window, balance rules). Operator contact is published at public launch.
Arm four rules in five minutes. The next card-tester meets a $1 refund, not a $30 dispute and a suspension banner.
Protect my first payment