Skip to article

Events

Webhook events

The event payloads the API delivers to your endpoint.

Each delivery is a JSON envelope with a typed event inside it. This page is a placeholder for the event reference.

Envelope#

POST/v1/webhooks/deliveries

The shape your endpoint receives. Verlix calls you; you do not call this path.

{
    "id": "evt_01H...",
    "type": "invoice.issued",
    "createdAt": "2026-09-24T10:00:00Z",
    "data": { "invoiceId": "inv_01H..." }
}

Verify every delivery

Treat an unverified delivery as hostile. Verify the signature over the raw body before you parse it.

Event catalogue#

TypeData
customer.createdcustomerId
invoice.issuedinvoiceId, amountDue
invoice.paidinvoiceId, paidAt
payment.failedpaymentId, failureCode

Process a delivery#

  1. Verify

    Recompute the signature and reject a mismatch with a 401.

  2. Deduplicate

    Store the event id and skip a delivery you have already processed.

  3. Acknowledge

    Return a 2xx quickly, then process the event in a background job.

type Event = { id: string; type: string; data: Record<string, string> };
 
function handle(event: Event): void {
    switch (event.type) {
        case "invoice.issued":
            return void enqueue("sync-invoice", event.data.invoiceId);
        case "payment.failed":
            return void enqueue("dunning", event.data.paymentId);
        default:
            return;
    }
}