Calculate international and domestic car shipping costs
Calculate shipping costs for a single vehicle.
| Field | Type | Required | Description |
|---|---|---|---|
| origin | string | object | Yes | Origin address or coordinates (see type below) |
| destination | string | object | Yes | Destination address or coordinates |
| value | number | Yes | Vehicle value |
| type | string | No | Defaults to "addressreq" (human-readable addresses geocoded automatically). Set to "pointReq" to pass raw coordinates instead. |
| currency | string | No | Output currency (default: auto-detected from destination) |
| inputCurrency | string | No | Currency of the value field (default: auto-detected from origin) |
| insured | string | No | "no", "basic" (default), or "comprehensive" |
| insuredPrice | number | No | Custom insurance base value. Accepted as-is (no markup applied). If omitted, a default estimate is used. |
| insuranceCurrency | string | No | Currency of insuredPrice. Defaults to inputCurrency. Use when insurance is quoted in a different currency than the vehicle value. |
| importType | string | No | Import classification (e.g. "returning") |
| buyForMe | boolean | No | Whether to include agency/buy-for-me fee (default: false) |
| year | number | No | Vehicle year (if one car detail is provided, all three are required) |
| make | string | No | Vehicle make |
| model | string | No | Vehicle model |
When type is omitted or set to "addressreq", provide human-readable addresses. The API geocodes them automatically.
{
"origin": "Los Angeles, CA",
"destination": "Toronto, Canada",
"value": 25000,
"currency": "CAD",
"inputCurrency": "USD",
"insured": "basic"
}
When type is "pointReq", pass origin and destination as {"latitude": ..., "longitude": ...} objects. This skips geocoding and is faster.
{
"type": "pointReq",
"origin": {"latitude": 34.0522, "longitude": -118.2437},
"destination": {"latitude": 43.6532, "longitude": -79.3832},
"value": 25000,
"insured": "comprehensive",
"insuredPrice": 50000,
"insuranceCurrency": "USD"
}
| Field | Type | Description |
|---|---|---|
| ID | string | Transaction ID. Use this to import the estimate as a quote via /import. |
| TotalCost | number | Total shipping cost in output Currency |
| Freight | number | Total freight (pickup + ocean + delivery) |
| CustomsTotal | number | Total customs charges |
| Insurance | number | Insurance cost |
| CargoValue | number | Vehicle value in output currency |
| Currency | string | Output currency code |
| ExchangeRate | number | USD → output currency rate (1.0 if USD) |
| isDomestic | boolean | Whether the shipment is within the same region (no ocean/customs) |
| Field | Type | Description |
|---|---|---|
| OceanTransport | number | Ocean freight cost (0 for domestic) |
| LandTransport | number | Total land transport (pickup + delivery) |
| LandTransportOriginToPort | number | Origin to port cost (0 for domestic) |
| LandTransportPortToDestination | number | Port to destination cost (0 for domestic) |
| Field | Type | Description |
|---|---|---|
| Brokerage | number | Customs brokerage fee |
| Dues | number | Base customs duty |
| Tariff | number | Additional tariff (country-pair specific) |
| Bond | number | Customs bond (USA destinations) |
| MPF | number | Merchandise Processing Fee (USA only, 0 otherwise) |
| HMF | number | Harbor Maintenance Fee (USA only, 0 otherwise) |
| GST | number | Goods & Services Tax (Canada only, 0 otherwise) |
| customsBreakdown | object | Structured breakdown: { duty, tariff, gst, mpf, hmf, brokerage, bond, percentageFeesSubtotal, total, note } |
| Field | Type | Description |
|---|---|---|
| InsuranceType | string | "no", "basic", or "comprehensive" |
| insuranceBaseValue | number | The base value used for insurance calculation (in output currency) |
| insuranceCurrency | string | Currency the insurance base value was originally provided in |
| importManagement | number | Import management fee (0 for domestic) |
| agencyFee | number | Buy-for-me agency fee (0 unless buyForMe is true) |
| buyForMe | boolean | Whether agency fee was applied |
| buyForMeFee | number | Agency fee rate (e.g. 0.025 = 2.5%) |
| importType | string | null | Import classification used |
| customsMode | string | Customs calculation mode applied |
| Field | Type | Description |
|---|---|---|
| Origin | object | { latitude, longitude, location? } — resolved origin coordinates |
| Destination | object | { latitude, longitude, location? } — resolved destination coordinates |
| OriginPort | object | null | Nearest origin port (null for domestic) |
| DestinationPort | object | null | Nearest destination port (null for domestic) |
The response includes two nested objects with rate information:
| Field | Type | Description |
|---|---|---|
| Rates | object | { dutyRate, tariffRate, gstRate, mpfRate, hmfRate, bondRate, bondMin, bondMax, insuranceRate, insuranceMultiplier } — all rates as percentages (e.g. 1.5 = 1.5%) |
| Fees | object | Detailed breakdown with sub-objects: transport (baseRate, ratePerKm, distance, pickupRate, oceanRate), insurance (basicRate, comprehensiveRate, multiplier, type, baseValue, currency), customs (all duty/tariff info), service (importManagement, buyForMe) |
| costBreakdown | object | Simplified summary: { pickup, ocean, delivery, freight, customs, insurance, importManagement, agencyFee, total } |
| Field | Type | Description |
|---|---|---|
| inputCurrency | string | The input currency that was used |
| originalValue | number | The original vehicle value as submitted |
| carDetails | object | undefined | { year, make, model } — present only if car details were provided |
{
"ID": "abc123def456",
"TotalCost": 7850.00,
"Freight": 4200.00,
"CustomsTotal": 1950.00,
"Insurance": 500.00,
"CargoValue": 33750.00,
"Currency": "CAD",
"ExchangeRate": 1.35,
"isDomestic": false,
"OceanTransport": 2100.00,
"LandTransport": 2100.00,
"LandTransportOriginToPort": 850.00,
"LandTransportPortToDestination": 1250.00,
"Brokerage": 475.00,
"Dues": 0,
"Tariff": 0,
"Bond": 0,
"MPF": 0,
"HMF": 0,
"GST": 1475.00,
"InsuranceType": "basic",
"insuranceBaseValue": 30250.00,
"insuranceCurrency": "USD",
"importManagement": 1200.00,
"agencyFee": 0,
"Origin": {"latitude": 34.0522, "longitude": -118.2437, "location": "Los Angeles, CA"},
"Destination": {"latitude": 43.6532, "longitude": -79.3832, "location": "Toronto, ON"},
"OriginPort": {"name": "Los Angeles", "latitude": 33.74, "longitude": -118.27},
"DestinationPort": {"name": "Toronto", "latitude": 43.63, "longitude": -79.38},
"Rates": {
"dutyRate": 0,
"tariffRate": 0,
"gstRate": 5.0,
"insuranceRate": 1.5,
"insuranceMultiplier": 1.1
},
"costBreakdown": {
"pickup": 850.00,
"ocean": 2100.00,
"delivery": 1250.00,
"freight": 4200.00,
"customs": 1950.00,
"insurance": 500.00,
"importManagement": 1200.00,
"agencyFee": 0,
"total": 7850.00
},
"customsBreakdown": {
"duty": 0,
"tariff": 0,
"gst": 1475.00,
"brokerage": 475.00,
"bond": 0,
"total": 1950.00
}
}
Calculate shipping costs for multiple vehicles in one shipment. Requires 2 or more vehicles. Accepts all the same fields as /shipping plus the fields below.
| Field | Type | Required | Description |
|---|---|---|---|
| vehicles | array | No* | Array of vehicle objects (see schema below). Use when shipping different cars. |
| vehicleCount | number | No* | Total vehicle count (default: 2). Use when all vehicles share the same value. |
| values | array<number> | No | Per-vehicle values when using vehicleCount instead of vehicles. |
| insuredPrice | number | No | Total custom insurance value (split evenly per car). Accepted as-is. |
| insuranceCurrency | string | No | Currency of insuredPrice. Defaults to inputCurrency. |
* Provide either vehicles array or vehicleCount. If vehicles is provided, vehicleCount is ignored.
Each element in the vehicles array is an object with the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
| year | number | No | Vehicle year (e.g. 2022) |
| make | string | No | Vehicle manufacturer (e.g. "BMW") |
| model | string | No | Vehicle model (e.g. "X5") |
| value | number | No | Vehicle value in inputCurrency. Falls back to top-level value if omitted. |
| count | number | No | How many identical vehicles of this type (default: 1). Since each car has a unique VIN, use this only for grouping identical models in the estimate. |
{
"origin": "Miami, FL",
"destination": "Vancouver, Canada",
"vehicles": [
{"year": 2022, "make": "BMW", "model": "X5", "value": 45000, "count": 1},
{"year": 2021, "make": "Mercedes", "model": "GLE", "value": 52000, "count": 1},
{"year": 2023, "make": "Toyota", "model": "Camry", "value": 28000, "count": 2}
],
"inputCurrency": "USD",
"currency": "CAD",
"insured": "basic"
}
The response includes all the same fields as /shipping (totals are summed across all vehicles), plus:
| Field | Type | Description |
|---|---|---|
| vehicleCount | number | Total number of vehicles |
| multiCarFactor | number | Discount factor applied per car (e.g. 0.9 = 10% transport discount) |
| singleCarEquivalent | number | What one car would cost at full price (for comparison) |
| totalMultiplier | number | Combined transport multiplier (factor × vehicleCount) |
| vehicleGroups | array | Grouped vehicles: [{ year, make, model, count }] |
| cars | array | Per-car breakdown (see schema below) |
| Field | Type | Description |
|---|---|---|
| carIndex | number | 1-based index of this car |
| year | number | null | Vehicle year |
| make | string | null | Vehicle make |
| model | string | null | Vehicle model |
| value | number | Vehicle value in output currency |
| transport | number | Transport cost for this car |
| customs | object | { brokerage, dues, tariff, bond, mpf, hmf, gst, total } |
| insurance | number | Insurance cost for this car |
| importManagement | number | Import management fee for this car |
| total | number | Total cost for this car |
Calculate shipping and create a formal estimate quote in the Lima Automotive CRM. Requires client contact information. Supports single and multi-car quotes.
| Field | Type | Required | Description |
|---|---|---|---|
| clientName | string | Yes | Client full name |
| string | Yes | Client email address | |
| phone | string | No | Client phone number |
| origin | string | Yes | Origin address |
| destination | string | Yes | Destination address |
| value | number | Yes | Vehicle value |
| source | string | No | Referral source / business partner name (default: "API") |
| vehicles | array | No | For multi-car quotes — same schema as /shipping/multi |
| insuranceCurrency | string | No | Currency of insuredPrice if different from inputCurrency |
All /shipping parameters (insured, insuredPrice, currency, inputCurrency, importType, buyForMe, etc.) are also accepted.
| Field | Type | Description |
|---|---|---|
| success | boolean | true if the quote was created |
| tid | string | Quote transaction ID in the CRM |
| quoteUrl | string | Direct URL to the quote in the CRM |
| shippingResult | object | Full shipping calculation result (same structure as /shipping response) |
{
"success": true,
"tid": "1234567890",
"quoteUrl": "https://quote.limaautomotive.com/invoice?ref=1234567890",
"shippingResult": {
"TotalCost": 7850.00,
"Freight": 4200.00,
"CustomsTotal": 1950.00,
"Insurance": 500.00,
"Currency": "CAD",
...
}
}
Convert a previously calculated shipping estimate into a formal quote. Use the transaction ID returned from a prior /shipping or /shipping/multi call.
| Field | Type | Required | Description |
|---|---|---|---|
| transactionId | string | Yes | The ID from a prior /shipping response (also accepts tid or id) |
| clientName | string | Yes | Client full name |
| string | Yes | Client email address | |
| phone | string | No | Client phone number |
| country | string | No | Client country |
| source | string | No | Your business/referral name (default: "API Import") |
{
"transactionId": "a1b2c3d4e5",
"clientName": "John Doe",
"email": "john@example.com",
"phone": "+1 555-123-4567",
"source": "DealershipXYZ"
}
| Field | Type | Description |
|---|---|---|
| success | boolean | true if the quote was created |
| tid | string | New quote transaction ID in the CRM |
| quoteUrl | string | Direct URL to the quote in the CRM |
| importedFrom | string | The original transaction ID that was imported |
{
"success": true,
"tid": "1234567890",
"quoteUrl": "https://quote.limaautomotive.com/invoice?ref=1234567890",
"importedFrom": "a1b2c3d4e5"
}
Returns HTTP 409 if the transaction was already imported.
Get current customs rates, insurance rates, and fee configuration. No parameters required.
Returns the full customs configuration object including all regional rates, insurance rates, brokerage fees, bond limits, and import management fees.
All endpoints return errors in a consistent format:
{
"error": "Description of what went wrong"
}
| HTTP Status | Meaning |
|---|---|
| 400 | Bad request — missing required fields, invalid coordinates, or geocoding failure |
| 409 | Conflict — transaction already imported (/import only) |
| 500 | Server error |
For API access, integration support, or questions:
Email: info@limaautomotive.com
Phone: +1 877 298-0911
Website: limaautomotive.com