Reversible ERC-20 transfers you can cancel before they land.
UnSend adds an "undo" to ERC-20 payments. It wraps any token 1:1 (like WETH) into a reversible version and lets you send with a short timelock instead of instantly and irreversibly.
Before the timelock ends, the sender can cancel and get every token back — great for a wrong address or amount. After it ends, the recipient claims the funds (many at once in one call), or the sender can release early. Normal transfers stay instant and final, so reversibility is opt-in per send. A factory deploys one canonical wrapper per token.
A Solidity contract built on OpenZeppelin v5: we extend ERC20Wrapper for 1:1 wrap/unwrap.
Pending transfers are keyed by a monotonic id with O(1) operations. Funds sit as the wrapper's own tokens at the contract address, so every send/cancel/claim emits a real ERC-20 Transfer event and stays fully backed. A factory deploys one wrapper per token. Built and tested with Hardhat 3, viem, and TypeScript.

