Register a webhook URL once, keyed by your payer wallet. From then on, every payment from that wallet that this fleet can see settling is POSTed to your URL as a structured receipt: endpoint, amount, payer, tx hash, and a permalink when one exists. Free.
| Payment kind | How your receipt is pushed |
|---|---|
Clinic-settled on-chain payments — POST /clinic/fleet-index, POST /clinic/demand-report | Synchronous within seconds of settlement; payer + tx hash known at settle time. |
Pack-funded executions — POST /clinic/replay, POST /clinic/repeat-call | Synchronous within seconds of the pack deduction. Identity = the wallet stored on the pack at purchase time, or the wallet you link by presenting the pack key at registration. Off-chain: the receipt carries tx: null and says the pack deduction is the record. |
| Direct per-call payments to Contabo-hosted endpoint servers | Log watcher A watcher tails the endpoints' paid-call logs every 2 minutes — near-real-time, not instant. Endpoint logs carry no tx hash, so the tx is resolved on-chain best-effort; when it cannot be matched unambiguously you get the receipt with tx: null and a note saying so. |
| Credit-pack purchases | Log watcher Picked up from the pack store by the same 2-minute watcher, with the purchase tx. |
| InferenceHub-hosted endpoint payments | Not covered. Those logs live on another host and are not readable from the clinic today. |
One receipt per payment is guaranteed by a delivery ledger — the same payment is never pushed twice to the same registration, across both paths. A failed delivery is retried at most once. A registration is automatically disabled after 3 consecutive failed delivery attempts. Caps: max 5 active registrations per wallet, max 10 registrations created per IP per day.
Identity note: receipts contain only data that is public on-chain anyway (payer, amount, endpoint, tx hash). Anyone can register a webhook for any wallet — treat receipts as a convenience feed for your own bookkeeping, not as proof of payment. Always verify the tx on-chain.
POST https://api.mekongtradeintel.com/clinic/receipt-webhook
{ "webhook_url": "https://...", "wallet": "0x...", "pack_key": "pk_..." }
→ { "ok": true, "registration": { "id": "rwh_...", "status": "active", ... },
"management_token": "rwm_...", // returned EXACTLY ONCE
"scope": { ... } }
GET https://api.mekongtradeintel.com/clinic/receipt-webhook?id=rwh_...&token=rwm_...
DELETE https://api.mekongtradeintel.com/clinic/receipt-webhook
{ "id": "rwh_...", "token": "rwm_..." }
Webhook payload: { "event": "paid_receipt", "event_id": "rcpt_...",
"endpoint": "fleet-index", "amount_usd": 0.005, "amount_atomic": "5000",
"currency": "USDC", "network": "eip155:8453",
"payer": "0x...", "payee": "0x198f3895551B309fF5C5F59e690FB0823d10EA93",
"tx": "0x...", "tx_url": "https://basescan.org/tx/0x...",
"permalink": null, "paid_at": "2026-10-28T...", "source": "clinic_sync" }
Part of the 402 Clinic — free tooling for x402 buyers and sellers on Base.