{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-connectivity/docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"RtB 2.0 migration guide","siteUrl":"https://developers.booking.com","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"rtb-20-migration-guide","__idx":0},"children":["RtB 2.0 migration guide"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide walks you through upgrading your RtB integration to version ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.0"]},". The key change: for"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RTB"]}," requests, you now block provider-side availability when the request is created, not when it is"," ","booked. Release it if the request is rejected, expires, or fails. Everything else in the"," ","guide adds the API fields to support that."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you start, read the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/rtb-2.0/overview"},"children":["RtB 2.0 overview"]}," to understand how the RTB flow differs from the"," ","INQUIRY flow, especially around inventory holds and payment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"steps","__idx":1},"children":["Steps"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Confirm the property is eligible."]}," RtB 2.0 has geographical, payment-model, and provider"," ","requirements. Check them in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/rtb-2.0/eligibility"},"children":["Eligibility"]}," before you begin."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Send the new version header."]}," Switch your requests to version 2.x by sending:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"X-Booking-Api-Version: 2.0.0\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Omitting the header keeps you on the default ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1.0.1"]},". See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/technical-overview#versioning"},"children":["Versioning"]}," for the full version"," ","history."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Handle the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestType"]}," field."]}," Each Booking Request now carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestType"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INQUIRY"]}," or"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RTB"]},"). Branch your logic on it: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RTB"]}," requests hold inventory while pending, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INQUIRY"]}," ","requests do not. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/rtb-2.0/api-changes#new-field-requesttype"},"children":["New field: requestType"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Implement status-based availability holds."]}," For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RTB"]}," requests, block provider-side"," ","availability at ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CREATED"]}," and release it on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REJECTED"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EXPIRED_PENDING_APPROVAL"]},", and"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED_TO_PROCESS"]},", propagating each change across your channels. Do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," re-block when the"," ","reservation later arrives via the Reservations API. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/rtb-2.0/availability-management"},"children":["RtB 2.0 availability management"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Handle the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED_TO_PROCESS"]}," status."]}," Extend your internal model to accept this status and"," ","release any hold when it occurs. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/rtb-2.0/api-changes#new-request-status-failed_to_process"},"children":["New request status: FAILED_TO_PROCESS"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Validate before going live."]}," Run the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/rtb-2.0/self-assessment"},"children":["self-assessment"]}," scenarios and share the RUIDs with"," ","your Booking.com contact."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Go live by enabling the provider feature."]}," Once your integration is built and validated,"," ","enable the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rtb_api_v2_enabled"]}," provider feature in Provider Portal. Only then will your"," ","properties begin receiving ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RTB"]}," requests. Until it is enabled, all requests continue to"," ","use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["requestType = INQUIRY"]},"."]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Enable only after migration is complete"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rtb_api_v2_enabled"]}," only once your integration handles the new fields and availability rules."," ","Turning it on before you are ready means your properties start receiving ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RTB"]}," requests you cannot"," ","process correctly, which can break bookings."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-step-support-guest-withdrawals-upgrade-to-210","__idx":2},"children":["Next step: support guest withdrawals (upgrade to 2.1.0)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you are live on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.0"]},", the recommended next step is to adopt the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/withdrawal"},"children":["withdrawal"]}," feature by"," ","bumping to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Booking-Api-Version: 2.1.0"]},", an incremental release on top of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.0"]},". It adds the"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WITHDRAWN_PENDING_APPROVAL"]}," status. For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RTB"]}," requests, you handle it by releasing the inventory"," ","hold, the same way you handle ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REJECTED"]},". For ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INQUIRY"]}," requests there is no inventory hold to"," ","release, so you mark the request as withdrawn. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/withdrawal"},"children":["Handling guest withdrawals"]},". For the full list"," ","of versions and what each adds, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/connectivity/docs/request-to-book/technical-overview#versioning"},"children":["Versioning"]},"."]}]},"headings":[{"value":"RtB 2.0 migration guide","id":"rtb-20-migration-guide","depth":1},{"value":"Steps","id":"steps","depth":2},{"value":"Next step: support guest withdrawals (upgrade to 2.1.0)","id":"next-step-support-guest-withdrawals-upgrade-to-210","depth":2}],"frontmatter":{"title":"RtB 2.0 migration guide","description":"A step-by-step guide for moving a Request to Book integration from version 1.x (INQUIRY flow) to version 2.0.0 (RTB flow), covering eligibility, the version header, the requestType field, availability holds, FAILED_TO_PROCESS, and validation.","keywords":{"includes":["migration","RtB 2.0","2.0.0","requestType","RTB","INQUIRY","FAILED_TO_PROCESS","versioning"]},"seo":{"title":"RtB 2.0 migration guide"}},"lastModified":"2026-07-29T11:41:00.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/connectivity/docs/request-to-book/rtb-2.0/migration-guide","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}