Skip to content

Third-party inventory (TPI) rates FAQs

Find answers to common questions about TPI Sell and Net rates, including how to retrieve, identify, book, report and cancel them with Demand API v3.3.


General

What are third-party inventory (TPI) rates?

TPI rates are accommodation offers facilitated by third-party suppliers through Booking.com.

They complement Booking.com-sourced inventory and can be available as commissionable Sell rates or non-commissionable Net rates, depending on your account setup.

Which Demand API versions support TPI rates?

TPI rates are available from Demand API v3.1 onwards.

This FAQ links to the v3.3 API reference. Use v3.3 for the current schema and endpoint examples.

What is the difference between TPI Sell and Net rates?
  • Sell rates are commissionable. They use your regular Affiliate ID and can be distributed through public or restricted-access channels, subject to your agreement.
  • Net rates are non-commissionable. You set your margin and must distribute them through approved gated or opaque channels. They require a dedicated Net rates Affiliate ID.

Both rate types have account-specific eligibility and payment requirements.

See the Sell rates guide and Net rates guide.

Does my account need to be enabled for TPI?

Yes. TPI availability depends on your account being enabled for the relevant rate type and using its configured Affiliate ID.

Contact your Booking.com Account Manager if you are unsure which TPI products your account can access.

Why are no TPI rates returned by my search?

Check that:

  • Your account is enabled for the TPI rate type you are requesting.
  • You use the correct Affiliate ID: your regular ID for Sell rates or the dedicated ID for Net rates.
  • The request searches for one room and includes extras: ["products"].
  • The property and dates have eligible TPI availability.
  • Your filters allow the required online payment flow. The search filter value pay_online does not mean that every returned product supports pay_online_now; inspect each product's policies.payment.timings.

A search can return regular inventory as well as TPI. Check the response fields described below to identify each product.

How do I identify a TPI rate in a response?

Check both fields in the product's inventory object:

  • inventory.third_party: true identifies third-party inventory.
  • inventory.type: "sell" identifies a commissionable Sell rate; inventory.type: "net" identifies a non-commissionable Net rate.

Do not identify a TPI rate from inventory.type alone, a product ID prefix, or the legacy top-level third_party_inventory flag.

For bookings, orders/details returns the fields under data[].accommodations.inventory; orders/details/accommodations returns them under data[].inventory.


Search and display

Which endpoint should I use to refresh TPI availability?

Use accommodations/availability to retrieve current products, prices and policies.

The v3.3 endpoint supports up to 50 accommodation IDs per request. There is no bulk-availability endpoint in v3.2 neither in v3.3 schema.

Can I search for or book multiple rooms with TPI?

No. TPI supports one room per booking.

The room can have single, double or multiple occupancy, subject to the product's occupancy rules.

Create separate reservations for separate rooms.

Can I combine a TPI rate and a Booking.com-sourced rate in one booking?

No. A booking cannot combine TPI and regular Booking.com inventory.

Select products from one supported inventory source for each booking.

What rate information should I show to travellers?

Show the selected product's total price and applicable charges, room and occupancy details, meal plan, cancellation terms, and payment timing.

Use the latest product information from accommodations/availability when the traveller selects a rate.

Follow your distribution agreement and account guidance for how to label TPI offers in your interface. Do not label an offer “Partner Offer” or “Third-party inventory” without approval for that wording.

Why is `best_available_price` missing from a Net rate response?

The best_available_price runtime field is returned for TPI Net rates only when the show_best_available_price_for_net_rates setting is enabled for your account.

It is available in v3.2 and v3.3, but is not publicly available in the API references.

Its absence does not mean that a rate is not Net. Ask your Account Manager whether the setting is enabled.


Booking and payments

How do I book a TPI rate?

Use the standard accommodation booking flow:

  1. Search with accommodations/search, using one room and requesting the products extra.
  2. Check current prices, availability and policies with accommodations/availability.
  3. Preview the selected product with orders/preview.
  4. Create the order with orders/create, using the order token and booking details from the preview.

The booking flow is subject to your TPI account setup, the selected product's current terms and its supported payment method.

Which payment methods can I use for TPI?
  • Net rates: Virtual credit card (VCC) only.
  • Sell rates: Credit card or VCC, depending on your account setup and the selected rate.

Use the payment details required by the selected product and your TPI configuration. See the Net rates guide or Sell rates guide for rate-specific requirements.

Can I book a TPI rate with `pay_online_later` or pay at the property?

No. TPI bookings support pay_online_now. Check the selected product's policies.payment.timings in the latest availability response and use a supported payment timing.

The search filter pay_online is broader than pay_online_now, so do not treat the filter value as confirmation that a rate can be booked using pay_online_now.

What does `method_required` mean in the orders/preview response?

method_required indicates whether a payment method is required for the specific payment timing shown in the preview response. It does not identify whether a rate is TPI, Sell or Net. Identify the rate using its inventory fields, and follow the payment method and timing supported for that product and your account.

What should I include in an orders/create request?

Use the valid order_token from orders/preview, the selected accommodation product and allocation, booker and guest details, and the payment object required for the selected rate.

See the v3.3 orders/create reference for the complete request schema.

credit_card_required is a search filter; it is not a payment setting to add to orders/create. Configure the payment object according to the selected rate and your Sell or Net setup.

What booking information should I show to the traveller?

Show the confirmation details returned for the booking, including the pincode and, when returned, the TPI check-in number and confirmation number.

  • The confirmation number is used together with the pincode to verify the booking and support enquiries.
  • The check-in number is required at check-in when provided for the TPI reservation.
Where can I retrieve the TPI check-in and confirmation numbers?

The successful orders/create response can include accommodation.third_party_inventory.checkin_number and confirmation_number.

The orders/details/accommodations response can return the current third_party_inventory.checkin_number.

The check-in number may change if the supplier updates the reservation, so retrieve the latest accommodation order details before check-in and share the latest value with the traveller.


Post-booking, reporting and cancellations

Which endpoints should I use after booking?
  • Use orders/details to retrieve order-level information and report across bookings.
  • Use orders/details/accommodations to retrieve accommodation-level details by order ID or reservation ID.
  • Use orders/cancel to request cancellation when the booking's terms and current state allow it.

See the TPI reporting and post-booking guide for the reporting workflow and examples.

Are TPI Net bookings included in my Credit Slip?

No. Net rate bookings are not included in the Credit Slip.

The Credit Slip includes commissionable bookings, including TPI Sell bookings. Reconcile Net transactions using the reporting available for your TPI setup.

Which fields should I store for reporting and reconciliation?

At minimum, store the order ID and reservation ID, inventory.third_party, inventory.type, booking status, travel dates, currency and price details.

Where returned, also store commission and cancellation details. Keep the latest TPI check-in number available for traveller support.

For orders/details, accommodation inventory fields are under data[].accommodations.inventory. For orders/details/accommodations, they are under data[].inventory.

Can I modify a TPI booking?

No. TPI bookings cannot be modified. If the traveller needs different dates or another room, follow your cancellation and rebooking process, subject to the booking's cancellation terms and the availability of a suitable rate.

Can I cancel a TPI booking?

You can request cancellation using orders/cancel, subject to the booking's cancellation terms and current state. Check the applicable cancellation policy and any fee before sending the request. Do not assume that every non-refundable or partially refundable booking has the same cancellation outcome; use the policy returned for the selected booking.

Where can I find a TPI rate's cancellation policy?
  • Before booking: Check the cancellation information returned for the selected product by accommodations/search or accommodations/availability.
  • Before confirming: Review the cancellation policy and schedule returned by orders/preview.
  • After booking: Retrieve the booking using orders/details/accommodations and request policy details where supported. The response can also include cancellation_details if the booking has been cancelled.

Always use the policy for the selected product and booking; do not infer it from the rate type alone.


Troubleshooting

I received a 409 response when cancelling a booking. What should I check?

A 409 response means the cancellation could not be processed in the reservation's current state. For example, the booking may already be cancelled or no longer eligible for cancellation. Retrieve the latest order details and check the cancellation terms and status before taking further action.

Does a 500 response from `orders/cancel` mean the booking is non-refundable?

No. A 500 response indicates an internal server error; it does not identify the booking's cancellation policy. Check the policy and status returned for the booking. For a cancellation that cannot be processed in the current state, the v3.3 schema documents a 409 response.

I received an invalid payment method error. What should I check?

Confirm that you are using the correct Affiliate ID and a payment method supported for the selected rate: VCC for Net rates, or a credit card or VCC for Sell rates according to your account setup.

Check the payment methods and timing returned for the selected product and ensure your orders/create payment object follows the v3.3 schema.

Which Affiliate ID should I use?

Use your regular Affiliate ID for TPI Sell rates and the dedicated Affiliate ID configured for TPI Net rates. Use the Affiliate ID associated with the booking for post-booking requests.

Contact your Booking.com Account Manager if you are unsure which ID applies.

My `orders/create` request says that the order token is invalid or expired. What should I do?

Run orders/preview again with the current selected product and booking details, then submit orders/create using the new order token. The token expires 15 minutes after it is issued. Do not reuse an expired token or retry with a changed product selection.