{"uid":"cap_IQbyp1WjXdpRTwtAHtQlW","slug":"halowerk-x402werk-receipt-verifier-a21539f2","name":"HALOWERK x402werk Receipt Verifier","description":"Cryptographic verification of the offer-receipt extension of x402. Accepts a signed offer in eip712, jws or eip191 form — either bundled as {format, payload, signature} or as payload plus a separate signature — and an optional signed receipt. Recovers the signer, compares it with the payTo of the offer, compares receipt and offer field by field and names every divergence with the value on each side, checks whether the offer has expired and whether the receipt timestamps are plausible against sta","url":"https://x402.halowerk.com/receipt/verify","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"offer":{"type":"object","description":"The signed offer as {format, payload, signature}, or the bare offer payload with version, resourceUrl, scheme, network, asset, payTo, amount and validUntil — then pass signature and format separately."},"format":{"enum":["eip712","jws","eip191"],"type":"string","description":"Signature method, if the offer object does not name it. eip712 is what the offer-receipt extension produces."},"receipt":{"type":"object","description":"Optional signed receipt as {format, payload, signature}, or the bare receipt payload with version, network, resourceUrl, payer, issuedAt and transaction."},"signature":{"type":"string","maxLength":8192,"description":"Signature of the offer, if it is not inside the offer object."},"public_key":{"type":"object","description":"Public key as a JWK, required for jws signatures whose key identifier cannot be resolved from the token itself."},"expected_payer":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Address you expected to have paid. When given, the receipt payer is compared against it."},"receipt_format":{"enum":["eip712","jws","eip191"],"type":"string","description":"Signature method of the receipt, if the receipt object does not name it."},"receipt_signature":{"type":"string","maxLength":8192,"description":"Signature of the receipt, if it is not inside the receipt object."},"max_receipt_age_seconds":{"type":"integer","default":3600,"maximum":2592000,"minimum":1,"description":"How old a receipt may be before its timestamps are called implausible."}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.003","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.003/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.003","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_bGTGtVNysPlqs5OCJSLwn","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.003","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Verifies a signed x402 payment offer and optional receipt, checking signature validity, field matching, and timestamp plausibility","exampleAgentPrompt":"Can you verify this x402 payment offer and receipt — here's the signed offer object with EIP-712 format, the receipt, and the expected payer address 0xABC123 — and tell me if they match and whether the signatures are valid?","exampleUseCases":[{"title":"Gate API resource behind verified payment","prompt":"Before I release the API response, verify this x402 offer and receipt pair — the offer has EIP-712 format and here's the full signed receipt — and confirm the receipt matches the offer and the offer signer matches the payTo address."},{"title":"Detect tampered payment receipt","prompt":"I received an x402 receipt claiming payment was made but I want to check if it actually matches the original offer — can you run a verification and list any field mismatches between the offer and the receipt?"},{"title":"Validate payer identity before fulfillment","prompt":"Check this x402 payment offer from address 0xDEF456 — use EIP-712 format — and confirm the expected payer 0xDEF456 matches the receipt payer and that all timestamps are plausible within 300 seconds."}],"resultDescription":"Returns a verdict enum ('gueltig' = valid, 'abweichung' = mismatch, 'ungueltig' = invalid, 'nicht_pruefbar' = cannot be checked), plus boolean flags for offer signature validity, receipt signature validity, receipt-offer match, signer-payTo match, and timestamp plausibility, along with a list of any field mismatches and the reasons behind the verdict.","failureModes":["Missing or malformed offer object returns validation error","Invalid or unresolvable public key for JWK-based JWS signatures causes nicht_pruefbar verdict","Receipt timestamp older than max_receipt_age_seconds triggers implausible timestamp flag","Signature format mismatch between declared format and actual payload structure","Unrecognized signature scheme returns nicht_pruefbar verdict"],"whenToPreferThis":"Use this endpoint when you need to cryptographically verify an x402 payment offer and/or receipt before releasing a paid resource or recording a transaction. It is the right choice when working within the x402 HTTP payment protocol on Base Mainnet with USDC, especially when EIP-712 signed offers and receipts are involved and you need a structured verdict with field-level mismatch details rather than a simple boolean pass/fail.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T18:35:49.627Z","isFirstParty":false}