Webservice to book LTL shipment. You can use either Rest or Soap calls shown below.
Name | Service URL | Additional details |
---|---|---|
Rest | ${baseUrl}/ltlservices/v2/rest/waybills/book | Example test url: https://test-api.forwardair.com/ltlservices/v2/rest/waybills/book |
Soap | ${baseUrl}/ltlservices/v2/ShipmentBookingService |
Example test url: https://test-api.forwardair.com/ltlservices/v2/ShipmentBookingService
WSDL for Quote Service: Booking 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 | Booking xml. Booking xml must meet the Booking 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. |
bookingRequest | String | Y | Booking xml payload as a string. Booking xml must meet the Booking Request Schema. Please wrap the Quote xml inside <![CDATA[<Quote xml here>]]> or escape the xml payload. |
Response will contain the the booking result.
Name | Type | Required | Description |
---|---|---|---|
BookShipmentResponse | String | Y | Book Response xml data. Schema for this is Book Response Schema. |
Name | Type | Required | Description |
---|---|---|---|
testmode | String | Y | Attribute of FABookingRequest element. Y/N. Set to Y for test shipments and N when you go live. You will also need to update the url to live url when going live. Example: <FABookingRequest testmode="Y"> |
OrderDetails | Element | Y | Part of FABookingRequest element. |
OrderAction | String | Y | Part of OrderDetails element. Create, Update, Cancel. |
AirbillNumber | Number | N | Send empty value unless you have a pre-assigned block of PRO numbers. If this is empty, the API call will auto assign the PRO number value. |
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> |
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 FreightDetails. |
FreightClass | Number | Y | Part of FreightDetail. 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> |
Description | String | Y | Part of FreightDetail. Freight description. |
Pieces | Number | Y | Part of FreightDetail. Handling pieces. |
Weight | Number | Y | Part of FreightDetail. Freight weight. |
WeightType | String | Y | Part of FreightDetail. Freight weight type, L for lb or K for Kgs. |
Hazmat | String | Y | Hazmat freight. Y/N. Example: <Hazmat>N</Hazmat> |
InbondShipment | String | Y | Inbond freight. Y/N. Example: <Inbond>N</Inbond> |
DeclaredValue | Number | Y | Insurance on the shipment in US dollars. Example: <DeclaredValue>500.00</DeclaredValue> |
ReferenceNumbers | Array | Y | Array of ReferenceNumber elements. |
ReferenceNumber | String | Y | Part of ReferenceNumbers. Please use your unique shipment ID as the first reference number and list out all possible reference numbers that could help service this shipment. (BOL, PO, MAWB, HAWB, etc). |
SpecialInstructions | String | Y | Any special instructions for this shipment. |
OriginAirportCode | String | N | Origin airport code. Use this field if freight is getting dropped at Forward terminal. |
DestinationAirportCode | String | N | Destination airport code. Use this field if is getting picked up from Forward terminal. |
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> |
EmergencyContact | Object | N | Emergency contact for this shipment. |
Name | String | Y | Part of EmergencyContact. Name for this contact. |
Phone | String | Y | Part of EmergencyContact. Phone for this contact. |
String | Y | Part of EmergencyContact. Email for this contact. | |
Pickup | Object | N | Use if you are shipping from shipper zip code or need pickup at OriginAirportCode (see below for members). |
AirportPickup | String | Y | Part of the Pickup object. Set to Y and use in conjunction with OriginAirportCode. Example: <AirportPickup>N</AirportPickup> |
PickupAccessorials | Array | Y | 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>LTP</PickupAccessorial> |
Delivery | Object | N | Part of the Destination object. Use if you are shipping to consignee zip code or need drop at DestinationAirportCode (see below for members). |
AirportDelivery | String | Y | Part of the Delivery object. Use in conjunction with DestinationAirportCode. Values are Y/N. Example: <AirportDelivery>N</AirportDelivery> |
ScheduledDeliveryDate | Object | N | Part of the Delivery object. Expected scheduled delivery date in YYYY-MM-DD format. Example: <ScheduledDeliveryDate>2020-01-05</ScheduledDeliveryDate> |
DeliveryAccessorials | Array | Y | 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>LTD</DeliveryAccessorial> |
Shipper | Object | Y | Shipper of this shipment. |
ShipperLocationName | String | Y | Part of Shipper object. Name of location. |
ShipperAddress1 | String | Y | Part of Shipper object. Address1 of location. |
ShipperAddress2 | String | N | Part of Shipper object. Address2 of location. |
ShipperCity | String | Y | Part of Shipper object. City of location. |
ShipperState | String | Y | Part of Shipper object. State of location. |
ShipperZipCode | String | Y | Part of Shipper object. Zip of location. |
ShipperCountry | String | Y | Part of Shipper object. Country of location, US, CA, MX. |
ShipperContactName | String | Y | Part of Shipper object. Contact name. |
ShipperContactPhone | String | Y | Part of Shipper object. Contact phone. |
ShipperContactEmail | String | Y | Part of Shipper object. Contact email. |
ShipperOpenTime | String | Y | Part of Shipper object. Open time, example <ShipperOpenTime>09:00:00</ShipperOpenTime> |
ShipperCloseTime | String | Y | Part of Shipper object. Close time, example <ShipperCloseTime>17:00:00</ShipperCloseTime> |
Consignee | Object | Y | Consignee of this shipment. |
ConsigneeLocationName | String | Y | Part of Consignee object. Name of location. |
ConsigneeAddress1 | String | Y | Part of Consignee object. Address1 of location. |
ConsigneeAddress2 | String | N | Part of Consignee object. Address2 of location. |
ConsigneeCity | String | Y | Part of Consignee object. City of location. |
ConsigneeState | String | Y | Part of Consignee object. State of location. |
ConsigneeZipCode | String | Y | Part of Consignee object. Zip of location. |
ConsigneeCountry | String | Y | Part of Consignee object. Country of location, US, CA, MX. |
ConsigneeContactName | String | Y | Part of Consignee object. Contact name. |
ConsigneeContactPhone | String | Y | Part of Consignee object. Contact phone. |
ConsigneeContactEmail | String | Y | Part of Consignee object. Contact email. |
ConsigneeOpenTime | String | Y | Part of Consignee object. Open time, example <ConsigneeOpenTime>09:00:00</ConsigneeOpenTime> |
ConsigneeCloseTime | String | Y | Part of Consignee object. Close time, example <ConsigneeCloseTime>17:00:00</ConsigneeCloseTime> |
Successful booking call.
Name | Type | Required | Description |
---|---|---|---|
http status code | 200 | Y | Code 200 for successful request. |
FABookingResponse | Response body | Y | FABookingResponse Response xml data. Schema for this is Book Response Schema. |
Name | Type | Required | Description |
---|---|---|---|
FABookingResponse | Object | Y | Successful response object |
AirbillNumber | String | Y | Part of FABookingResponse. Airbill number for booking. |
Remarks | String | Y | Part of FABookingResponse. Remarks for booking. |
Unsuccessful booking call.
Name | Type | Required | Description |
---|---|---|---|
http status code | 400, 500 | Y | Code 400 for bad request, 500 for errors. |
FAError | Object | Y | Error Response xml data. Schema for this is Error Response Schema. |
ErrorMessage | String | Y | Part of FAError. Error message. |
Sample Name | Description |
---|---|
Zip to Zip | Zip to Zip shipment where Forward will provide pickup, linehaul and delivery service. This same sample can be used for local pickup and delivery service as well. This same type of shipment is shown below as well with response data. |
Zip to Terminal | Zip to Terminal shipment where Forward will provide pickup and linehaul service. |
Terminal to Zip | Terminal to Zip shipment where Forward will provide linehaul and delivery service. |
Terminal to Terminal | Terminal to Terminal shipment where Forward will provide linehaul service. |
Terminal to Terminal With Guaranteed Service | Terminal to Terminal shipment with GS requested where Forward will provide linehaul service. If the lane is a GS lane, this service will be added. |
Zip to Zip(SDD) | Zip to Zip ScheduleDeliveryDate shipment where Forward will provide pickup, linehaul and delivery service. This same sample can be used for local pickup and delivery service as well. |
Zip to Zip shipment booking request. This example shows a rest xml payload. Response data for all scenarios follows the same layout.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FABookingRequest testmode="Y"> <OrderDetails> <OrderAction>Create</OrderAction> <BillToCustomerNumber>1234567</BillToCustomerNumber> <ShipperCustomerNumber>1234567</ShipperCustomerNumber> <Dimensions> <Dimension> <Pieces>2</Pieces> <Length>40</Length> <Width>50</Width> <Height>60</Height> </Dimension> <Dimension> <Pieces>1</Pieces> <Length>40</Length> <Width>50</Width> <Height>60</Height> </Dimension> </Dimensions> <FreightDetails> <FreightDetail> <FreightClass>77.5</FreightClass> <Description>Description 1</Description> <Pieces>2</Pieces> <Weight>160</Weight> <WeightType>L</WeightType> </FreightDetail> <FreightDetail> <FreightClass>65</FreightClass> <Description>Description 2 </Description> <Pieces>1</Pieces> <Weight>208</Weight> <WeightType>L</WeightType> </FreightDetail> </FreightDetails> <Hazmat>N</Hazmat> <InBondShipment>N</InBondShipment> <DeclaredValue>0</DeclaredValue> <ReferenceNumbers> <ReferenceNumber>REF1</ReferenceNumber> <ReferenceNumber>REF2</ReferenceNumber> </ReferenceNumbers> <SpecialInstructions>TEST SHIPMENT DO NOT DISPATCH.</SpecialInstructions> <ShippingDate>2020-11-19</ShippingDate> <EmergencyContact> <Name>John Doe</Name> <Phone>2140000000</Phone> <Email>dispatcher@mycompany.com</Email> </EmergencyContact> <Pickup> <AirportPickup>N</AirportPickup> <PickupReadyTime>11:00:00</PickupReadyTime> <PickupAccessorials /> </Pickup> <Delivery> <AirportDelivery>N</AirportDelivery> <DeliveryAccessorials /> </Delivery> </OrderDetails> <Shipper> <ShipperLocationName>SHIPPER</ShipperLocationName> <ShipperAddress1>123 TEST ROAD</ShipperAddress1> <ShipperCity>Douglasville</ShipperCity> <ShipperState>CO</ShipperState> <ShipperZipCode>30134</ShipperZipCode> <ShipperCountry>US</ShipperCountry> <ShipperContactName>SHIPPER CONTACT</ShipperContactName> <ShipperContactPhone>2140000000</ShipperContactPhone> <ShipperContactEmail>shipper@mycompany.com</ShipperContactEmail> <ShipperOpenTime>08:00:00</ShipperOpenTime> <ShipperCloseTime>15:00:00</ShipperCloseTime> </Shipper> <Consignee> <ConsigneeLocationName>CONSIGNEE</ConsigneeLocationName> <ConsigneeAddress1>400 TEST ROAD</ConsigneeAddress1> <ConsigneeCity>Schaumburg</ConsigneeCity> <ConsigneeState>IL</ConsigneeState> <ConsigneeZipCode>60195</ConsigneeZipCode> <ConsigneeCountry>US</ConsigneeCountry> <ConsigneeContactName>CONSIGNEE CONTACT</ConsigneeContactName> <ConsigneeContactPhone>2140000000</ConsigneeContactPhone> <ConsigneeContactEmail>consignee@mycompany.com</ConsigneeContactEmail> <ConsigneeOpenTime>07:30:00</ConsigneeOpenTime> <ConsigneeCloseTime>15:00:00</ConsigneeCloseTime> </Consignee> </FABookingRequest>
Successful return will have AirbillNumber.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FABookingResponse> <AirbillNumber>74614558</AirbillNumber> <ErrorMessage></ErrorMessage> <Remarks>Ship date 2023-07-01 before 1400 local time, Delivery 2023-07-04 by 1700 local time</Remarks> </FABookingResponse>
Unsuccessful return will have ErrorMessage.
<?xml version="1.0" encoding="utf-8"?> <FAError> <ErrorMessage> Error: Location 99999 is not serviced</ErrorMessage> </FAError>