Overview
Theinvoice.created event is sent every time an invoice document is issued in BookingShake. This covers all invoice document types: standard invoices, deposit invoices, balance invoices, and credit notes.
The legal invoice is immutable once issued - its amounts, lines, and seller / account / contact snapshots are frozen - so there is no invoice.updated or invoice.deleted event. A legal correction is always materialized by a new document (typically a credit note), which triggers its own invoice.created event. The only writable part of an invoice is its free-form metadata (integration key/value pairs); updating it is a silent side-channel write that emits no webhook.
Quotes do not trigger this event. Global invoices (issued across multiple bookings at once) are also excluded.
- Sync invoices to your accounting software or ERP
- Archive legal documents in your own document management system
- Track revenue in real-time across venues
- Feed e-invoicing pipelines (the payload is aligned with EN 16931 semantics)
Conventions
The invoice payload follows strict conventions, shared with payment events:Invoice Types
Thetype field identifies the document type. type_code carries the corresponding UNTDID 1001 code used in e-invoicing standards:
type_code follows UNTDID 1001 (BT-3 in EN 16931, the basis of the French e-invoicing reform). This coding is broader than our internal types, so several type values legitimately share the same code. Only the deposit invoice has a dedicated code (386); a balance invoice is a standard invoice (380) that references the deposits, consistent with the B4/S4/M4 framework. Credit notes use 381, except a credit note on a deposit invoice which uses 503.Payload Example
Data Fields
General
Amounts
All amounts are integer cents, and are always the amounts of the document itself: a balance invoice carries the balance amount, not the total of the full service.On a balance invoice, the total of the full service can be recomposed as
amount_incl_tax + sum(deposit_invoices[].amount_incl_tax). The deposits deducted from the balance are itemized in deposit_invoices and appear as negative deduction lines in lines.Lines
lines contains the invoice line items as printed on the PDF, self-consistent with the document totals: sum(lines[].total_excl_tax) - global_discount_excl_tax = amount_excl_tax (within rounding).
Per document type:
- Deposit invoice: the deposit lines (one per VAT rate), not the lines of the underlying quote.
- Balance invoice: the full service lines, followed by one negative deduction line per deposit invoice and VAT rate (e.g.,
Déduction acompte FAC-2026-0021 (TVA 20%)with a negativetotal_excl_tax). - Credit notes: same line structure as the document type they cancel.
Relations
Payments
payments contains the payment schedule attached to the invoice, as it stood when the invoice was issued. Since there is no invoice.updated event, this array is a snapshot: to follow the lifecycle of each payment afterwards (marked as paid, rescheduled, canceled), subscribe to payment events and join them on id — each entry here has the exact same shape as the data block of payment.* events, minus the join keys (invoice_id, invoice_number, quote_id, booking_id) already carried at the invoice level.
Entries are sorted by due_date (then created_at). Security deposits (holds) are excluded, consistent with payment events. Credit notes carry an empty array.
Amounts are signed: a negative amount with status
paid represents a refund - see Refunds.
Seller, Account, and Contact Blocks
seller (your venue), account (the buyer company), and contact (the buyer contact) are frozen snapshots captured when the invoice was issued. They reflect the legal mentions printed on the PDF and will not change if the live account or contact is later edited.
Field names are aligned with the account.* and contact.* events: a consumer sees the same account format across all event types.
Fields specific to these blocks:
Any of the three blocks can be
null if the corresponding entity was not set on the booking (e.g., account is null for an individual customer without a company).Next Steps
Payment Events
Track payments with the payment.created, updated, and deleted events
Security & Verification
Verify webhook signatures before processing
