Use the Demand API to retrieve TPI order details, identify Net and Sell rate orders, keep check-in information up to date, and cancel an order when its cancellation terms allow it.
Use the reporting endpoints to retrieve order data. The response identifies the inventory source and, for TPI orders, the rate type.
| Endpoint | Use it to | Integration flow |
|---|---|---|
| orders/details |
| Reporting and reconciliation. See Reporting and reconciliation |
| orders/details/accommodations |
| Post-booking management. See Post-booking management overview. |
In the response from either endpoint, inspect the accommodation's inventory object:
| Field | Meaning |
|---|---|
inventory.third_party: true | The booking uses third-party inventory. |
inventory.type: "sell" | The TPI booking uses a commissionable Sell rate. |
inventory.type: "net" | The TPI booking uses a non-commissionable Net rate. |
Extract these fields and store them in your reporting system to segment bookings accordingly.
- For orders/details, these fields are nested under
data[].accommodations.inventory. - For orders/details/accommodations, they are under
data[].inventory.
Example orders/details response excerpt:
{
"data": [
{
"id": "509430129718800",
"accommodations": {
"inventory": {
"third_party": true,
"type": "sell"
},
"reservation": "12345678"
}
}
]
}The example shows a Sell rate booking. A Net rate booking has "type": "net".
Store inventory.third_party and inventory.type with the order or reservation record. Use these fields to segment reporting; do not infer the inventory source or rate type from the product ID.
→ Use orders/details to retrieve data about the order.
For accommodation-only results on supported filters, include services: ["accommodations"].
- The
endfilter matches the travel service end date, which is the checkout date for an accommodation. It does not, by itself, guarantee that every returned order has astayedstatus. - Check the returned
statuswhen you need to report only on completed stays. - Date-based filters support a maximum range of seven days. Use the endpoint's pagination information to retrieve additional results when present.
Example request:
{
"end": {
"from": "2026-08-01",
"to": "2026-08-07"
},
"currency": "EUR",
"services": ["accommodations"],
"maximum_results": 100,
"sort": {
"by": "updated",
"direction": "descending"
}
}See the orders/details guide for more details.
Use inventory.type to distinguish rate types in your reporting.
- Net rate transactions are not included in the Credit Slip - Reconcile Net rate transactions using the applicable transaction reports for your TPI setup.
- Sell rate transactions are commissionable - Use Credit Slip data for commissionable transactions.
→ Use the orders/details/accommodations endpoint to retrieve up to 100 order IDs or reservation IDs per request.
orders/details/accommodations does not take a date-range filter.
Example request using reservation IDs:
{
"reservations": ["12345678", "87654321"],
"currency": "EUR",
"extras": ["policies", "extra_charges"]
}The
extrasfield is optional. Use the supported values, such aspolicies,extra_chargesandaccommodation_details, when you need those details in the response.Use the Affiliate ID associated with the booking when making post-booking requests.
Net rate bookings use the dedicated Affiliate ID configured for your TPI integration; Sell rate bookings use your regular Affiliate ID.
For TPI bookings, orders/details/accommodations can return third_party_inventory.checkin_number.
- The check-in number is used by the traveller to confirm the booking at the accommodation.
- It may change if the supplier updates the reservation.
The number is also included in a successful orders/create response when available.
Retrieve the latest accommodation order details before check-in and use the latest returned check-in number in traveller-facing information.
The accommodation details response can also include fields such as commission, credit_slip_number, price and status.
Values can be unavailable or null where the schema allows it; do not treat a missing value as zero or as proof that a booking is not TPI.
A useful internal reporting record can include:
| Field | Purpose |
|---|---|
| Order ID and reservation ID | Link the reporting record to Demand API order details. |
inventory.third_party | Identify third-party inventory. |
inventory.type | Separate Net and Sell rate transactions. |
| Check-in and checkout dates | Group transactions by travel period. |
status and cancellation details | Track booking lifecycle and cancellation outcomes. |
| Currency, price and commission fields | Support financial reporting where returned. |
third_party_inventory.checkin_number | Provide the latest check-in reference to the traveller. |
A common reporting workflow is:
- Call orders/details with a date, order ID, reservation ID or pagination filter.
- Identify the accommodation orders in the response and record their order or reservation IDs.
- Call orders/details/accommodations with those IDs to retrieve accommodation-level details.
- Use
inventory.third_partyandinventory.typeto classify each booking.
TPI orders follow the cancellation policies defined by the product.
→ Use orders/cancel to cancel an accommodation reservation. TPI cancellations are subject to the booking's cancellation terms and the reservation's current state.
The cancellation policy is available in the accommodation product's policy details.
In an orders/preview response, review the cancellation schedule.
For an existing booking, use the policy and cancellation details returned by the post-booking endpoints where available.
The cancellation request for an accommodation requires the reservation ID and a reason. The order ID and request_property_approval are optional. Set request_property_approval to true only when you want the accommodation to consider waiving an applicable cancellation fee; approval is not guaranteed.
Example request:
{
"order": "509430129718800",
"accommodation": {
"reservation": "12345678",
"reason": "The traveller's plans have changed.",
"request_property_approval": false
}
}For accommodation cancellations, a successful response returns data.status: "successful".
- If the reservation is already cancelled or cannot be cancelled in its current state, the API can return a 409 response. Other errors are described in Error handling.
- After the cancellation, retrieve the order again with orders/details/accommodations and check its
statusandcancellation_details.
The cancellation details can include the cancellation time, fee and original total price.
For step-by-step cancellation guidance, see Cancel an order and Cancellation policies.