HQ Rental Software
    • Getting started
    • Authentication
    • Base URLs, regions and versioning
    • Errors
    • Responses and pagination
    • HQ concepts and glossary
    • Custom fields and item types
    • Dates, time zones and money
    • Filtering and incremental sync
    • Guide: build a booking engine on your website
    • Guide: connect an OTA or broker
    • Guide: sync your fleet and prices to a website
    • Guide: sync invoices and payments to accounting
    • Guide: sync customers with a CRM
    • Guide: take payments
    • Guide: bill tolls and fines
    • Rate limits and idempotency
    • Webhooks
    • Car Rental
      • Comments
        • List the comments of a record
        • Create a comment
        • Update a comment
        • Delete a comment
        • List the comments of a reservation
        • Add a comment to a reservation
        • Delete a reservation comment
      • Currencies
        • List currencies
      • Emails
        • List email templates
        • Send an email template for a record
        • Send the reservation confirmation email
        • Send the rental agreement email
        • List the email templates of a reservation
        • Send an email template for a reservation
        • Create a quote and email it
      • Addresses
        • List the addresses of a record
        • Create an address
        • Get an address
        • Update an address
        • Delete an address
      • Fields
        • List the fields of a record type
        • Get a field by its column
        • List the customer form fields (booking step 5)
      • Blocked Days
        • List blocked days
      • Customer Credits
        • List the credit transactions of a customer
        • Add credit to a customer
        • Update a credit transaction
        • Delete a credit transaction
      • Fines
        • List fines
        • Create a fine
        • Get a fine
        • Update a fine
        • Delete a fine
      • Packages
        • List package items
        • Get a package item
        • List packages
        • Get a package
      • Quotes
        • List quotes
        • Get a quote
      • Rate Types
        • List rate types
        • Create a rate type
        • Get a rate type
        • Delete a rate type
        • Update a rate type
      • Rates
        • List rates
        • Create a rate
        • Get a rate
        • Delete a rate
        • List rates (v2)
        • Update a rate
      • Reservation Attempts
        • List reservation attempts
        • List reservation attempts by email
      • Extensions
        • List the extensions of a reservation
        • Extend a rental
        • Delete an extension
      • External Charges
        • List the external charges of a reservation
        • Add an external charge to a reservation
        • Delete an external charge
      • Adjustments
        • List the adjustments of a reservation
        • Add an adjustment to a reservation
        • Delete an adjustment
      • Payments
        • List the payments of a reservation
        • Record a payment on a reservation
        • Update a payment
        • Release an offline security deposit
        • Refund an online security deposit
        • Charge the customer's saved card
      • Refunds
        • List the refunds of a reservation
        • Record a refund on a reservation
        • Update a refund
      • Reservations
        • Confirm a reservation
        • Cancel a reservation
        • Set a reservation to pending
        • Set a reservation to quote
        • Mark a reservation as no-show
        • Mark a reservation as ready for pick-up
        • Get the options for the dates step (booking step 1)
        • Validate dates and list available vehicle classes (booking step 2)
        • Change the vehicle class of a reservation
        • List additional charges for a vehicle class (booking step 3)
        • Price a vehicle class with selected charges (booking step 4)
        • Create or update the booking customer (booking step 6)
        • Create the reservation (booking step 8)
        • Update a reservation
        • List reservations
        • Get the rental agreement link
        • Mark the rental agreement as signed
        • Get a reservation
        • Assign a vehicle to a reservation
        • Detach the vehicle from a reservation
        • List the vehicles available for a reservation
        • List the free vehicle class upgrades of a reservation
        • Apply a free vehicle class upgrade
        • Upload the driver signature
        • Upload pick-up or return photos
        • Search availability and prices for all vehicle classes
        • List reservations (API v2)
      • Vehicle Replacements
        • List the vehicle replacements of a reservation
        • Replace the vehicle of a rental
        • Delete a vehicle replacement
      • Reservation Agents
        • List the users that can be assigned as agents
        • Assign the agents of a reservation
        • Assign the return agents of a reservation
      • Seasons
        • List seasons
        • Create a season
        • Get a season
        • Update a season
        • Delete a season
      • Security Deposits
        • List security deposit rules
        • Get a security deposit rule
      • Availability
        • List availability of vehicle classes
        • Get availability of a vehicle class
      • Driver Licenses
        • Read a driver license barcode
        • Save a driver license barcode to a reservation customer
        • Upload a driver license image for a reservation customer
    • Filters
      • List filter types and operators
    • Contacts
      • List contact categories
      • Get a contact category
      • List contacts of a category
      • Create a contact
      • Get a contact
      • Update a contact
      • Merge contacts
    • Fleets
      • Additional Charges
        • List additional charges
        • Get an additional charge
      • Features
        • List features
        • Get a feature
      • Locations
        • List locations
      • Blocked Periods
        • List the blocked periods of a vehicle
        • Create a blocked period
        • Update a blocked period
        • Delete a blocked period
      • Branches
        • List vehicle makes
        • Get a vehicle make
        • List branches
      • Damages
        • List the damages of a vehicle
        • Create a vehicle damage
        • Get a vehicle damage
        • Update a vehicle damage
      • Vehicles
        • Models
          • List vehicle models
          • Get a vehicle model
        • Types
          • List vehicle types
          • Get a vehicle type
        • List the maintenance status of a vehicle
        • List vehicles
        • Get a vehicle
        • Update a vehicle
        • List vehicles for toll matching
      • Relocations
        • Create a relocation
        • Delete a relocation
        • List the relocations of a vehicle
      • Telematics
        • List the OBD readings of a vehicle
        • List OBD readings of all vehicles since a reading ID
        • List the telematics alerts of a vehicle
        • List the trips of a vehicle
        • List vehicle alert types
      • Maintenance
        • List repair orders
        • Create a repair order line
        • Update a repair order line
        • Delete a repair order line
        • Get a repair order
        • List maintenance types
      • Vehicle Classes
        • List vehicle classes
        • Get a vehicle class
    • Payment Gateways
      • List saved credit cards of a customer
      • Delete a saved credit card
      • List payment methods
      • Get a payment method
      • Get a payment button
      • Get a payment transaction by UUID
      • Create a payment transaction
      • Refund a payment transaction
      • Re-check a payment transaction
      • List payment transactions
    • Sheets
      • List sheet items
      • Create a sheet item
      • Get a sheet item
      • Update a sheet item
      • List sheets
      • Get a sheet
    • Files
      • List files of a record
      • Upload a file
      • Delete a file
    • Inventory
      • List inventory categories
      • Get an inventory category
      • Shows a list of inventory items
      • Finds inventory item by id
      • Finds inventory price by id
      • shows a list of inventory purchase order
      • Create purchase order
      • Finds purchase order by id
      • Returns report of purchase order
      • Cancels purchase order by id
      • Finds inventory stock by id
    • Invoice
      • List invoices available as e-invoices
      • Download e-invoices
      • Create invoice item
      • List invoice payments
      • Create an invoice payment
      • Get an invoice payment
      • Update an invoice payment
      • Spread a payment over a contact's open invoices
      • List invoices
      • Create an invoice
      • Get an invoice
      • Email an invoice
      • Void an invoice
      • Download an invoice PDF
    • Audit Logs
      • Lists the audit log entries
    • Countries
      • List countries
    • Taxes
      • List taxes
      • Get a tax
    • Users
      • List users
    • Products
      • Categories
        • List product categories
        • Create a product category
        • Update a product category
        • Delete a product category
      • List products
      • Create a product
      • Update a product
      • Delete a product
    • Schemas
      • RequestBodies
      • Money
      • SaveRepairOrderLine
      • ErrorBusinessRule
      • SaveBlockedPeriod
      • ErrorValidation
      • SaveVehicleDamage
      • ErrorNotFound
      • ErrorUnauthorized
      • ReservationSummary
      • ReservationTotal
      • AvailableVehicleClass
      • AdditionalCharge
      • ReservationOverview
      • ReservationPayment
      • FleetsPageInfo
      • FleetsEmptySuccess
      • VehicleDamage
      • BillingAmount
      • InvoiceLine
      • ReservationRefund
      • CustomField
      • Comment
      • PaginationFields
      • Country
      • CustomFieldAddress
      • FilterDescriptor
      • Tax
      • VehicleClassAvailability
      • CustomerCreditTransaction
      • DriverLicenseData
      • DriverLicenseResult
      • Fine
      • FineInput
      • PackageItem
      • Package
      • Quote
      • RateType
      • RateTypeWrite
      • RatePriceInterval
      • RateRecord
      • RateWrite
      • ReservationAttempt
      • ReservationExtension
      • ReservationAdjustment
      • ReservationStatusResult
      • VehicleReplacement
      • ReservationRecord
      • ReservationListItem
      • ReservationListPage
      • ReservationDetail
      • ReservationOverviewWithVehicles
      • Season
      • SeasonWrite
      • SecurityDepositRule
      • OtaVehicleClassAvailability
      • RateV2
      • ReservationDriverV2
      • ReservationListItemV2
      • ContactCategory
      • Contact
      • ContactInput
      • AttachedFile
      • FleetAdditionalCharge
      • Branch
      • VehicleFeature
      • Location
      • VehicleMaintenanceStatus
      • RepairOrder
      • ObdReading
      • VehicleAlert
      • VehicleTrip
      • BlockedPeriod
      • VehicleMake
      • VehicleClassImage
      • VehicleClassFeature
      • VehicleClass
      • VehicleRelocation
      • VehicleType
      • Vehicle
      • InventoryCategory
      • InvoicePayment
      • Invoice
      • InvoiceDetail
      • SavedCreditCard
      • PaymentGatewaySummary
      • PaymentMethod
      • PaymentTransaction
      • ProductCategory
      • Product
      • SheetItem
      • SheetItemInput
      • Sheet

    Guide: connect an OTA or broker

    This guide is for sales channels, such as online travel agencies, brokers and tour operators, that sell a rental company's vehicles and send the bookings into its HQ account.
    The rental company gives you an encoded API token of a user created only for you.
    The flow is: load reference data, search, optionally price extras, book, then keep the booking in sync.

    Step 1 - Load reference data once a day#

    GET /fleets/locations returns the active locations with their IDs, address, opening hours and is_airport.
    GET /fleets/vehicle-classes returns the vehicle classes; send only_available_on_website=1 to get only the ones the rental company sells online.
    GET /fleets/additional-charges returns the extras, insurance and fees.
    Map the HQ location and vehicle class IDs to your own codes once and store the mapping.

    Step 2 - Search availability and prices#

    Send Accept: application/vnd.api.v2+json; without it this path returns 404.
    ParameterMeaning
    pick_up_date, return_dateRequired. YYYY-MM-DD HH:mm, in the API user's time zone. The return must be after the pick-up.
    pick_up_location_id, return_location_idRequired. Active location IDs. The pick-up location decides the branch, and so the prices.
    rate_codeOptional. Price with this rate type, for example a rate agreed for your channel. It must exist.
    customer_idOptional. Apply the prices of this customer.
    languageOptional. Language of the class descriptions.
    data has one item per active vehicle class shown on the website that has a rate for those dates.
    Each item has:
    status: available or unavailable.
    A class is unavailable when no unit is free or the season does not allow a rental of that length.
    vehicle_class_id, name, sippCode, description, seats, bags, doors.
    total_price_with_mandatory_charges_and_taxes: the price to show, as a Money object (see Dates, time zones and money).
    price.total_days, price.base_price and the daily breakdown in price.details.
    security_deposit, distance_limits, age_ranges, charges_for_age_limits and the charges for pick-up or return outside opening hours.
    rate_type: the rate type used, with its code and the extras it includes.
    A pick-up or return outside the location's opening hours returns a validation error, unless the location accepts bookings outside its opening hours.

    Step 3 - Price extras and the driver's age (optional)#

    To show the exact total with extras before booking, call POST /car-rental/reservations/additional-charges with the same dates as separate fields (pick_up_date, pick_up_time, return_date, return_time), pick_up_location, return_location, vehicle_class_id, the selected additional_charges, customer_age or customer_birthdate, and the same rate_code you searched with, if any.
    data.total holds the total, the amount due and the security deposit.
    Nothing is saved.
    This endpoint allows 60 requests per minute per user (see Rate limits and idempotency).

    Step 4 - Create the booking#

    ParameterMeaning
    ota_reservation_typeYour channel name, stored in lowercase.
    ota_reservation_idYour booking reference. It is stored only together with ota_reservation_type.
    validate_duplicated_ota_reservation_id1 refuses the booking when any reservation, from any channel, already has the same ota_reservation_id.
    customer_first_name, customer_last_name, customer_email, ...The customer. A contact with the same first name, last name and email is reused; otherwise a new one is created.
    rate_codeThe rate type to price with, as in the search.
    prepaid_amount, prepaid_payment_methodWhat the customer already paid you, recorded as a payment (method Cash by default).
    comments[]Notes for the rental company, such as a flight number or special requests.
    skip_confirmation_email1 when you send your own confirmation, so HQ does not email the customer.
    Store data.reservation.id, the HQ reservation ID, next to your reference.
    You cannot search reservations by your reference later, so this mapping is how you find the booking again.
    If the request times out, send it again with the same Idempotency-Key.
    If the retry returns HTTP 422, see Rate limits and idempotency for what to do next.

    Step 5 - Read the booking#

    GET /car-rental/reservations/{reservation_id} returns the reservation with its status, customer, drivers, assigned vehicle, charges and totals.

    Step 6 - Change the booking#

    POST /car-rental/reservations/{reservation_id}/update with only the values that change, for example new dates (pick_up_date with pick_up_time, return_date with return_time), locations, vehicle class or extras.
    The reservation is priced again.
    additional_charges replaces the whole selection of extras; mandatory charges are added back.
    If you leave out additional_drivers, every additional driver is removed; send their full list to keep them.
    To pass a request to the rental company without changing the booking, add a note with POST /car-rental/reservations/{reservation_id}/comments and comment.

    Step 7 - Cancel the booking#

    POST /car-rental/reservations/{reservation_id}/cancelled cancels the booking.
    See HQ concepts and glossary for the statuses a booking can be cancelled from.

    Step 8 - Hear about changes#

    The rental company can send you a Reservation webhook with the action Updated and the filter ota_reservation_type:equal:acme, so that you receive only your bookings (see Webhooks).

    Errors to handle#

    Business rule errors, such as the two below, come back with HTTP 200 and "success": false; read errors.error_message.
    Missing or invalid fields, including a time outside opening hours in the search, come back with HTTP 422 and the messages per field in errors (see Errors).
    "The selected vehicle class is not available anymore": the class sold out between your search and the booking.
    Search again, and book with a new Idempotency-Key.
    "Reservation Already Exists": you sent validate_duplicated_ota_reservation_id=1 and a reservation with that ota_reservation_id already exists.
    Modified at 2026-10-29 13:56:40
    Previous
    Guide: build a booking engine on your website
    Next
    Guide: sync your fleet and prices to a website
    Built with