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
*.updatedand no*.deletedfor any resource. To track edits or removals, poll the endpoint withupdated_afterandinclude_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