Why
Card rails bake refunds into the protocol: reverse the charge, the network handles the money. Crypto rails bake in the opposite: nobody can reverse anything, ever. Products read this as refunds are impossible — but the customer promise never went away, so what actually happened is that the refund moved up a layer: it is now a second payment, flowing the other way, that your application must create, fund, authorize and account for.
That relocation raises exactly the questions card networks answered internally: who approves (support agent, policy rule, second signer), within what window, from which pool of money (refunds need a funded balance — the original payment may already be swept), and how the pair is linked so accounting sees one net event rather than two unrelated transfers. An on-chain reference from refund to original makes the link auditable by anyone — one small advantage the transparent rail adds over the card networks it is imitating.
How it works
A payment, a linked counter-payment, a policy gate, and one reconciled ledger.
PoC
On anvil: a merchant contract (or plain transfers plus a server ledger) where checkout records { paymentId, payer, amount }. Refund path: a support action creates a refund intent referencing paymentId; policy engine checks window (≤ 14 days), amount (≤ original, cumulative across partial refunds), and approver role; the refund pays from a dedicated refund-budget wallet and emits or memos the original paymentId. Ledger view joins the pair and shows net. Tests: double-refund blocked, partial refunds sum-capped, empty refund budget fails loudly before promising the customer, and the x402-settlement-retry boundary — a refund of a payment whose settlement later failed.
What it proves
Irreversibility is a property of the rail, not of the business. The product re-creates reversal as composition — new payment plus reference plus policy — and the hard parts are the ones card networks hid: funding the refund pool and defining who may say yes. This card is the support-desk face of receipt-is-not-settlement.