Receive webhooks

Ormuz webhooks deliver platform business events to your systems with a stable JSON payload and a Svix signature that must be verified before processing.

Model

Endpoint webhook

A webhook endpoint belongs to a merchant and targets an HTTPS URL in your application. It receives the events listed in filter_types. When no filter is defined, the endpoint receives events compatible with its configuration.

filter_typesstring[] | null

Event types delivered to this endpoint, for example invoice.issued.

secretstring

Signing secret managed by Svix for this endpoint. Retrieve it with GET /v1/webhooks/{endpoint_id}/secret and store it on the receiving side.

disabledboolean

A disabled endpoint receives no more deliveries.

attemptslist

Attempts, HTTP responses, retries, and replays are available through webhook-observability endpoints.

Configuration

Create and manage an endpoint

Create an endpoint with your handler's public URL and the list of events to receive. Then retrieve the endpoint signing secret and store it in your receiving system.

MethodEndpointUsage
POST/v1/webhooksCreate a webhook endpoint for a merchant.
GET/v1/webhooks?merchant_id=mer_...List a merchant's endpoints.
POST/v1/webhooks/{endpoint_id}Update the URL, subscribed events, channels, or status.
DELETE/v1/webhooks/{endpoint_id}Supprimer l’endpoint.
GET/v1/webhooks/{endpoint_id}/secret?merchant_id=mer_...Retrieve the endpoint's Svix signing secret.
POST/v1/webhooks/{endpoint_id}/secret/rotateRotate the Svix signing secret.
POST/v1/webhooks/testTrigger a test delivery within a merchant scope.
GET/v1/webhooks/{endpoint_id}/attempts?merchant_id=mer_...List delivery attempts.
Console: webhook endpoints, subscriptions, and delivery history.
The Console groups outbound endpoints, subscriptions, and access to delivery history. Enlarge

Delivery

Delivered event format

Ormuz sends a POST JSON request. The body contains the event identifier, type, merchant, timestamp, and relevant business payload.

Respond with an HTTP 2xx status only after persisting or deduplicating the event in the receiving system. Use id as the idempotency key.

Headers

HeaderDescription
svix-idUnique identifier of the signed message. It is part of signature calculation.
svix-timestampSigned Unix timestamp. Reject timestamps outside tolerance to limit replays.
svix-signatureVersioned Svix signature containing one or more v1.

Security

Verify the signature

Verify the signature against the raw received body before parsing JSON. Ormuz outbound webhooks use Svix signatures; legacy X-Webhook-Signature headers are no longer emitted. Prefer a Svix library with the secret returned for the endpoint: it applies the versioned signature format and timestamp verification without reimplementing the protocol.

  1. Preserve the raw body and read svix-id, svix-timestamp and svix-signature.
  2. Verify the message with the endpoint secret and a Svix library.
  3. Reject delivery when the signature or its time window is invalid.
  4. After verification, deduplicate processing using the event identifier.

Abonnements

Choose events

The filter_types field accepts only Core platform events declared deliverable by webhook. The extension.* events are used for internal orchestration and are not outbound-webhook subscription types. Prefer an explicit list when your endpoint needs only a subset of events.

FamilyExamples
Companycompany.created, company.updated, contact.created, contact_role.certified
Onboarding & complianceonboarding_case.completed, onboarding_case.rejected, compliance_check.created, compliance_check.review_required
Commerceorder.created, order.confirmed, checkout_session.completed
Invoicinginvoice.created, invoice.issued, invoice.sent, invoice.cancelled
Paymentspsp_payment.succeeded, payment.received, payment_allocation.complete
Orchestrationprocess.instance.replayed, process.user_action.completed, approval_request.resolved

For the complete list and type semantics, see the event catalog.

Operations

Test and operate

Use POST /v1/webhooks/test to trigger a test delivery for the merchant. The received delivery has type webhook.test.

  • Temporarily disable an endpoint with disabled when you need to pause deliveries.
  • Inspect attempts to see HTTP statuses, errors, timestamps, and observed responses.
  • Use message replay when your endpoint failed after a receiver-side incident.