Overview
Webhooks notify your server when Request Network processes a payment, completes KYT screening, or finishes hosted onboarding. Every delivery is an HMAC-signedPOST 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: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:
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:Manage and test orchestrator endpoints
To test an orchestrator endpoint:
Current webhook events
These are the events for current Secure Payment and orchestrator integrations. The platform’s Client ID also receivespayment.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 withclientId. 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 receivepayment.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 definitiveapproved 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.
Delivery requirements
Verifyx-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.
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.
- 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.Related webhook pages
Webhooks & Events
Learn the event categories and common webhook use cases.
Webhook reconciliation
Implement a signed webhook handler and process events safely.
Related
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.