Facilitator-Seller-Proof header for keyless Facilitator Service
requests. The proof carries an EIP-712 signature that proves you control payTo
and binds the request to a specific purpose and body.
Prerequisites
Before you begin, ensure that you’ve:- Read The keyless trial so you understand the trial allowance
- Obtained the private key controlling
payTo, or a deployed ERC-1271 smart contract account atpayTo - Installed viem, or a comparable EIP-712 signing library
Steps
1
Construct the EIP-712 domain
The domain anchors the signature to Facilitator Service.Set
sign-proof.ts
chainId to the numeric EIP-155 chain ID for the network you’re settling
on.2
Define the typed data
The
SellerRequest struct is what Facilitator Service reconstructs and verifies
against the signature.sign-proof.ts
3
Populate the message
sign-proof.ts
purposemust match the route you’re calling.- On
/verifyand/settle,networkandpayTomust equal the request body’spaymentRequirements.networkandpaymentRequirements.payTo. A mismatch returns HTTP 401. issuedAtmay be at most 30 seconds ahead of the current time.expiresAtmust be later than the current time and no more than 5 minutes afterissuedAt.- A nonce is unique across purposes in one
(network, payTo). Exact retries reuse the nonce. Reuse with a different digest returns HTTP 401.
4
Sign the typed data
sign-proof.ts
payTo. Deployed smart contract accounts at
payTo are validated through ERC-1271.5
Base64url-encode the envelope
The envelope carries the signature and the fields Facilitator Service needs to
reconstruct what was signed.Send
sign-proof.ts
header as the Facilitator-Seller-Proof header on your Facilitator
Service request.