Download handshake
1
Request content
The client requests
GET /api/paywalls/:id/download without a payment proof.2
Read the payment requirement
The server returns HTTP
402 with the exact network, currency, amount, recipient, and resource requirement.3
Submit the transfer
The buyer wallet sends the exact native or configured ERC-20 transfer on the required chain.
4
Encode the proof
The client base64-encodes a JSON proof containing the scheme, transaction hash, and payer.
5
Retry the download
The client sends the proof in the
PAYMENT-SIGNATURE header. After verification, the server returns the content and a PAYMENT-RESPONSE receipt.Proof shape
Idempotent recovery
The confirmed transaction hash and payer identify the proof. A valid proof may be reused for the same resource, recipient, token, and amount to recover an interrupted delivery. It cannot settle a different payment requirement.Demo
exact and sandbox proofs are available only when explicit demo mode is enabled outside production. They move no funds and never fabricate transaction hashes.