# XRP Ledger Payment Watch (Webhook)

> XRP Ledger Payment Watch (Webhook) is a paid API for AI agents from bruk-agent-api.fly.dev, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-19).

Watches an XRP Ledger address for an incoming payment for up to 24 hours and POSTs a signed webhook event when a matching validated payment arrives, or when the watch window expires.

## Facts

- Endpoint: POST https://bruk-agent-api.fly.dev/v1/payment-watch?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-19
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/xrp-ledger-payment-watch-webhook-fc858a56
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_BIedj_NW0uN-XPEl1Y0hD

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 xrp-ledger-payment-watch-webhook-fc858a56 -d '<json body>'
```

Example prompt: Watch my XRP address rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh on mainnet for up to 12 hours and POST a notification to https://myserver.example.com/hooks/xrp when any payment of at least 100 XRP arrives with destination tag 12345.

## When to prefer this

Use this endpoint when you need to be notified asynchronously the moment a specific XRP Ledger payment arrives, without polling the ledger yourself. Ideal for agent workflows that need to wait on payment confirmation before proceeding — especially when the wait could be minutes to hours. Prefer over manual polling when you want guaranteed delivery even across service restarts, and when you need fine-grained matching by currency, amount, or destination tag.

## Known failure modes

- Invalid r-address format — watch not created
- Webhook URL not reachable or not HTTPS — event delivery fails
- Watch window exceeds 24 hours — request rejected
- Payment arrives but doesn't match currency/min_amount/destination_tag filters — no event fired
- Service restart during watch — payments are still caught via ledger replay
- Network mismatch (mainnet vs testnet) — payment not detected
- Webhook endpoint returns non-2xx — delivery may not be retried

## How this service works

Payment arrival alert: watches an XRP Ledger address for up to 24 hours and POSTs a signed webhook when a matching payment is final (validated, tesSUCCESS, delivered amount checked), or a watch.expired event if none arrives. Payments that land during restarts are still caught. Useful when waiting on an incoming payment without polling.

## Output

The endpoint triggers an HTTPS POST to the provided webhook URL when a matching payment is finalized on the XRP Ledger (validated, tesSUCCESS, delivered amount verified). The webhook payload is signed and includes payment details. If no matching payment arrives within the watch window, a watch.expired event is POSTed instead. Payments that arrive during service restarts are still detected and reported.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "hours": {
   "type": "integer",
   "maximum": 24,
   "minimum": 1,
   "description": "Watch window in hours. Default 24."
  },
  "issuer": {
   "type": "string",
   "pattern": "^r[1-9A-HJ-NP-Za-km-z]{24,34}$",
   "description": "Token issuer r-address. RLUSD defaults to Ripple's issuer."
  },
  "address": {
   "type": "string",
   "pattern": "^r[1-9A-HJ-NP-Za-km-z]{24,34}$",
   "description": "Receiving r-address to watch."
  },
  "network": {
   "enum": [
    "mainnet",
    "testnet"
   ],
   "type": "string",
   "description": "XRP Ledger network. Default mainnet."
  },
  "webhook": {
   "type": "string",
   "pattern": "^https://",
   "description": "Public https URL that receives POSTed JSON events."
  },
  "currency": {
   "type": "string",
   "description": "XRP (default), RLUSD, or a token code."
  },
  "min_amount": {
   "type": "string",
   "description": "Only match payments delivering at least this amount."
  },
  "destination_tag": {
   "type": "integer",
   "minimum": 0,
   "description": "Only match this destination tag."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/xrp-ledger-payment-watch-webhook-fc858a56/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from bruk-agent-api.fly.dev](https://www.zero.xyz/host/bruk-agent-api.fly.dev/llms.txt)
