{"alg":"Ed25519","key_id":"cf402-rk-06f3d92517614c38","public_key":"FbX3fMloih1T5xF7j3MRe3LmTdXYdpnrikz2BcpSPrQ","public_key_encoding":"base64url (raw 32-byte Ed25519 public key)","jwk":{"kty":"OKP","crv":"Ed25519","x":"FbX3fMloih1T5xF7j3MRe3LmTdXYdpnrikz2BcpSPrQ","kid":"cf402-rk-06f3d92517614c38","use":"sig","alg":"EdDSA"},"key_url":"https://cryptofeed402.site/.well-known/receipt-key.json","headers":{"receipt":"X-Receipt","signature":"X-Receipt-Signature"},"applies_to":"every paid HTTP 200 that settled via x402 (errors such as 400/404/429/503 are never charged and carry no receipt)","receipt_fields":["v","request_id","route","method","url","status","network","asset","asset_symbol","amount_unit","payTo","payer","quoted_amount","charged_amount","settle_tx","body_sha256","body_bytes","as_of","issued_at","key_id"],"verification":["base64url-decode the X-Receipt header to get the receipt JSON bytes (do not re-serialize).","base64url-decode X-Receipt-Signature and verify it as an Ed25519 signature over those exact bytes with this public key.","Parse the JSON; check key_id matches, and sha256(raw response body bytes) as lowercase hex equals body_sha256.","Optionally check settle_tx on Base (USDC transfer to payTo for charged_amount) and that charged_amount <= quoted_amount."],"settlement":"Payment settles only after the handler produced a valid 200; failed or error responses are not settled.","public_key_pem":"-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAFbX3fMloih1T5xF7j3MRe3LmTdXYdpnrikz2BcpSPrQ=\n-----END PUBLIC KEY-----\n","service":"cryptofeed402","note":"Signing key for fulfillment receipts only. Not a wallet key; it cannot move funds."}