> For the complete documentation index, see [llms.txt](https://routelift.gitbook.io/routelift-api-integration/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://routelift.gitbook.io/routelift-api-integration/api-reference/estimate-fee-v2.md).

# Estimate fee V2

`POST /v1/deliveries/estimate/v2`

Estimate the delivery fee based on pickup and receiver locations, with pricing broken down for every available delivery type.

**Base URL**&#x20;

* Test: `https://sandbox-integrations.routelift.com/v1/deliveries/estimate/v2`&#x20;
* Live: `https://integrations.routelift.com/v1/deliveries/estimate/v2`

#### Request

Method: `POST` Content-Type: `application/json`

Content-Type: `application/json`

**Sample Request Body**

```json
{
  "pickupLocations": [
    {
      "latitude": 6.5244,
      "longitude": 3.3792,
      "address": "15 Isaac John St, Ikeja GRA, Lagos",
      "packageSize": "large",
      "weight": 50,
      "dimensions": {
        "length": 50,
        "width": 30,
        "height": 20
      },
      "packageDescription": "A carton of home appliances"
    }
  ],
  "receiverLocation": {
    "latitude": 6.4654,
    "longitude": 3.4064,
    "address": "18 Adeola Odeku St, Victoria Island, Lagos"
  }
}
```

**Request Fields**

| Field                | Type             | Required | Description                                                                                   |
| -------------------- | ---------------- | -------- | --------------------------------------------------------------------------------------------- |
| pickupLocations      | array of objects | Yes      | List of pickup location(s)                                                                    |
| └ latitude           | number           | Yes      | Latitude of the pickup location                                                               |
| └ longitude          | number           | Yes      | Longitude of the pickup location                                                              |
| └ address            | string           | Yes      | Address of the pickup location                                                                |
| └ packageSize        | string           | Yes      | Size of the package. Accepted values: `large`, `small`, `medium`                              |
| └ weight             | number           | No       | Package weight in kg                                                                          |
| └ dimensions         | object           | No       | Package dimensions — `length`, `width`, `height`                                              |
| └ packageDescription | string           | **Yes**  | Description of the package contents (max 500 characters) — used for delivery-type eligibility |
| receiverLocation     | object           | Yes      | Location of the receiver                                                                      |
| └ latitude           | number           | Yes      | Latitude of the receiver                                                                      |
| └ longitude          | number           | Yes      | Longitude of the receiver                                                                     |
| └ address            | string           | Yes      | Address of the receiver                                                                       |

Note: `packageDescription` is required on each pickup location.

**Sample Response**

```json
{
  "success": true,
  "data": {
    "recommendedOption": {
      "deliveryType": "same-day",
      "label": "Same-Day",
      "fee": 3500,
      "etaWindow": "3-15 hours",
      "recommendationReason": "Best value",
      "breakDown": {
        "Pickup 1 - Isaac John St, Ikeja GRA, Lagos 101233, Lagos, Nigeria": 3500
      }
    },
    "otherDeliveryOptions": [
      {
        "deliveryType": "express",
        "label": "Express",
        "fee": 5200,
        "etaWindow": "~2 hours",
        "breakDown": {
          "Pickup 1 - Isaac John St, Ikeja GRA, Lagos 101233, Lagos, Nigeria": 5200
        }
      },
      {
        "deliveryType": "economy",
        "label": "Economy",
        "fee": 2800,
        "etaWindow": "1–2 days",
        "breakDown": {
          "Pickup 1 - Isaac John St, Ikeja GRA, Lagos 101233, Lagos, Nigeria": 2800
        }
      },
      {
        "deliveryType": "local",
        "label": "Local",
        "fee": 1500,
        "etaWindow": "~40 mins",
        "breakDown": {
          "Pickup 1 - Isaac John St, Ikeja GRA, Lagos 101233, Lagos, Nigeria": 1500
        }
      }
    ],
    "receiverAddress": "Medplu admiralty, lekki phase 2, Lagos, Nigeria"
  },
  "message": "Delivery successfully estimated"
}
```

Note: `recommendedOption` is our recommended delivery type for this route — it never appears again inside `otherDeliveryOptions`. Every option (recommended and alternatives alike) carries its own `breakDown`, a per-pickup price map that sums to that option's `fee`. Only delivery types actually available for the given pickup/receiver combination are returned — if a type isn't available for that route, it simply won't appear in the response at all.

**Response Fields**

| Field                                       | Type             | Description                                                                                                                                                                                                |
| ------------------------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| success                                     | boolean          | Indicates if the request succeeded                                                                                                                                                                         |
| data                                        | object           | Contains the delivery estimate                                                                                                                                                                             |
| data.recommendedOption                      | object           | Our recommended delivery option for this route                                                                                                                                                             |
| data.recommendedOption.deliveryType         | string           | The recommended delivery type, e.g. `"same-day"`                                                                                                                                                           |
| data.recommendedOption.label                | string           | Human readable name for the delivery type (e.g. "Same-Day" for deliveryType: "same-day"), owned and versioned by our backend so you can render it directly without maintaining their own key→text mapping. |
| data.recommendedOption.fee                  | number           | Price in Naira for the recommended option                                                                                                                                                                  |
| data.recommendedOption.etaWindow            | string \| null   | ETA window text for the recommended option                                                                                                                                                                 |
| data.recommendedOption.recommendationReason | string           | Short reason this option was recommended, e.g. `"Best value"`                                                                                                                                              |
| data.recommendedOption.breakDown            | object           | Per-pickup price breakdown for `data.recommendedOption.fee`                                                                                                                                                |
| data.otherDeliveryOptions                   | array of objects | The other delivery types available for this route, excluding the recommended one                                                                                                                           |
| data.otherDeliveryOptions\[].deliveryType   | string           | One of: `express`, `economy`, `local`                                                                                                                                                                      |
| data.otherDeliveryOptions\[].label          | string           | Human readable name for the delivery type (e.g. "Same-Day" for deliveryType: "same-day"), owned and versioned by our backend so you can render it directly without maintaining their own key→text mapping. |
| data.otherDeliveryOptions\[].fee            | number           | Price in Naira for this option                                                                                                                                                                             |
| data.otherDeliveryOptions\[].etaWindow      | string \| null   | ETA window text for this option                                                                                                                                                                            |
| data.otherDeliveryOptions\[].breakDown      | object           | Per-pickup price breakdown for this option                                                                                                                                                                 |
| data.receiverAddress                        | string           | Resolved receiver address                                                                                                                                                                                  |
| message                                     | string           | Additional response message                                                                                                                                                                                |

<br>
