Quote
Use this endpoint to quote shipping rates.
REST Endpoint
POST /restapi/v1/customers/:customerId/quote
Request Content Type
application/json
Request JSON Example
POST /restapi/v1/customers/TEST00002/quote
{
"carrierCode": "ups",
"serviceCode": "ups_ground",
"packageTypeCode": "ups_custom_package",
"sender": {
"country": "US",
"zip": "84117"
},
"receiver": {
"city": "Salt Lake City",
"country": "US",
"zip": "84106",
"email":"foo@bar.com"
},
"residential": true,
"signatureOptionCode": "DIRECT",
"contentDescription": "stuff and things",
"weightUnit": "lb",
"dimUnit": "in",
"currency": "USD",
"customsCurrency": "USD",
"pieces": [
{
"weight": "1.4",
"length": "5.1",
"width": "4",
"height": "2.5",
"insuranceAmount": "12.15",
"declaredValue": null
}
],
"billing": {
"party": "sender"
},
"providerAccountId": null
}
Explanation of Request Fields
| Field | JSON Type | Required | Description |
|---|---|---|---|
| carrierCode | string | false | The carrier code |
| serviceCode | string | false | The service code |
| packageTypeCode | string | false | The package type code |
| sender.country | string | true | ISO two-character country code |
| sender.zip | string or null | true | Zip or postal code |
| receiver.city | string | false | Destination City/Town |
| receiver.country | string | true | ISO two-character country code |
| receiver.zip | string or null | true | Zip or postal code |
| receiver.email | string | false | Receiver email address |
| residential | boolean | false | Set to true of the receiver address is residential |
| signatureOptionCode | string or null | false | Signature option code for shipment. Null for no signature |
| uspsExpressAmDelivery | boolean | false | 10:30 AM Delivery |
| saturdayDelivery | boolean | false | Saturday Delivery |
| contentDescription | string | false | Content Description must be a string. Can be empty. Often required for international shipments |
| weightUnit | string | true | "lb" for pounds, "oz" for ounces, "kg" for kilograms, or "g" for grams |
| dimUnit | string or null | true | Either "in" for inches or "cm" for centimeters or null if packageType has preset dimensions |
| currency | string | true | The currency of the provided insuranceAmount, declaredValue, and customsValue (if customsCurrency is not present) fields. (USD, GBP, CAD, EUR) |
| customsCurrency | string | true | If present, is the currency of the provided customsValue. (USD, GBP, CAD, EUR) |
| pieces[n].weight | decimal | true | Numeric weight as a JSON string |
| pieces[n].length | decimal or null | true | Numeric length as a JSON string (set to null if packageType has preset dimensions) |
| pieces[n].width | decimal or null | true | Numeric width as a JSON string (set to null if packageType has preset dimensions) |
| pieces[n].height | decimal or null | true | Numeric height as a JSON string (set to null if packageType has preset dimensions) |
| pieces[n].insuranceAmount | decimal or null | true | The value of the piece to be covered by insurance as a JSON string. Must be null for no insurance |
| pieces[n].declaredValue | decimal or null | true | The declared value of the piece for international shipments as a JSON string. Must be null for domestic shipments |
| billing.party | string | false | Billing party: "sender" for Sender, "receiver" for Receiver, "third_party" for Third Party |
| providerAccountId | string or null | false | Provider Account ID which can be retrieved using the List Provider Accounts endpoint |
Response Status Code
200 OK
Response Content Type
application/json
Response JSON Example
{
"carrierCode": "ups",
"serviceCode": "ups_ground",
"packageTypeCode": "ups_custom_package",
"currency": "USD",
"customsCurrency": "USD",
"totalAmount": "16.27",
"baseAmount": "12.15",
"surcharges": [
{
"description": "Residential surcharge",
"amount": "4.12"
}
],
"zone": "2",
"quotedWeight": "2",
"quotedWeightType": "Actual"
}
Explanation of Response Fields
| Field | Type | Description |
|---|---|---|
| carrierCode | string | The carrier code |
| serviceCode | string | The service code |
| serviceDescription | string | The service description (only available when getting multiple quotes) |
| packageTypeCode | string | The package type code |
| currency | string | 3-character currency code |
| customsCurrency | string | 3-character currency code |
| totalAmount | decimal | Total quote amount (includes base charge and all surcharges) |
| baseAmount | decimal | Base charge amount |
| surcharges[n].description | string | Human readable description of surcharge |
| surcharges[n].amount | decimal | Surcharge amount |
| zone | string | The zone used to compute shipping cost |
| pieces[n].totalAmount | decimal | USPS Multipiece only. Total quote amount for piece, including base charge and all surcharges for piece |
| pieces[n].baseAmount | decimal | USPS Multipiece only. Base charge amount for piece |
| pieces[n].surcharges[n].description | string | USPS Multipiece only. Human readable description of piece surcharge |
| pieces[n].surcharges[n].amount | decimal | USPS multipiece only. Piece surcharge amount |
Quote Multiple Services
If you want to get back all available services instead of the price for a single service, you can call this same endpoint without specifying the serviceCode or packageTypeCode. The carrierCode is also optional, but can be used to return only services for a specific carrier.
Request JSON
{
"carrierCode": "ups",
"serviceCode": "",
"packageTypeCode": "",
"sender": {
"country": "US",
"zip": "84117"
},
"receiver": {
"city": "Salt Lake City",
"country": "US",
"zip": "84106",
"email":"foo@bar.com"
},
"residential": true,
"signatureOptionCode": "DIRECT",
"contentDescription": "stuff and things",
"weightUnit": "lb",
"dimUnit": "in",
"currency": "USD",
"customsCurrency": "USD",
"pieces": [
{
"weight": "1.4",
"length": "5.1",
"width": "4",
"height": "2.5",
"insuranceAmount": "12.15",
"declaredValue": null
}
],
"billing": {
"party": "sender"
},
"providerAccountId": null
}
Response JSON
{
"quotes": [
{
"carrierCode": "ups",
"serviceCode": "ups_ground",
"serviceDescription": "UPSĀ® Ground",
"packageTypeCode": "ups_custom_package",
"currency": "USD",
"customsCurrency": "USD",
"totalAmount": "16.27",
"baseAmount": "12.15",
"surcharges": [
{
"description": "Residential surcharge",
"amount": "4.12"
}
],
"zone": "2",
"quotedWeight": "2",
"quotedWeightType": "Actual"
},
{
"carrierCode": "ups",
"serviceCode": "ups_second_day_air",
"serviceDescription": "UPS 2nd Day AirĀ®",
"packageTypeCode": "ups_custom_package",
"currency": "USD",
"totalAmount": "41.72",
"baseAmount": "22.66",
"surcharges": [
{
"description": "ResidentialExpress",
"amount": "5.15"
},
],
"zone": "202",
"quotedWeight": "2",
"quotedWeightType": "Actual"
},
]
}