This is the on-chain Solidity struct. The JSON payload omits theDocumentation Index
Fetch the complete documentation index at: https://docs.x402r.org/llms.txt
Use this file to discover all available pages before exploring further.
payer field; the facilitator recovers it from the signature at settlement time. Wire-format extra uses spec-level field names; the on-chain struct keeps canonical names so the EIP-712 typehash matches the AuthCaptureEscrow contract byte-for-byte.
Expiry Ordering
The contract enforces:preApprovalExpiry <= authorizationExpiry <= refundExpiry
| Expiry | Wire field | Enforced At | Effect |
|---|---|---|---|
preApprovalExpiry | derived | authorize() / charge() | Blocks settlement after this time |
authorizationExpiry | captureDeadline | capture() | Blocks capture; allows reclaim() |
refundExpiry | refundDeadline | refund() | Blocks refund requests |
Safety Guarantees
The escrow contract enforces invariants on-chain:No Overcharging
The client-signed
maxAmount caps the settlement amount. Attempts to exceed the limit revert.Replay Prevention
Each payment has a unique nonce derived from
(chainId, escrowAddress, paymentInfoHash). The nonce is consumed on-chain at settlement.Payer Reclaim
After
captureDeadline, the payer can reclaim escrowed funds directly without captureAuthorizer approval.Fee Bounds
Min/max fee bounds in
PaymentInfo are client-signed and enforced on-chain. The captureAuthorizer must respect these limits.Next Steps
Wire Format
Where each PaymentInfo field comes from on the wire.
Verification and Settlement
The 13-step verification flow that enforces these invariants.
