# Car modification charges

When a traveler modifies an existing car booking (e.g., the pickup or drop-off location, or rental dates),
the price of the booking may change.
The [Car APIs](/openapi/carapi) display these price differences as structured rate components on the
[price check](/openapi/carapi/car/carpricecheck) API response,
while vendor-imposed change fees may appear as free-text descriptions in the same API.

When modifying a car booking, if the new price is cheaper than the existing booking, a refund may also be applicable based on the vendor's policies.

This guide explains how to identify modification charges in the API response and how to interpret them.

## Rate difference components

The [check car price](/openapi/carapi/car/carpricecheck) endpoint returns the rate breakdown for the selected car
in the `rateInfo` and `finalRateInfo` fields.

The two fields capture the rate at different points in the flow:

| Field  | Description |
|  --- | --- |
| `rateInfo` | The rate information you get after the [car search](/openapi/carapi/car/carsearch) API call (i.e., when the traveler searches for a car). |
| `finalRateInfo` | The supplier-confirmed rate when using the [check car price](/openapi/carapi/car/carpricecheck) endpoint. This is the final price the traveler will be charged.This is useful to identify if any price change has occurred since the original search was performed but before checkout occurs. |


If `hasPriceChanged` is `true`, compare the two rate breakdowns to identify what changed and display the difference to the traveler before they confirm.

When the request is part of a modification flow (i.e., `isModify` is set to `true` in the request body),
two additional rate component types may appear in `finalRateInfo.carRateComponents`:

| Field  | Description |
|  --- | --- |
| `CAR_MODIFY_RATE_DIFFERENCE` | The total price difference between the original booking and the modified one. A positive amount indicates that the traveler will pay more for the new booking, while a negative amount indicates a credit or reduced charge. |
| `CAR_MODIFY_AVERAGE_RATE_DIFFERENCE` | The average daily rate difference between the original booking and the modified one. Useful when the rental duration spans multiple days and the daily cost has changed. |


Each component in `carRateComponents` contains a `componentType` and an `amount` object (with the numeric `amount` value and a `currencyCode`).

Here's a sample response excerpt from the [check car price](/openapi/carapi/car/carpricecheck) endpoint
when `isModify` is `true` and the modified booking is more expensive than the original:

```json POST /v2/car/price-check
// ... payload truncated for focus
{
  "hasPriceChanged": true,
  "finalRateInfo": {
    "carRateComponents": [
      {
        "componentType": "BASE_RATE_TOTAL",
        "amount": {
          "amount": 320.00,
          "currencyCode": "USD"
        }
      },
      {
        "componentType": "TOTAL_TAX",
        "amount": {
          "amount": 48.00,
          "currencyCode": "USD"
        }
      },
      {
        "componentType": "CAR_MODIFY_RATE_DIFFERENCE",
        "amount": {
          "amount": 75.00,
          "currencyCode": "USD"
        }
      },
      {
        "componentType": "CAR_MODIFY_AVERAGE_RATE_DIFFERENCE",
        "amount": {
          "amount": 15.00,
          "currencyCode": "USD"
        }
      }
    ]
  }
}
```

In the example above, the modified booking costs *USD 75 more* in total than the original, with an average daily increase of *USD 15*.

## Calculating the total modification cost

Use the following parameters in the APIs to identify the total booking modification cost:

- In the [check car price](/openapi/carapi/car/carpricecheck) API response, locate the entry in the `carRateComponents` with the `componentType` set to `CAR_MODIFY_RATE_DIFFERENCE`. The `amount` displayed here is the change in the rental price.
- Review the `finalRateInfo` > `additionalDetails` array for entries with `carAdditionalDetailType` set as `FEES_INFORMATION`. Display the text field value to the traveler as a supplementary fee notice.
- The total amount the traveler will be charged is displayed in `finalRateInfo` > `carRateComponents` > `amount` with `componentType` set to `BASE_RATE_TOTAL` and `TOTAL_TAX`.