IOUs and Claims
On-chain IOU registry, claim flow for unaddressed recipients.
IOUs and claims
Send payments to people who don't have a Monipay account yet using the on-chain IOU registry.
How it works
- Sender issues a payment to an email or social handle.
- The funds are held in the
IOURegistrysmart contract. - The recipient receives a notification with a claim link.
- Recipient creates a MoniTag and claims the funds.
- Funds are released from the escrow contract to the recipient's new wallet.
Walkaway Test for IOUs
If an IOU remains unclaimed after a certain period, the sender can reclaim the funds. This ensures that capital is never permanently trapped in the registry.
Read next
Claim flow in detail
The IOU system uses a bytes32 recipientId derived from keccak256("platform:userId") - no PII stored on-chain. Here's the full lifecycle:
Sender pays @username (Twitter / Discord / Telegram)
↓
IOURegistry.sol escrows funds on-chain
↓
Recipient receives notification (email / DM)
↓
Recipient visits monipay.xyz → connects wallet
↓
claim-social-funds edge function verifies OAuth identity
↓
batchClaim called from vault → funds released to wallet
Expiry and reclaim
IOUs have a configurable expiry window. If a recipient does not claim within the window:
- The sender can call
reclaim()on theIOURegistryto recover funds. - Unclaimed IOUs are never lost - only the sender can reclaim after expiry.
Supported chains
The IOU Registry is deployed on: Base, BSC, Celo, and Tempo. Solana uses a parallel escrow model adapted for the Solana account model.
Security notes
- Recipient identity is stored as a hash - no username or email appears on-chain.
- Only the authorized vault hot wallet can call
batchClaim. - See Security Architecture for the full threat model.