List invoices
limit 1-100 default 25, opaque cursor, response { "items": [...], "next_cursor": "..." }), newest first. Filters: created_from/created_to (Unix ms, issue date), type (invoice, deposit_invoice, balance_invoice, credit_note, deposit_credit_note, balance_credit_note) and status (ongoing, paid, canceled). Items use the full invoice payload below - the natural way to backfill historical invoices before relying on the invoice.created webhook.
Iterate on
next_cursor until it is null: a page may contain fewer than limit items even when more data remains. When type and status are combined, status is applied after the indexed query.Get an invoice
Overview
GET /invoices/{id} returns a single invoice by its document ID - useful to back-fill a missed webhook, reconcile your accounting, or re-fetch a document on demand.
The endpoint returns standard invoices, deposit invoices, balance invoices, and their credit notes. Quotes are not exposed by this endpoint.
Amounts are always integer cents, dates are
YYYY-MM-DD strings in the Europe/Paris timezone, timestamps are Unix milliseconds, and missing values are explicit null. See the invoice webhook reference for the full field-by-field definition.Authentication
All requests require a Bearer token (your BookingShake API key):Path Parameters
string
required
The invoice document ID - the
id field carried by the invoice.created webhook.Request
Response
The invoice is returned wrapped in the standard{ message, data } envelope. The data object follows the Invoice schema.
Key Fields
For the complete field reference (amounts, lines, snapshot blocks), see the invoice webhook documentation.
Errors
A
404 is returned uniformly whenever the invoice is outside your scope, so the existence of another venue’s invoice is never disclosed.Next Steps
Invoice Events
Receive invoices in real time via the invoice.created webhook
Payment Events
Track payments tied to the same booking
Update invoice metadata
Overview
PATCH /invoices/{id} updates the metadata of an issued invoice - a free-form bag of string key/value pairs you can use to attach your own references (an external accounting ID, a Mews record, a sync state…).
An issued invoice is legally immutable: its amounts, lines, and the seller / account / contact snapshots are frozen at issue time and cannot be changed through this endpoint. metadata is the only writable field; it lives alongside the legal invoice and never affects it. A legal correction is always materialized by a new document (typically a credit note), never by editing an invoice.
This endpoint does not emit any webhook - there is no
invoice.updated event. Updating metadata is a silent, side-channel write. Any attempt to modify a legal field is rejected with 422.metadata: { "ref": "ABC" }upserts therefkey, leaving every other key untouched.metadata: { "ref": null }deletes therefkey.
Authentication
All requests require a Bearer token (your BookingShake API key):Path Parameters
string
required
The invoice document ID - the
id field carried by the invoice.created webhook.Body Parameters
object
required
A flat object of string values. Pass
null as a value to delete that key. Keys present in the object are merged into the existing metadata; keys you omit are left untouched.Limits: up to 50 keys per invoice, each key ≤ 40 characters, each value ≤ 500 characters. Nested objects, arrays, and non-string values are rejected with 422.Request
Response
The full invoice is returned in its post-update state, wrapped in the standard{ message, data } envelope - identical in shape to GET /invoices/{id}, with the updated metadata.
Errors
A
404 is returned uniformly whenever the invoice is outside your scope, so the existence of another venue’s invoice is never disclosed.Next Steps
Get an Invoice
Retrieve an invoice and read its current metadata
Invoice Events
Receive invoices in real time via the invoice.created webhook
