Free scan

Scan for unreversed transfers — paste your charge.refunded events

Paste your last quarter of `charge.refunded` events — or raw charge objects — and the same detectors that run in FeeGuard’s production pipeline compute exactly which refunds left money stranded in connected accounts, per charge, with a CSV of ids for recovery work. No account, no API key, nothing stored.

What you can paste

Accepted shapes: single charge objects; charge.refunded webhook envelopes; Stripe list objects ({ object: "list", data: [...] }); newline-delimited JSON mixing any of the above. Malformed lines report rather than abort, so partial exports still yield results.

What gets computed

Per charge with a transfer: proportional expected reversal (half-up, ratio clamped), minus actual reversals, tolerance two minor units, net-position cross-check so fee-made-whole charges never double-flag. Output: recoverable total, breakdown by cause, CSV of affected charge ids.

Sample output row
Charge
ch_3Px…9sK
Refunded / amount
$33.33 / $100.00
Expected vs reversed
$30.00 vs $0.00
Missing
$30.00

Privacy and limits

The public scanner deliberately does not accept Stripe API keys: an unauthenticated endpoint collecting credentials would have no audit trail and no revocation path. Key-based monitoring happens only inside accounts where keys are encrypted with AES-256-GCM and revocable by their owners.

Results reflect pasted snapshots; live state may already differ. The practical lookback is 90 days — older findings rarely retain reachable balances anyway.

Common questions

Why not accept API keys here?

The public scanner deliberately does not accept Stripe API keys: an unauthenticated endpoint collecting credentials would have no audit trail and no revocation path. Key-based monitoring happens only inside accounts where keys are encrypted with AES-256-GCM and revocable by their owners.

How current are results?

As current as your export — snapshot semantics apply, and re-pasting fresher data refreshes everything.