Webservice to get a shipping quote. You can use either Rest or Soap calls shown below.
| Name | Service URL | Additional details |
|---|---|---|
| Try Rating Call | https://api.forwardair.com/ltlservices/v2/fastQuoteService.html | Test Request API credentials for your account, then use this webpage to see what the request and response look like for your account |
| Rest | ${baseUrl}/ltlservices/v2/rest/waybills/quote | Example test url: https://test-api.forwardair.com/ltlservices/v2/rest/waybills/quote |
| Soap | ${baseUrl}/ltlservices/v2/FastQuoteService |
Example test url: https://test-api.forwardair.com/ltlservices/v2/FastQuoteService
WSDL for Quote Service: Quote WSDL |
| Name | Type | Required | Description |
|---|---|---|---|
| user | Header param | Y | Your API username. Please note this is not the same as your web username. |
| password | Header param | Y | Your API password. Please note this is not the same as your web password. |
| customerId | Header param | Y | Your API customerId. |
| Content-Type | Header param | Y | application/xml. Json payload is not supported. |
| Body | Body | Y | Quote xml. Quote xml must meet the Quote Request Schema. |
| Name | Type | Required | Description |
|---|---|---|---|
| user | String | Y | Your API username. Please note this is not the same as your web username. |
| password | String | Y | Your API password. Please note this is not the same as your web password. |
| customerId | String | Y | Your API customerId. |
| quoteRequest | String | Y | Quote xml payload as a string. Quote xml must meet the Quote Request Schema. Please wrap the Quote xml inside <![CDATA[<Quote xml here>]]> or escape the xml payload. |
Response will contain the the quote and charge details.
| Name | Type | Required | Description |
|---|---|---|---|
| QuoteResponse | String | Y | Quote Response xml data. Schema for this is Quote Response Schema. |
Quote payload root object is <FAQuoteRequest>
| Name | Type | Required | Description |
|---|---|---|---|
| BillToCustomerNumber | String | Y | Your Forward billing account number. This will drive the negotiated rate tariff. Example: <BillToCustomerNumber>1234567</BillToCustomerNumber> |
| ShipperCustomerNumber | String | Y | Your Forward shipper account number. If you do not have separate shipping account number, you can use same value as BillToCustomerNumber. Example: <ShipperCustomerNumber>1234567</ShipperCustomerNumber> |
| Origin | Object | Y | Origin of shipment (see below for members). |
| OriginAirportCode | String | N | Part of the Origin object. Use if you are shipping from FA airport code. Example: <OriginAirportCode>DFW</OriginAirportCode> |
| OriginZipCode | String | N | Part of the Origin object. Use if you are shipping from zip code. Example: <OriginZipCode>75063</OriginZipCode> |
| OriginCountryCode | String | N | Part of the Origin object. Use if you are shipping from zip code. US, MX, CA. Defaults to US. Example: <OriginCountryCode>US</OriginCountryCode> |
| Pickup | Object | N | Part of the Origin object. Use if you are shipping from zip code (see below for members). |
| AirportPickup | String | N | Part of the Pickup object. Use in conjunction with OriginAirportCode. Values are Y/N. Example: <AirportPickup>N</AirportPickup> |
| PickupAccessorials | Array | N | Part of the Pickup object. Use if specials services are needed as part of pickup. |
| PickupAccessorial | String | N | Part of the PickupAccessorials array. List of current accessorial codes can be found using the accessorials webservice. Example: <PickupAccessorial>PJP</PickupAccessorial> |
| Destination | Object | Y | Destination of shipment (see below for members) |
| DestinationAirportCode | String | N | Part of the Destination object. Use if you are shipping to FA airport code. Example: <DestinationAirportCode>ATL</DestinationAirportCode> |
| DestinationZipCode | String | N | Part of the Destination object. Use if you are shipping to zip code. Example: <DestinationZipCode>30303</DestinationZipCode> |
| DestinationCountryCode | String | N | Part of the Destination object. Use if you are shipping to zip code. US, MX, CA. Defaults to US. Example: <DestinationCountryCode>US</DestinationCountryCode> |
| Delivery | Object | N | Part of the Destination object. Use if you are shipping to zip code (see below for members). |
| AirportDelivery | String | N | Part of the Delivery object. Use in conjunction with DestinationAirportCode. Values are Y/N. Example: <AirportDelivery>N</AirportDelivery> |
| DeliveryAccessorials | Array | N | Part of the Delivery object. Use if specials services are needed as part of delivery. |
| DeliveryAccessorial | String | N | Part of the DeliveryAccessorials array. List of current accessorial codes can be found using the accessorials webservice. Example: <DeliveryAccessorial>PJD</DeliveryAccessorial> |
| Dimensions | Array | N | Array of Dimension. |
| Dimension | Object | Y | Part of Dimensions. Elements below. |
| Pieces | Number | Y | Part of Dimension. Number of 'handling' pieces with this dimension not 'said to contain' pieces. For example if you have 1 pallet with 50 pieces, please send 1 piece here with the dimensions of the pallet. |
| Length | Number | Y | Part of Dimension. Length in inches. |
| Width | Number | Y | Part of Dimension. Width in inches. |
| Height | Number | Y | Part of Dimension. Height in inches. |
| FreightDetails | Array | Y | Array of FreightDetail. |
| FreightDetail | Object | Y | Part of the FreightDetails array. |
| FreightClass | String | N | Part of the FreightDetail object. Freight class. Valid values are: 50, 55, 60, 65, 70, 77.5, 85, 92.5, 100, 110, 125, 150, 175, 200, 250, 300, 400, 500. Required if your tariff is based on freight class. Example: <FreightClass>100</FreightClass> |
| Weight | Number | Y | Part of the FreightDetail object. Weight of freight. Example: <Weight>250.0</Weight> |
| WeightType | String | Y | Part of the FreightDetail object. L for Lbs and K for Kgs. Example: <WeightType>L</WeightType> |
| Pieces | Number | Y | Part of the FreightDetail object. Handling pieces. Loose pieces or pallets. Do not send said to contain pieces in this field. Example: <Pieces>3</Pieces> |
| Description | String | Y | Part of the FreightDetail object. Freight description. Example: <Description>GE APPLIANCES</Description> |
| Hazmat | String | Y | Hazmat freight. Y/N. Example: <Hazmat>N</Hazmat> |
| InbondShipment | String | Y | Inbond freight. Y/N. Example: <Inbond>N</Inbond> |
| GuaranteedService | String | N | GuaranteedService. Y/N. (Guaranteed Service is Applicable for D2D, T2D, T2T) Example: <GuaranteedService>N</GuaranteedService> |
| DeclaredValue | Number | Y | Insurance on the shipment in US dollars. Example: <DeclaredValue>500.00</DeclaredValue> |
| ShippingDate | String | Y | Expected shipping date in YYYY-MM-DD format. Please note that shipping date will be used to lookup rates. Example: <ShippingDate>2020-01-05</ShippingDate> |
Successful quote call.
| Name | Type | Required | Description |
|---|---|---|---|
| http status code | 200 | Y | Code 200 for successful request. |
| QuoteResponse | Response body | Y | Quote Response xml data. Schema for this is Quote Response Schema. |
| Name | Type | Required | Description |
|---|---|---|---|
| WeightAdjusted | String | Y | Part of the FreightDetail response element. Y/N. If weight was adjusted due to dimensional weight being higher and being used to calculate charges. Example: <WeightAdjusted>N</WeightAdjusted> |
| QuoteTotal | Number | Y | Total for the quote in USD. Example: <QuoteTotal>300.22</QuoteTotal> |
| TotalWeight | Number | Y | Total weight. Example: <TotalWeight>1500.0</TotalWeight> |
| TransitDaysTotal | Number | Y | Total days of transit (includes weekend). Please note that the shipping day has to be valid business day and the freight must be picked up according to market schedule. Example: <TransitDaysTotal>5</TransitDaysTotal> |
| ChargeLineItems | Array | Y | Array of ChargeLineItem. |
| ChargeLineItem | Object | Y | Charge line. |
| Code | String | Y | Part of ChargeLineItem. Charge line code. |
| Description | String | Y | Part of ChargeLineItem. Description of charge line. |
| Zone | String | Y | Part of ChargeLineItem. Zone of service. Will be returned on Code PUL, DEL and LTL only. |
| ServiceLevel | Number | Y | Part of ChargeLineItem. ServiceLevel is transit days for the given service. Will be returned on Code PUL, DEL, LTL. 0 means same day service. |
| Amount | Number | Y | Part of ChargeLineItem. Amount of charge line in USD. 0.00 mean no charge service. |
Unsuccessful quote call.
| Name | Type | Required | Description |
|---|---|---|---|
| http status code | 400, 500 | Y | Code 400 for bad request, 500 for errors. |
| FAError | String | Y | Error Response xml data. Schema for this is Error Response Schema. |
Zip to Zip rate request. This example shows a rest xml payload.
<?xml version="1.0" encoding="UTF-8"?>
<FAQuoteRequest>
<BillToCustomerNumber>1234567</BillToCustomerNumber>
<ShipperCustomerNumber>1234567</ShipperCustomerNumber>
<Origin>
<OriginAirportCode/>
<OriginZipCode>90746</OriginZipCode>
<OriginCountryCode>US</OriginCountryCode>
<Pickup>
<AirportPickup>N</AirportPickup>
</Pickup>
</Origin>
<Destination>
<DestinationAirportCode/>
<DestinationZipCode>48154</DestinationZipCode>
<DestinationCountryCode>US</DestinationCountryCode>
<Delivery>
<AirportDelivery>N</AirportDelivery>
</Delivery>
</Destination>
<FreightDetails>
<FreightDetail>
<Weight>1500</Weight>
<WeightType>L</WeightType>
<Pieces>1</Pieces>
<FreightClass>60.0</FreightClass>
</FreightDetail>
</FreightDetails>
<Dimensions>
<Dimension>
<Pieces>1</Pieces>
<Length>40</Length>
<Width>30</Width>
<Height>20</Height>
</Dimension>
</Dimensions>
<Hazmat>N</Hazmat>
<InBondShipment>N</InBondShipment>
<DeclaredValue>0.00</DeclaredValue>
<ShippingDate>2020-11-02</ShippingDate>
</FAQuoteRequest>
Zip to Zip rates. Rates shown here are for sample only and do not represent any active contract.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FAQuoteResponse>
<BillToCustomerNumber>1234567</BillToCustomerNumber>
<ShipperCustomerNumber>1234567</ShipperCustomerNumber>
<OriginAirportCode></OriginAirportCode>
<OriginZipCode>90746</OriginZipCode>
<OriginCountryCode>US</OriginCountryCode>
<DestinationAirportCode></DestinationAirportCode>
<DestinationZipCode>48154</DestinationZipCode>
<DestinationCountryCode>US</DestinationCountryCode>
<Dimensions>
<Dimension>
<Pieces>1</Pieces>
<Length>40</Length>
<Width>30</Width>
<Height>20</Height>
</Dimension>
</Dimensions>
<FreightDetails>
<FreightDetail>
<FreightClass>60</FreightClass>
<Pieces>1</Pieces>
<Weight>1500.0</Weight>
<WeightType>L</WeightType>
<WeightAdjusted>N</WeightAdjusted>
</FreightDetail>
</FreightDetails>
<Hazmat>N</Hazmat>
<InBondShipment>N</InBondShipment>
<DeclaredValue>0.00</DeclaredValue>
<QuoteDate>2020-11-15</QuoteDate>
<QuoteTotal>400.39</QuoteTotal>
<TotalWeight>1500.0</TotalWeight>
<TransitDaysTotal>3</TransitDaysTotal>
<ChargeLineItems>
<ChargeLineItem>
<Code>PUL</Code>
<Description>PICKUP</Description>
<Zone>LGBLB</Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>0.00</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>DEL</Code>
<Description>DELIVERY</Description>
<Zone>A</Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>0.00</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>LTL</Code>
<Description>LINEHAUL</Description>
<Zone></Zone>
<ServiceLevel>3</ServiceLevel>
<Amount>0.00</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>FSC</Code>
<Description>FSC</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>57.50</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>PUS</Code>
<Description>PICKUP SURCHARGE</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>7.50</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>060</Code>
<Description>CLASS 60</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>319.42</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>LHS</Code>
<Description>STATION SURCHARGE</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>15.97</Amount>
</ChargeLineItem>
</ChargeLineItems>
</FAQuoteResponse>
Airport to Airport rate request. This example shows a soap request.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<ns2:getQuote xmlns:ns2="http://webservices.shipmentbooking.forwardair.com/">
<user>XXXXXXXX</user>
<password>XXXXXXXXX</password>
<customerId>XXXXXXXXXX</customerId>
<quoteRequest><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FAQuoteRequest>
<BillToCustomerNumber>1234567</BillToCustomerNumber>
<ShipperCustomerNumber>1234567</ShipperCustomerNumber>
<Origin>
<OriginAirportCode>DFW</OriginAirportCode>
<Pickup>
<AirportPickup>Y</AirportPickup>
<PickupAccessorials></PickupAccessorials>
</Pickup>
</Origin>
<Destination>
<DestinationAirportCode>ATL</DestinationAirportCode>
<DestinationZipCode></DestinationZipCode>
<Delivery>
<AirportDelivery>Y</AirportDelivery>
<DeliveryAccessorials></DeliveryAccessorials>
</Delivery>
</Destination>
<FreightDetails>
<FreightDetail>
<FreightClass>70</FreightClass>
<Weight>500</Weight>
<WeightType>L</WeightType>
<Pieces>2</Pieces>
<Description>Equipment</Description>
</FreightDetail>
</FreightDetails>
<Hazmat>N</Hazmat>
<InBondShipment>N</InBondShipment>
<DeclaredValue>0</DeclaredValue>
<ShippingDate>2020-11-17</ShippingDate>
</FAQuoteRequest>]]></quoteRequest>
</ns2:getQuote>
</soap:Body>
</soap:Envelope>
Zip to Zip rates. Rates shown here are for sample only and do not represent any active contract.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FAQuoteResponse>
<BillToCustomerNumber>1234567</BillToCustomerNumber>
<ShipperCustomerNumber>1234567</ShipperCustomerNumber>
<OriginAirportCode></OriginAirportCode>
<OriginZipCode>90746</OriginZipCode>
<OriginCountryCode>US</OriginCountryCode>
<DestinationAirportCode></DestinationAirportCode>
<DestinationZipCode>48154</DestinationZipCode>
<DestinationCountryCode>US</DestinationCountryCode>
<Dimensions>
<Dimension>
<Pieces>1</Pieces>
<Length>40</Length>
<Width>30</Width>
<Height>20</Height>
</Dimension>
</Dimensions>
<FreightDetails>
<FreightDetail>
<FreightClass>60</FreightClass>
<Pieces>1</Pieces>
<Weight>1500.0</Weight>
<WeightType>L</WeightType>
<WeightAdjusted>N</WeightAdjusted>
</FreightDetail>
</FreightDetails>
<Hazmat>N</Hazmat>
<InBondShipment>N</InBondShipment>
<DeclaredValue>0.00</DeclaredValue>
<QuoteDate>2020-11-15</QuoteDate>
<QuoteTotal>400.39</QuoteTotal>
<TotalWeight>1500.0</TotalWeight>
<TransitDaysTotal>3</TransitDaysTotal>
<ChargeLineItems>
<ChargeLineItem>
<Code>PUL</Code>
<Description>PICKUP</Description>
<Zone>LGBLB</Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>0.00</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>DEL</Code>
<Description>DELIVERY</Description>
<Zone>A</Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>0.00</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>LTL</Code>
<Description>LINEHAUL</Description>
<Zone></Zone>
<ServiceLevel>3</ServiceLevel>
<Amount>0.00</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>FSC</Code>
<Description>FSC</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>57.50</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>PUS</Code>
<Description>PICKUP SURCHARGE</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>7.50</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>060</Code>
<Description>CLASS 60</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>319.42</Amount>
</ChargeLineItem>
<ChargeLineItem>
<Code>LHS</Code>
<Description>STATION SURCHARGE</Description>
<Zone></Zone>
<ServiceLevel>0</ServiceLevel>
<Amount>15.97</Amount>
</ChargeLineItem>
</ChargeLineItems>
</FAQuoteResponse>