Skip to main content

Overview

Webhooks notify your server when Request Network processes a payment, completes KYT screening, or finishes hosted onboarding. Every delivery is an HMAC-signed POST request. A platform owns its Client IDs and Secure Payments. When it links a Client ID to an orchestrator, the orchestrator can create Secure Payments on the platform’s behalf. Some events are then delivered to both the platform’s Client ID endpoint and the linked orchestrator’s endpoint. You do not subscribe an endpoint to individual event types. An active endpoint receives the events available to the Client ID or orchestrator that registered it.
New platform endpoints are scoped to a Client ID. Existing platform-wide endpoints continue to receive their platform events, but you cannot create new platform-wide endpoints through the current registration flow.

Choose who receives notifications

Register an endpoint for the role that needs the event: Register each role separately, even if both roles use the same callback URL. Each registration has its own signing secret.
Orchestrator integration: Registering and managing an orchestrator endpoint requires only x-orchestrator-key. Use paired x-client-id and x-orchestrator-key authentication only when you create a Secure Payment for a linked platform.

Register a platform Client ID webhook

Use the platform’s Client ID to register an endpoint:
Response (201 Created):
Save secret when you create the endpoint. Request Network returns it only once. Use HTTPS in production; localhost is accepted for local development.
If you use a Dashboard session instead of x-client-id, include the Client ID in the request body when creating or testing an endpoint. See the Auth API webhook endpoints for that session-authenticated form.

Manage and test platform endpoints

Test a platform endpoint with the same Client ID:
Test deliveries include x-request-network-test: true. They use the same signature format and an example payload; they do not represent a real payment or screening decision.

Register an orchestrator webhook

Use the orchestrator key to register an endpoint:
Response (201 Created):
Save secret when you register the endpoint. Request Network never includes it in list, deactivate, or reactivate responses.

Manage and test orchestrator endpoints

To test an orchestrator endpoint:
Deactivation preserves the endpoint. Registering the same URL again is rejected, including while it is inactive; reactivate it instead. To change the URL, deactivate the old endpoint and register the new one.

Current webhook events

These are the events for current Secure Payment and orchestrator integrations. The platform’s Client ID also receives payment.confirmed, KYT, and payer-activity events for Secure Payments created by its linked orchestrator.
payment.confirmed is the settlement signal. secure_payment.user_event is browser-reported activity: navigation, network failures, or browser extensions can prevent Request Network from receiving it. Its absence does not prove that the payer did not take that step.

Payload identity and correlation

For a Secure Payment created with a Client ID, payloads identify the platform’s Client ID with clientId. When the payment was created through an orchestrator, they also include orchestratorId. orchestratorId is the orchestrator recorded when the Secure Payment was created. A later link, unlink, or relink does not change past payment events. Use requestId, paymentToken, or securePaymentToken to correlate the event with your own records. Payment events include an explorer URL for Request Scan when one is available. requestId and requestID identify the request, and paymentReference is its short unique reference.

Hosted onboarding completed

client_id.linked lets the orchestrator match hosted onboarding to the link intent it created. Use linkId or intentId to deduplicate repeated deliveries.

Payment confirmed

Do not fulfill an order until you receive payment.confirmed.
payerAddress is the address used to make the payment. payerEoaAddress is the payer’s connected wallet and can differ when a smart account is used. Either can be null when unavailable.

Payment failed

KYT screening completed

KYT results are sent only for definitive approved and rejected outcomes. If an orchestrator-controlled plan has a backup provider, Request Network tries it after a technical provider failure before deciding whether screening completed.

Secure Payment user event

secure_payment.user_event reports wallet_connected, payment_sent_to_wallet, or payment_approved_in_wallet. occurredAt and properties come from the payer’s browser; timestamp is added by Request Network when it receives the event.

Payer-wallet access rejected

secure_payment.access_rejected is emitted when a wallet that is not on an incoming payment’s allowedPayerAddresses allowlist tries to access or pay it. It is not a KYT result. Repeated attempts by the same wallet on the same payment are normally suppressed for 10 minutes.
See Restrict payer wallets to configure the allowlist.

Delivery requirements

Verify x-request-network-signature against the raw request body before you parse it. Use x-request-network-delivery as your durable idempotency key: Request Network retries failed deliveries, so the same event can arrive more than once.
  • Use HTTPS for production endpoints.
  • Store each endpoint’s signing secret securely; it is returned only when that endpoint is created.
  • Handle unknown event names safely so a new event does not fail your endpoint.
For an Express handler, local testing with ngrok, and reconciliation patterns, see Webhook reconciliation.

Delivery headers

Retry policy

Request Network retries non-2xx responses, timeouts, and connection errors. A delivery has four attempts in total: the initial request plus retries after 1, 5, and 15 seconds. Each attempt has a five-second timeout. Return a 2xx response only after you have safely recorded the delivery. If processing fails, return a non-2xx response so Request Network retries it.

Troubleshooting

Signature verification fails
  • Verify the signature against the raw request body, not a parsed or re-serialized body.
  • Confirm that you saved the secret returned when this specific endpoint was created.
  • Confirm that the endpoint’s platform or orchestrator registration is active.
No webhook arrives
  • Confirm that the relevant Client ID or orchestrator has an active endpoint.
  • Confirm that the event belongs to that recipient in Current webhook events.
  • Send a test event to verify endpoint reachability and signature handling.

Legacy integrations

These events remain available for existing API integrations. They do not apply to current Dashboard, Secure Payment Page, or orchestrator workflows.

Webhooks & Events

Learn the event categories and common webhook use cases.

Webhook reconciliation

Implement a signed webhook handler and process events safely.

Client ID linking

Link a platform’s Client ID and receive hosted-onboarding results.

Orchestrator KYT plans

Configure transaction screening for linked platforms.

Restrict payer wallets

Allow only selected payer wallets for an incoming payment.
Last modified on August 26, 2026