# HALOWERK x402werk — Blockchain Payment Reconciliation

> HALOWERK x402werk — Blockchain Payment Reconciliation is a paid API for AI agents from x402.netzhandwerker.de, paid per call via x402, $0.008/call, status unknown (last checked 2026-09-15).

Reconciles on-chain token transfer receipts against actual blockchain transactions to verify payments were received for a given address and time window.

## Facts

- Endpoint: POST https://x402.netzhandwerker.de/reconcile
- Price: $0.008/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-x402werk-blockchain-payment-reconciliation-5320e5f5
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ILinwGxYwYCqg_5CD9N9U

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-blockchain-payment-reconciliation-5320e5f5 -d '<json body>'
```

Example prompt: Reconcile my incoming USDC payments on Base Mainnet for my address 0xABC...123 between block 18000000 and 18010000 — I have three receipts to match: tx 0xDEF...456 for 5000000 units, and two others without hashes from payers 0x111...aaa and 0x222...bbb for 2000000 units each issued yesterday.

## When to prefer this

Choose this endpoint when you need server-side, authoritative reconciliation of EVM-compatible token transfers against a batch of receipts — especially for x402 micropayment workflows where you need to confirm settlements without running your own blockchain indexer. Prefer this over manual on-chain queries when you have multiple receipts with varying match signals (tx hash, payer address, amount, or timestamp) and need a single structured response with per-receipt match status and duplicate detection.

## Known failure modes

- Invalid Ethereum address format (must be 0x + 40 hex chars) returns validation error
- Unsupported chain identifier returns enum mismatch error
- Block range or timestamp window too large may result in timeout or partial results
- Missing required amount_units field on a receipt causes that receipt to be rejected
- Payment not yet confirmed on-chain results in unmatched status (not an error)
- x402 payment authorization failure (insufficient USDC balance) prevents endpoint from executing at all

## How this service works

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

## Output

Returns a per-receipt reconciliation result indicating whether each receipt was matched to an on-chain transfer (by tx hash, payer address, amount, or timestamp fallback), flags duplicates identified by payment_id, and echoes back the caller's receipt_id for each entry. May also return summary counts of matched, unmatched, and duplicate receipts.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "asset": {
   "type": "string",
   "description": "Token contract address to reconcile. Defaults to the canonical USDC of that chain."
  },
  "chain": {
   "enum": [
    "arb",
    "arbitrum",
    "arbitrum-one",
    "avalanche",
    "avax",
    "base",
    "base-mainnet",
    "base-sepolia",
    "basesepolia",
    "eip155:1",
    "eip155:10",
    "eip155:137",
    "eip155:42161",
    "eip155:43114",
    "eip155:8453",
    "eip155:84532",
    "eth",
    "ethereum",
    "ethereum-mainnet",
    "mainnet",
    "matic",
    "op",
    "op-mainnet",
    "optimism",
    "polygon"
   ],
   "type": "string",
   "description": "Chain as CAIP-2, short name or chain id."
  },
  "window": {
   "type": "object",
   "properties": {
    "to": {
     "type": "integer",
     "description": "End of the window as unix seconds."
    },
    "from": {
     "type": "integer",
     "description": "Start of the window as unix seconds. Resolved to a block by reading real blocks."
    },
    "to_block": {
     "type": "integer",
     "minimum": 0,
     "description": "End block. Takes precedence over to."
    },
    "from_block": {
     "type": "integer",
     "minimum": 0,
     "description": "Start block. Takes precedence over from."
    }
   },
   "additionalProperties": false
  },
  "address": {
   "type": "string",
   "pattern": "^0x[0-9a-fA-F]{40}$",
   "description": "Your receiving address whose incoming transfers should be read."
  },
  "receipts": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "amount_units"
    ],
    "properties": {
     "ts": {
      "type": "integer",
      "description": "Unix seconds when the receipt was issued. Needed for the amount-and-time fallback match."
     },
     "payer": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "Address you believe paid."
     },
     "tx_hash": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{64}$",
      "description": "Settlement transaction hash, if you recorded one."
     },
     "payment_id": {
      "type": "string",
      "maxLength": 200,
      "description": "Payment identifier, used to detect duplicate receipts."
     },
     "receipt_id": {
      "type": "string",
      "maxLength": 200,
      "description": "Your own identifier for this receipt. Echoed back in every result."
     },
     "amount_units": {
      "type": "string",
      "pattern": "^[0-9]{1,78}$",
      "description": "
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-x402werk-blockchain-payment-reconciliation-5320e5f5/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)
