Skip to main content
Construct a 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 at payTo
  • Installed viem, or a comparable EIP-712 signing library

Steps

1

Construct the EIP-712 domain

The domain anchors the signature to Facilitator Service.
sign-proof.ts
Set 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
The signed message must meet these rules:
  • purpose must match the route you’re calling.
  • On /verify and /settle, network and payTo must equal the request body’s paymentRequirements.network and paymentRequirements.payTo. A mismatch returns HTTP 401.
  • issuedAt may be at most 30 seconds ahead of the current time.
  • expiresAt must be later than the current time and no more than 5 minutes after issuedAt.
  • 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
EOA signatures are recovered to 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.
sign-proof.ts
Send header as the Facilitator-Seller-Proof header on your Facilitator Service request.