How to Book a Car Rental
Once the customer has selected a vehicle and reviewed the details, use the Create Booking endpoint to confirm the reservation. This endpoint accepts customer information, optional additional drivers, and selected equipment add-ons.
Endpoint
POST /cars/api/v2/bookings?currency=USD
Query Parameters
| Parameter | Type | Required | Description |
|---|
currency | string | Yes | Three-letter currency code (e.g., USD, EUR). |
Request Body
JSON
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6...",
"customer": {
"birth_date": "1990-05-15",
"language": "en",
"gender": "M",
"first_name": "John",
"last_name": "Doe",
"phone": "+1-555-123-4567",
"email": "john.doe@example.com",
"address": {
"street": "123 Main Street",
"city": "New York",
"postal_code": "10001"
},
"citizencountrycode": "US",
"additional_drivers": [
{
"birth_date": "1988-03-22",
"first_name": "Jane",
"last_name": "Doe"
}
]
},
"equipments": [
{
"code": "CSI",
"quantity": 1
},
{
"code": "NAV",
"quantity": 1
}
]
}
Request Body Fields
Top-Level Fields
| Field | Type | Required | Description |
|---|
token | string | Yes | The availability token from the Search Rentals or Rental Details response. |
customer | object | Yes | Customer details (see below). |
equipments | array | No | List of selected equipment add-ons (see below). |
Customer Object
| Field | Type | Required | Description |
|---|
birthdate | string | Yes | Date of birth in YYYY-MM-DD format. |
language | string | No | Preferred language code (e.g., en, es). |
gender | string | Yes | Gender: "M" for male, "F" for female. |
firstname | string | Yes | Customer's first name. Must match the driver's license. |
lastname | string | Yes | Customer's last name. Must match the driver's license. |
phone | string | Yes | Contact phone number with country code. |
email | string | Yes | Contact email address. Booking confirmation is sent here. |
address | object | Yes | Customer's address (see below). |
citizencountrycode | string | Yes | Two-letter ISO country code of the customer's citizenship. |
additionaldrivers | array | No | List of additional driver objects (see below). |
Address Object
| Field | Type | Required | Description |
|---|
street | string | Yes | Street address. |
city | string | Yes | City name. |
postal_code | string | Yes | Postal or ZIP code. |
Additional Driver Object
| Field | Type | Required | Description |
|---|
birthdate | string | Yes | Date of birth in YYYY-MM-DD format. |
firstname | string | Yes | Driver's first name. |
last_name | string | Yes | Driver's last name. |
Equipment Object
| Field | Type | Required | Description |
|---|
code | string | Yes | Equipment code from the Rental Details response (e.g., CSI). |
quantity | number | Yes | Number of units. Must not exceed the max_quantity from details. |
Example Response
JSON
{
"data": {
"status": "Confirmed",
"id": "XNCTPN3cuzY",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6...",
"customer": {
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+1-555-123-4567"
},
"vehrentalcore": {
"pickupdatetime": "2026-06-15T10:00:00",
"returndatetime": "2026-06-20T10:00:00",
"pickup_location": {
"name": "Hertz - Manhattan Midtown",
"address": "310 W 40th St, New York, NY 10018"
},
"return_location": {
"name": "Hertz - Manhattan Midtown",
"address": "310 W 40th St, New York, NY 10018"
}
},
"vehicle": {
"name": "Toyota Camry or similar",
"sipp_code": "CCAR",
"vehicle_type": "Sedan",
"vehicle_size": "Standard"
},
"rental_rate": {
"vehicle_charges": [
{
"currency_code": "USD",
"base_price": 245,
"total_price": 289.75,
"tax_inclusive": true,
"purpose": "rental"
}
]
},
"fees": [],
"payment_rules": []
}
}
Response Fields
| Field | Description |
|---|
status | Booking status. A successful booking returns "Confirmed". |
id | Unique booking ID. Use this to retrieve or cancel the booking. |
token | Booking token. Required for cancellation requests. |
customer | Summary of customer details. |
vehrentalcore | Rental dates and location details. |
vehicle | Vehicle information. |
rentalrate | Pricing breakdown. |
fees | Any additional fees applied to the booking. |
paymentrules | Payment terms and conditions. |
Important Notes
- Store both the
id and token from the response. The id is needed to retrieve the booking, and the token is required for cancellation. - Customer names must match the driver's license that will be presented at the rental counter.
- Driver age restrictions are enforced. The customer's age (calculated from
birthdate) must fall within the minimumage and maximum_age from the rate restrictions. The same applies to additional drivers. - Equipment quantities must not exceed the
max_quantity returned by the Rental Details endpoint. - Booking confirmation is sent to the email address provided in the
customer.email field.
Error Handling
Common error scenarios include:
| Scenario | Likely Cause |
|---|
| Token expired | The availability token has a limited validity window. Re-run the search. |
| Driver age out of range | The customer's age does not meet the vendor's age requirements. |
| Equipment unavailable | The requested equipment code or quantity is no longer available. |
| Missing required fields | One or more required fields in the request body are missing. |
If a booking fails, check the error response message for details and prompt the user to correct the issue before retrying.