Retrieves invoice items for one or more reservations.
Field selection
You must specify at least one field to return via the fields query parameter.
id is always included on every invoice item and reservationId and currency are always included at the result level — none of these need to be listed in fields.
Use the exact enum values listed — any unrecognized field name results in a 400 error.
Nested fields must be requested using their full dot-notation path.
The parent name alone (e.g. adjustments) is not a valid selection;
you must specify the leaf fields you need (e.g. adjustments.amount, adjustments.type).
A field listed in fields may still be absent from a given invoice item when no value is stored for that item.
For example, description, logs, and realizationDates are omitted rather than returned as null when not set.
Scalar arrays such as adjustments and nightsBreakdown may be omitted or empty depending on the item type and data.
See each field's description for details on when it may be absent.
Response structure
Each result groups all invoice items for one reservation under a reservationId key and includes the reservation currency.
The invoiceItems array contains one entry per invoice item on that reservation,
with only the requested fields populated.
An empty invoiceItems array means the reservation exists but has no invoice items.
Results order and invoice item ordering within the array is not guaranteed.
Currency and monetary amounts
All monetary fields (totalPrice, nightsSubtotal, adjustments.amount, nightsBreakdown.basePrice, etc.)
are in the ISO 4217 currency returned in the top-level currency field for that reservation.
Values are returned with full precision as stored; no additional rounding is applied by this endpoint.
Tax treatment follows the channel and reservation configuration and is reflected in the stored amounts.
Monetary fields on the same invoice item do not necessarily reconcile arithmetically.
For example, totalPrice is the final stored amount after all adjustments, while nightsSubtotal is the
sum of per-night prices before adjustments — these will differ whenever adjustments exist.
Tax treatment, deductions (isDeducted, isDeductedV2), and account-level configuration each affect
stored amounts independently. Treat each field as the authoritative figure for its own semantic
rather than attempting to derive one field's value from another.
Partial success
A reservation ID is placed in notFound when the reservation does not exist.
The response always returns HTTP 200. Found records appear in results;
unavailable IDs are listed in notFound.
Batching
A maximum of 200 reservation IDs can be submitted per request.
For larger datasets, split reservation IDs into batches of up to 200 and call this endpoint once per batch.
Example usage
Fetch the line item type, total price, and per-night breakdown for two reservations:
GET /v1/guest-folio/invoice-items?reservationIds=64a1f2c3e4b0a1b2c3d4e5f6,64a1f2c3e4b0a1b2c3d4e5f7&fields=normalType,totalPrice,nightsBreakdown.date,nightsBreakdown.basePrice| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
