# HALOWERK x402werk Receipt & Offer Verifier

> HALOWERK x402werk Receipt & Offer Verifier is a paid API for AI agents from x402.netzhandwerker.de, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-14).

Verifies the cryptographic validity of an x402 payment offer and optional receipt, checking signatures, payer identity, and receipt freshness on Base Mainnet.

## Facts

- Endpoint: POST https://x402.netzhandwerker.de/receipt/verify
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-x402werk-receipt-offer-verifier-5fbf06c6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_O1Xy0r6Y6PUEBwDNVLPy_

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability halowerk-x402werk-receipt-offer-verifier-5fbf06c6 -d '<json body>'
```

Example prompt: Verify this x402 payment offer for me — the signed EIP-712 offer payload is {offer: ...}, the signature is 0xabc123..., and I want to confirm the payer address is 0xDEAD...BEEF with a max receipt age of 3600 seconds.

## When to prefer this

Use this endpoint when you need to cryptographically verify x402 payment offers and receipts before granting access to paid resources, especially on Base Mainnet with USDC. Prefer this over manual on-chain checks when you need fast, off-chain signature and receipt validation supporting EIP-712, EIP-191, and JWS formats.

## Known failure modes

- Invalid or mismatched signature returns a verification failure
- Payer address mismatch when expected_payer is provided
- Receipt older than max_receipt_age_seconds returns implausible timestamp error
- Malformed offer or receipt object causes a schema validation error
- JWS signature with unresolvable key ID without a supplied public_key fails
- Unsupported signature format or network mismatch

## How this service works

HALOWERK x402werk — bezahlte Endpunkte nach x402. Preise in USDC auf Base Mainnet.

## Output

Returns a verification result indicating whether the offer signature is cryptographically valid, whether the payer matches the expected address, and whether the receipt (if provided) is within the acceptable age window and correctly signed.

## Request schema (JSON Schema)

```json
{
 "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."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-x402werk-receipt-offer-verifier-5fbf06c6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.netzhandwerker.de](https://www.zero.xyz/host/x402.netzhandwerker.de/llms.txt)
