Documentation Index
Fetch the complete documentation index at: https://docs.request.network/llms.txt
Use this file to discover all available pages before exploring further.
What youโll build
A webhook handler that receives signed payment events from Request Network, verifies the signature, and triggers your downstream systems โ order fulfillment, invoice closeout, accounting entries, customer email. Polling-free, idempotent, retry-safe. Audience: any backend integrating Request Network where payment events drive state changes downstream.The 12 events
| Category | Event | When it fires |
|---|---|---|
| Payment (core) | payment.confirmed | Payment fully settled on-chain |
payment.partial | Partial payment received, more expected | |
payment.failed | Payment execution failed (recurring, cross-chain) | |
payment.refunded | Payment refunded to payer | |
| Payment (Client ID) | payment.confirmed.client_id | Same as payment.confirmed, request was created via Client ID โ payload includes clientId and origin |
payment.partial.client_id | Client ID-scoped partial | |
| Payment (Checkout) | payment.confirmed.checkout | Same as payment.confirmed, request originated from a Secure Payment link |
payment.partial.checkout | Secure Payment-scoped partial | |
| Processing | payment.processing | Crypto-to-fiat offramp in progress (with detailed subStatus) |
| Request | request.recurring | A new recurring billing cycle fired |
| Compliance | compliance.updated | KYC or agreement status changed |
| Bank details | payment_detail.updated | Bank account verification status changed |
Setup
Get a Client ID
Complete steps 1โ3 of the Quickstart. Note your
clientId.Register your webhook URL
POST https://auth.request.network/v1/webhook with header x-client-id: <yours> and body { "url": "https://yourapp.com/webhooks/request-network" }.Save the returned secret immediately โ itโs only shown once.Test delivery
Fire a test event from the auth API docs with body
{ "eventType": "payment.confirmed" }. The request will arrive with header x-request-network-test: true.Handler โ reference implementation
A signature-verifying Express handler with idempotency. Hardened for production: verifies against the raw body, uses constant-time comparison, deduplicates onx-request-network-delivery.
Headers reference
| Header | Description |
|---|---|
x-request-network-signature | HMAC-SHA256 of the raw JSON body, hex-encoded |
x-request-network-delivery | ULID โ use as idempotency key |
x-request-network-retry-count | 0โ3, current retry attempt |
x-request-network-test | true only for /v1/webhook/test deliveries |
Retry policy
| Attempt | Delay | Cumulative time |
|---|---|---|
| 0 (initial) | โ | t=0 |
| 1 | 1s | t+1s |
| 2 | 5s | t+6s |
| 3 | 15s | t+21s |
Common patterns
Idempotency
The samepayment.confirmed event might arrive twice (network blip, retry overlap). Dedupe on x-request-network-delivery.
Routing by Client ID
If your platform has many merchants, give each their own Client ID. The webhook payload includesclientId so you can route events to the right tenant.
Slack alerts on failure
Crypto-to-fiat status tracking
Thepayment.processing event includes a subStatus field that progresses through initiated โ pending_internal_assessment โ ongoing_checks โ sending_fiat โ fiat_sent. Surface this in your UI so the payee sees real-time offramp progress.
Local development
Use ngrok to expose localhost during development:localhost, 127.0.0.1) are accepted by the auth API for testing. HTTPS is required in production.
Related
Webhooks reference
Full payload schemas for every event type.
Webhooks & Events
High-level concepts and event categories.