# Nostr Zap Receipt Checker

> Nostr Zap Receipt Checker is a paid API for AI agents from nostr.halowerk.com, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-13).

Validates a Nostr kind 9735 zap receipt by running eight named cryptographic and structural checks, including BIP-340 signature verification and invoice amount comparison.

## Facts

- Endpoint: POST https://nostr.halowerk.com/zap-receipt-check
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/nostr-zap-receipt-checker-8edfefa1
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_EXSEgtlaiQiOrRaWOpsAJ

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 nostr-zap-receipt-checker-8edfefa1 -d '<json body>'
```

Example prompt: Can you check whether this Nostr zap receipt is valid — here's the event ID: nevent1qqsxyz... — run all eight checks including signature verification and make sure the invoice amount matches the zap request?

## When to prefer this

Use this endpoint when you need granular, per-check validation of a Nostr kind 9735 zap receipt, especially when you need to distinguish between receipt signature failure, zap request signature failure, and invoice/amount mismatches as separate failure modes. Prefer this over a summary-only validator when debugging broken zap flows or auditing individual receipts for payment integrity.

## Known failure modes

- Event ID not found on any relay — check returns not-found error
- Malformed event JSON provided — parsing fails before checks run
- Invalid bech32 or hex event ID format — rejected at input
- Relay timeout or unreachable relays — fetch may return partial results
- Invoice unparseable — invoice check fails with decode error

## How this service works

Takes a kind 9735 receipt directly or fetches it from relays by event id, then runs eight named checks and reports each one separately with its reason. The receipt signature and the signature of the zap request enclosed in the description tag are verified per BIP-340. The invoice is decoded and its amount is compared against the amount tag of the zap request, since those two can disagree and only the invoice was payable.

## Output

A structured report of eight named checks, each with a pass/fail result and a human-readable reason explaining the outcome. Covers: receipt signature validity (BIP-340), zap request signature validity (BIP-340), invoice decoding, invoice amount vs zap request amount tag comparison, and other structural integrity checks on the kind 9735 event.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "relays": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "maxItems": 12,
   "description": "wss relay addresses used when fetching by event_id."
  },
  "receipt": {
   "type": "object",
   "description": "The complete kind 9735 event. Either this or event_id is required."
  },
  "event_id": {
   "type": "string",
   "description": "Event id of the receipt as hex, note or nevent. Fetched from the relays when receipt is not given."
  },
  "recipient_lightning_address": {
   "type": "string",
   "description": "Lightning address of the recipient, for example name@domain. Given, the issuer is compared against the nostrPubkey published there."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/nostr-zap-receipt-checker-8edfefa1/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from nostr.halowerk.com](https://www.zero.xyz/host/nostr.halowerk.com/llms.txt)
