Events

Billey fires six webhook events. That is the complete list — there are deliberately no *.updated or *.deleted events, and a POS sale fires nothing.

The catalogue

Event Fires when data shape
invoice.created An invoice is created Invoice
invoice.sent An invoice transitions to Sent Invoice
invoice.paid An invoice transitions to Paid Invoice
expense.created An expense is created Expense
expense.paid An expense transitions to Paid Expense
client.created A client is created Client

In every case data is byte-identical to what the REST GET for that resource returns — parse it with the same code you already use for the endpoint.

Example payload

An invoice.paid delivery:

{
  "id": "9f1b7c2a-3d4e-4f5a-8b6c-1d2e3f4a5b6c",
  "type": "invoice.paid",
  "created_at": "2026-07-21T10:15:30Z",
  "data": {
    "id": 42,
    "invoice_number": "2026-0042",
    "status": "paid",
    "is_credit_note": false,
    "currency": "EUR",
    "total": "1250.15",
    "paid_at": "2026-07-21T10:15:30Z",
    "client": { "id": 7, "name": "Example Client B.V." },
    "line_items": [ /* … */ ]
  }
}

What does not fire an event

  • No *.updated and no *.deleted for any resource. To track edits or removals, poll the endpoint with updated_after and include_deleted (see Pagination).
  • POS sales emit no webhook at all — the point-of-sale area has no API or webhook surface in v1.

Read Verifying signatures before you act on any of these, and the Overview for delivery, retries, and headers.

Something inaccurate or missing? support@billey.nl