{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"1f3adc5e-f566-486d-971c-ff14668b2ec9","name":"RateChain OTA API","description":"RateChain XML API is a standardised way for OTAs to get rates and make reservations to independent car rental suppliers. RateChain ensures that all suppliers provide the information the same way so that one API implementation can be used for multiple suppliers.\n\nGetting rates from the new supplier will require a change of only three parameters in the API request:\n\n\\- the supplier code in the URL\n\n\\- the rate code in the request body\n\n\\- Pick-up and drop-off location codes are in the request.\n\nRateChain also ensures that all rental terms and fees are considered before rates are returned to the broker. It eliminates the need to manage supplier-specific rate rules (e.g., minimum driver age, young driver age, desk opening hours, out-of-hours pickup and drop-off, source country, airport location fee, grace period, minimum time to pick up, etc.) on the OTA side.\n\nThe current version of RateChain API enables to:\n\n- get rates and availability\n    \n- make a reservation\n    \n- get the reservation status\n    \n- Cancel the reservation\n    \n- Modify the reservation (only attributes which do not affect price).\n    \n- Get the supplier desk list\n    \n\nRateChain API uses extensible markup language (XML) and was created based on Open Travel Alliance 2015 Specifications. Specifications and schema can be obtained online at [http://www.opentravel.org.](http://www.opentravel.org/)\n\n# Authorisation\n\nThe API uses basic authentication. The username and password will work for all suppliers.\n\n# **Integration guidelines**\n\n- RateChain validates desk opening hours, driver age requirements, max rental duration, and whether one-way rental is allowed before rates are returned.\n    \n- The young driver fee, one-way rental fee, and out-of-hours fee are automatically added to the rate quote if applicable. You can see from the response if these are added.\n    \n- In some cases (if the car class is not on \"free sell\" or if the desk is closed but it is possible to pickup/drop-off the car on pre-agreement), the reservation may be created in `PENDING` status. In this case, you should repeat the retrieve reservation request until the reservation status is changed to `CONFIRMED` or `REJECTED`. The status change requires manual action from the supplier. Therefore, the status check after every 15 minutes would be reasonable for `PENDING` reservations.\n    \n- The supplier may set up multiple products in RateChain. The product defines the mileage and fuel policy and what coverages and additions (additional driver, etc.) are included in the vehicle rate. It also defines for which source countries the product is available.\n    \n    - The standard practice is to create a rate code for each product. It means that the rate quote response always includes rates for one product.\n        \n    - The rate quote response does not contain the product name or ID, but it includes information defined by the product (mileage policy, fuel policy, included coverages and additions).\n        \n- The available optional extras and coverages list may vary by car class. Therefore, we recommend getting this information from the rate response.\n    \n    - Mandatory and optional charges are listed under `/VehAvailCore/RentalRate/VehicleCharges/` element. Charges which are already included in the rate can be detected by`../VehicleCharge/@IncludedInRate` element.\n        \n    - Coverage options are listed under `.../VehAvailInfo/PricedCoverages` element. If the coverage is already included in the rate then it is shown on `.../PricedCoverage/Charge/@IncludedInRate` element.\n        \n    - Equipment options are listed `.../VehAvailCore/PricedEquips` element and `../PricedEquip/Charge/@IncludedInRate` element indicates if it is included in provided rate or not.\n        \n- Total price of rental is returned in `../VehAvailCore/TotalCharge/@EstimatedTotalAmount` element of rate response. This amount includes taxes, charges, coverages and equipment indicated as \"included in rate\". In the case of a Retail contract, it also includes broker commission. `.../VehAvailCore/TotalCharge/@RateTotalAmount` includes only vehicle time and mileage rate without taxes, fees, coverages or equipment prices. The \"pay now\" amount (without broker commission) should be taken from `.../VehAvailInfo/PaymentRules/PaymentRule/@Amount` element.\n    \n- It is highly recommended that the broker reference number be added to the reservation request. This is beneficial if there is a network error or timeout. The broker reference number can be used in the Retrieve reservation request to check whether the reservation was created on our side.\n    \n- Changing the county of residency may change the rate, but it is an infrequent case. It is possible to make a reservation with a different source county than the one used for the rate request. The reservation is created without warning if it does not affect the rate.\n    \n- The source country may affect the product availability. Therefore, it is required that the source county in the rate quote request matches the source county in the reservation request.\n    \n- The rate quote ID is valid only for two hours. If you need to get a new rate quote ID for the vehicle, then `../TPA_Extensions/VehicleId/@VehicleId` attribute can be used to find the exact vehicle from the new rate quote response.\n    \n- The modify reservation can be used to change only the reservation data, which does not affect the vehicle rate. (Driver name, phone, flight number, etc). Also, you can use the modify reservation to add optional extras because these are paid on pickup\n    \n- We recommend implementing an option to include a promo code with the rate request. The promo code returns campaign prices that are valid for a limited period or under certain conditions. We validate the promo code on our side. If the code is not valid, standard rates are returned. You can see the promo code discount percentage and amount from the rate response.\n    \n- The easiest way to detect how much the broker should collect on behalf of the supplier is to check `.../VehAvailInfo/PaymentRules/PaymentRule/@RuleType` and `.../VehAvailInfo/PaymentRules/PaymentRule/@Amount` elements. If the RuleType=2, then the Amount attribute represents how much of the vehicle rate should be collected by the broker (\"Pay now\" amount). Payment type is also provided in `.../VehAvailCore/TPA_Extensions/Contract/@ContractPaymentType` element  \n    The easiest way to detect how much the broker should collect on behalf of the supplier is to check `.../VehAvailInfo/PaymentRules/PaymentRule/@RuleType`\n    \n\n| **Payment Type** | **Description** |\n| --- | --- |\n| PARTIAL_PREPAY | The broker collects only its markup, and the customer has to pay the net rate and optional extras on pickup. |\n| FULL_PREPAY | The broker should collect the vehicle rental rate and pay the supplier the net rate. NB! Optional extras and coverages remain payable at pickup. |\n\n# Change log\n\n2025 May - Added option to retrieve the reservation info by the broker's reference number.\n\n2025 Feb - The desk email, emergency phone, pickup, and return instructions were added to the desk info response.\n\n2024 Dec - Change in driver age verification when creating a reservation. The driver's age may differ in the Rate quote and the Reservation request. The reservation price will be updated automatically, and a warning will be added to the response if the driver's age requires the young driver fee.\n\n2024 May - Promo code field added to the rate quote request and the reservation response.\n\n2023 Nov - Location co-ordinates attribute added to the Get desk info response.\n\n2023 May - A new request to modify a reservation. It only supports the amending of fields that do not affect the vehicle rental price.\n\n2022 Nov - A new request to get a list of the suppliers' locations with the location details.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"298340","team":4160855,"collectionId":"1f3adc5e-f566-486d-971c-ff14668b2ec9","publishedId":"2sB2j96UH1","public":true,"publicUrl":"https://ota.docs.rate-chain.com","privateUrl":"https://go.postman.co/documentation/298340-1f3adc5e-f566-486d-971c-ff14668b2ec9","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"RateChain XML API for OTAs and care rental brokers to get rates and make reservations for independent car rental suppliers that are using RateChain for rate management. "},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.10.1","publishDate":"2025-05-08T16:15:35.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":"RateChain XML API for OTAs and care rental brokers to get rates and make reservations for independent car rental suppliers that are using RateChain for rate management. "},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"Production","id":"1c448111-700c-4787-8379-6261e12f6376","owner":"298340","values":[{"key":"baseURL","value":"https://api.rate-chain.com/ota/v1","enabled":true,"type":"default"},{"key":"rate_update_baseURL","value":" https://api.rate-chain.com/rate-update/","enabled":true}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/3309e7f8c27abb0c4924f1eec7adebf4117bbdf4129fc4fcd663f1842fb812c7","favicon":"https://rate-chain.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Production","value":"298340-1c448111-700c-4787-8379-6261e12f6376"}],"canonicalUrl":"https://ota.docs.rate-chain.com/view/metadata/2sB2j96UH1"}