☰Webhook API Guide
1. Overview
To simplify webhook management and provide a consistent integration experience, the Generic Webhook Registration API.
The API provides a single set of endpoints that can be used to register, deregister, and retrieve the registration status of supported webhook types.
2. Generic Webhook API
The following endpoints are now available:
POST
/api/webhook/register– Register or update a webhook registration.DELETE
/api/webhook/register?webhookType={Webhook-Type}– Deregister a specific webhook type.GET
/api/webhook/register– Retrieve webhook registration status.
The same endpoint is used for different webhook types. The webhookType identifies which webhook registration is being managed.
3. Webhook Types
The Generic Webhook API currently supports the following webhook types:
1. TREASURY_SETUP – Used to configure and receive ACH status change notifications.
2.APPLICATION – Used for application onboarding and to receive updates related to application status changes throughout the onboarding process.
The webhookType value is case-insensitive.
4. Register or Update Webhook
4.1 Endpoint
POST /api/webhook/register4.2 Request Body
{"webhookType": "TREASURY_SETUP","webhookUrl": "https://broker.example.com/webhooks/dorman","webhookAuthenticationKey": "broker-supplied-key","webhookSecret": "broker-supplied-secret","notificationEmail": "ops@broker.example.com"}
4.3 Request Properties
webhookType– Required. Identifies the type of webhook being registered.webhookUrl– Required. URL where webhook notifications should be delivered.webhookAuthenticationKey– Required. Broker-supplied authentication key.webhookSecret– Required. Broker-supplied secret used for HMAC-SHA256 signature validation.notificationEmail– Required. Email address used for webhook-related notifications.
4.4 Webhook Callback Authentication
Once a webhook is registered, Dorman will send webhook notifications to the registered webhookUrl.
Each webhook request contains two security headers:
AuthorizationX-Dorman-Signature
Should validate both headers before processing the webhook payload.
4.4.1 Authorization Header
Dorman includes the webhook authentication key provided during webhook registration in the Authorization HTTP header.
Authorization: api-key <YOUR_WEBHOOK_AUTHENTICATION_KEY>The webhook authentication key is separate from the webhook secret.
The authentication key is sent in the Authorization header when delivering webhook notifications.
4.4.2 HMAC-SHA256 Signature
Each webhook request also contains an X-Dorman-Signature header.
X-Dorman-Signature: <64-character-lowercase-hex-signature>The signature is generated using:
Message: Exact raw JSON request body
HMAC Key: Webhook secret provided during registration
Algorithm: HMAC-SHA256
The resulting signature is a 64-character lowercase hexadecimal string.
Example:
X-Dorman-Signature: 0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdefCalculate the HMAC-SHA256 signature using registered webhook secret and compare it with the value received in X-Dorman-Signature.
4.4.3 Webhook Secret
The
webhookSecretis provided during webhook registration.
The secret can be any valid UTF-8 string, including alphanumeric, hexadecimal, or Base64-looking values.
The exact string provided during registration is converted to UTF-8 bytes and used as the HMAC-SHA256 key.
4.4.4 Example Webhook Request (Dorman -> Broker)
POST /your/webhook/endpoint HTTP/1.1Content-Type: application/jsonAuthorization: api-key <YOUR_WEBHOOK_AUTHENTICATION_KEY>X-Dorman-Signature: <64-character-lowercase-hex-signature>{// Payload for the corresponding webhook event}
4.5 Example Registration API Response
{"success": true,"message": "Webhook registration updated successfully for TREASURY_SETUP.","data":{"webhookType": "TREASURY_SETUP","webhookUrl": "https://broker.example.com/webhooks/dorman","notificationEmail": "ops@broker.example.com","isEnabled": true,"registeredAt": "2026-08-12T07:29:20.7239878Z","updatedAt": "2026-08-12T07:29:20.7239878Z"}}
5. Deregister Webhook
The Generic Webhook API also uses the same /api/webhook/register endpoint for deregistration.
The webhook type must be provided as a query parameter to identify which webhook registration should be disabled.
5.1 Endpoint
DELETE /api/webhook/register?webhookType={Webhook-Type}5.2 Example – Deregister ACH Setup Webhook
DELETE /api/webhook/register?webhookType=TREASURY_SETUP
Ocp-Apim-Subscription-Key:{api_key}
5.3 Example Response
{"data":{"webhookType": "TREASURY_SETUP","deregisteredAt": "2026-08-12T07:29:20.7239878Z"},"success": true,"message": "TREASURY_SETUP webhook deregistered successfully. No further notifications will be sent. Call POST /api/webhook/register to re-enable.","errorList": []}
After deregistration, no further notifications will be sent for that webhook type.
To re-enable the webhook, use the POST /api/webhook/register endpoint again.
6. Retrieve Webhook Registration
The registration status for supported webhook types can be retrieved using the generic GET endpoint.
6.1 Endpoint
GET /api/webhook/register
Ocp-Apim-Subscription-Key:{api_key}