REIN
Sign inGet started
Concepts

Receipt PDA

A Receipt PDA is created atomically inside every successful rein_spend transaction. It is permanent, immutable, and verifiable by any third party using only the Solana tx signature.

Receipt PDA structure

struct ReceiptAccount { vault: Pubkey, recipient_hash: [u8; 32], // SHA-256 of recipient URL amount_usdc: u64, timestamp: i64, memo: String, // max 100 chars refunded: bool, dispute_id: Option<Pubkey>, }
Atomic creation
The Receipt PDA is created in the same transaction as the payment. There is no window where a payment can succeed without a receipt.
Immutable
Once created, the core fields (vault, recipient_hash, amount, timestamp) cannot be changed. Only refunded and dispute_id are mutable.
Disputable
Calling rein_dispute marks the receipt and initiates a refund review. The vault owner's dashboard surfaces all disputed receipts.
Privacy-preserving
The full recipient URL is never stored on-chain — only its SHA-256 hash. You can verify a specific recipient by hashing the URL locally.
Step-up auth →Policy PDA