{"templateId":"markdown","versions":[{"version":"shipengine","label":"ShipStation API (formerly ShipEngine)","link":"/apis/shipengine/docs/freight/freight-overview","default":false,"active":true,"folderId":"58c9a61d"},{"version":"shipstation-v2","label":"ShipStation V2 API","link":"/apis/docs/freight/freight-overview","default":true,"active":false,"folderId":"58c9a61d"},{"version":"shipstation-v1","label":"ShipStation V1 API","link":"/apis/shipstation-v1/docs/freight/freight-overview","default":false,"active":false,"folderId":"58c9a61d"}],"sharedDataIds":{"sidebar":"sidebar-apis/@shipengine/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Freight (LTL)","keywords":"shipping, labels, shipstation, documentation, api","siteUrl":"https://docs.shipstation.com","lang":"en-US","llmstxt":{"hide":false,"title":"ShipStation API LLM Docs","description":"Find links and references to all markdown documentation for use with LLMs","excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"freight-ltl","__idx":0},"children":["Freight (LTL)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Freight endpoints let you quote, book, track, and manage ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["less-than-truckload (LTL)"]}," shipments — the freight that is too large to ship as a parcel but does not fill a trailer on its own. A pallet of furniture, a crate of machine parts, or a few drums of coating all travel as LTL."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["LTL works differently from parcel shipping, and the API reflects that:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You quote before you book."]}," LTL prices are not published rate cards; they are offers from carriers for your specific freight on a specific lane. Every booking references an offer returned by a quote."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["You ship handling units, not packages."]}," The carrier handles pallets, crates, or drums, and each one contains one or more ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["commodities"]}," — the actual goods, each with its own freight class."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Extra services are priced in."]}," Liftgates, inside delivery, and appointment scheduling are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["accessorials"]},", and they change the price of the quote."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["The Bill of Lading is the shipping document."]}," Booking generates a Bill of Lading (BOL) rather than a label, along with pallet labels and other paperwork."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"the-workflow","__idx":1},"children":["The Workflow"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-quote-book#list-freight-provider-accounts"},"children":["List freight provider accounts"]}," — look up the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["freight_provider_account_id"]}," of the freight provider connection to work through."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-quote-book#get-freight-quotes"},"children":["Get freight quotes"]}," — describe the freight and receive offers from the carriers available through your freight provider."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-quote-book#book-a-freight-shipment"},"children":["Book a freight shipment"]}," — book one of those offers and get back a BOL number and documents."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-manage#list-freight-shipment-documents"},"children":["Download the documents"]}," — print the Bill of Lading and pallet labels for the driver."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-manage#get-freight-shipment-tracking"},"children":["Track the shipment"]}," — follow it from pickup to delivery."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requirements","__idx":2},"children":["Requirements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["An active freight provider connection."]}," Freight is quoted and booked through a freight provider account connected to your account, identified by a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["freight_provider_account_id"]},". Every freight request requires one, and requests that reference an inactive or unknown connection return a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["An API key."]}," All requests are authenticated with your ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/guides/auth#api-keys"},"children":["API key"]},", included in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["API-Key"]}," header of every request."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Finding your freight_provider_account_id"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Freight provider connections are set up in the ShipStation API dashboard. Call ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-quote-book#list-freight-provider-accounts"},"children":["List freight provider accounts"]}," to retrieve the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["freight_provider_account_id"]}," of each active connection. Like most ShipStation API identifiers, it is an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["se-"]}," prefixed string such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["se-4821"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"two-ways-to-describe-a-shipment","__idx":3},"children":["Two Ways to Describe a Shipment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-quote-book#get-freight-quotes"},"children":["Get freight quotes"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/freight/freight-quote-book#book-a-freight-shipment"},"children":["Book a freight shipment"]}," accept the shipment in one of two ways."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Mode"},"children":["Mode"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"How you use it"},"children":["How you use it"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What you send"},"children":["What you send"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Inline"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You are quoting freight that does not yet exist as a shipment in ShipStation API."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ship_from"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ship_to"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["handling_units"]},". Booking inline creates a shipment record for you and marks it as shipped."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Linked to a shipment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The freight already exists as a shipment on your account, created through ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/docs/shipping/create-a-shipment"},"children":["Create a Shipment"]}," or an order source."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["shipment_id"]},". The origin comes from the shipment's ship-from warehouse and the destination from the order's ship-to address, so ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ship_from"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ship_to"]}," must be omitted."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the linked mode, the freight details you send when quoting — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["handling_units"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accessorials"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insurance"]}," — are saved as the shipment's freight configuration. Booking that shipment reuses the saved configuration, so ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["handling_units"]}," must be omitted when booking. Quote a shipment before you book it: booking a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["shipment_id"]}," that has no saved freight configuration returns a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"units-of-measure","__idx":4},"children":["Units of Measure"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The freight endpoints use a single fixed unit for each measurement. There are no unit fields to set."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Measurement"},"children":["Measurement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Unit"},"children":["Unit"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Dimensions (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["length"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["width"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["height"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Inches"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Weight (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["weight"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Pounds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Money (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["total_charges"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insured_value"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["US dollars"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Temperature (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["flashpoint_temperature"]},")"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Degrees Fahrenheit"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"handling-units-and-commodities","__idx":5},"children":["Handling Units and Commodities"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["handling unit"]}," is what the carrier physically moves and counts. A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["commodity"]}," is a line of goods inside it."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"handling_units\": [\n    {\n      \"type\": \"pallet\",\n      \"quantity\": 2,\n      \"length\": 48,\n      \"width\": 40,\n      \"height\": 52,\n      \"stackable\": false,\n      \"commodities\": [\n        {\n          \"description\": \"Assembled oak dining chairs\",\n          \"quantity\": 24,\n          \"weight\": 310,\n          \"freight_class\": \"125\",\n          \"packaging_type\": \"carton\"\n        }\n      ]\n    }\n  ]\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This describes ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["two identical pallets"]},", each 48 × 40 × 52 inches, each holding 24 cartons of chairs weighing 310 lb in total. Dimensions, weight, and commodities always describe ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["one"]}," handling unit — the carrier multiplies by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quantity"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["stackable"]}," matters more than it looks: non-stackable freight occupies trailer height that cannot be sold to anyone else, and carriers price accordingly."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"freight-class","__idx":6},"children":["Freight Class"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every commodity needs a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["freight_class"]}," — an NMFTA classification from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["50"]}," (dense, durable, cheap to ship) to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["500"]}," (light, bulky, or fragile). Class is derived from density, stowability, handling, and liability, and it is one of the largest factors in the price of an LTL shipment."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Valid values are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["50"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["55"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["60"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["65"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["70"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["77.5"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["85"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["92.5"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["100"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["110"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["125"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["150"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["175"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["250"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["300"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["500"]},". Send them as strings."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Understating freight class is the most common cause of a post-delivery invoice adjustment. Carriers reweigh and reclassify freight, and the corrected charge is billed back to you. If you are unsure of a class, check with your carrier or freight provider before quoting."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"accessorials","__idx":7},"children":["Accessorials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Accessorials are extra services, and they are priced into the quote. You send them ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["only on the quote request"]}," — there is no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accessorials"]}," field on the booking request. The offer you book already carries the accessorials it was priced with, which is why ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offer_id"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quote_request_id"]}," are all the booking needs to identify what you are buying."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["So get them right before you quote. Adding a liftgate after the fact means requesting fresh quotes and booking a new offer; there is no way to attach an accessorial to an offer that was priced without it."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Accessorial"},"children":["Accessorial"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When you need it"},"children":["When you need it"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["liftgate_pickup"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["liftgate_delivery"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The location has no loading dock, so the driver needs a liftgate to raise or lower the freight."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inside_pickup"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["inside_delivery"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The freight must be moved into or out of the building rather than left at the dock or curb."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["appointment_delivery"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The consignee requires a scheduled delivery appointment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["notify_before_delivery"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The carrier must call ahead before delivering."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hold_at_terminal"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The consignee collects the freight from the destination terminal."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["carrier_terminal_pickup"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You drop the freight at the carrier's terminal instead of having it collected."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sort_and_segregate"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The carrier must sort or separate the freight at delivery."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["protection_from_cold"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["protection_from_heat"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The freight must not freeze or overheat in transit."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grocery_consolidation_pickup"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grocery_consolidation_delivery"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The origin or destination is a grocery consolidation facility."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tradeshow_pickup"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tradeshow_delivery"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The freight is collected from or delivered to a tradeshow. Provide the tradeshow ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["name"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["booth_number"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"location-type","__idx":8},"children":["Location Type"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Also set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["location_type"]}," when the location is not a plain commercial address. Residential, limited-access, construction, and similar locations carry their own surcharges, and declaring them up front keeps the quote accurate. It appears in three places: on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ship_from"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ship_to"]}," when quoting, and on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pickup_details"]}," when booking."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["airport"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["carrier_terminal"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["commercial"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["construction"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["container_freight_station"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["distribution_center"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["government_facility"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limited_access"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pier_port_wharf"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["residential"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["secured_access"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["trade_show"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The value is validated against that list, so a typo is rejected with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400 Bad Request"]}," rather than quietly dropped. Omitting the field entirely is always allowed."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"pickup_details.location_type on a linked shipment"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you book with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["shipment_id"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ship_from"]}," is not part of the request, so ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pickup_details.location_type"]}," is the only way to tell the carrier how to classify the origin. Set it there if the pickup location is not a plain commercial address."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"insurance","__idx":9},"children":["Insurance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Carrier liability is capped per pound and is usually far below what the freight is actually worth — the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["max_liability_new"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["max_liability_used"]}," values on each quote show the cap for that offer. Add an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insurance"]}," object to the quote to price cargo insurance alongside the freight charges:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"insurance\": {\n    \"insured_value\": 18500,\n    \"item_condition\": \"new\",\n    \"commodity_category\": \"furniture\",\n    \"marks_numbers\": \"NG-2026-0417\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Offers then include ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insured_amount"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insurance_premium"]}," (already part of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["total_charges"]},"), and an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insurance_certificate_number"]}," once the insurer issues one. Insured values are in USD."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The presence of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insurance"]}," object is what requests insurance — there is no boolean to set. Two consequences worth knowing:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Always send ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insured_value"]},"."]}," It is not validated, so an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insurance"]}," object without it requests insurance with a declared value of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]}," rather than returning an error."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Insurance is priced at quote time"]},", like accessorials. There is no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["insurance"]}," field on the booking request, so adding coverage after the fact means re-quoting."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"hazardous-materials","__idx":10},"children":["Hazardous Materials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A commodity carrying a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hazardous_materials"]}," object is flagged as hazmat, and the details are printed on the Bill of Lading. Hazmat freight requires the full set of regulatory fields:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"description\": \"Paint, flammable\",\n  \"quantity\": 8,\n  \"weight\": 420,\n  \"freight_class\": \"70\",\n  \"hazardous_materials\": {\n    \"identification_number_type\": \"un\",\n    \"identification_number\": \"UN1263\",\n    \"proper_shipping_name\": \"Paint\",\n    \"hazard_class\": \"3\",\n    \"subsidiary_hazard_classes\": [\"8\"],\n    \"packing_group\": \"iii\",\n    \"emergency_contact_name\": \"Chemtrec\",\n    \"emergency_contact_phone\": \"+1 800 424 9300\",\n    \"emergency_response_reference\": \"CCN12345\",\n    \"flashpoint_temperature\": 73\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["identification_number_type"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["un"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["na"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["packing_group"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["i"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ii"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["iii"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["none"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subsidiary_hazard_classes"]}," must not contain duplicates or repeat the primary ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hazard_class"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emergency_contact_name"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emergency_contact_phone"]}," must reach a 24-hour response service."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/apis/shipengine/openapi"},"children":["Full API Reference"]}," for the full list of accepted hazard classes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"statuses","__idx":11},"children":["Statuses"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Freight shipments carry a coarse ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}," and, when tracking, a finer-grained ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tracking_status"]}," from the carrier."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"status"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pending"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The shipment exists but is not yet with the carrier."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quoted"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Offers have been retrieved but none has been booked."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["booked"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The carrier has accepted the shipment and a Bill of Lading exists."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["in_transit"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The freight is moving, from dispatch through to out for delivery."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["delivered"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The freight has been delivered."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cancelled"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The booking was cancelled."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["exception"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Something went wrong, or the status could not be determined."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Several carrier tracking statuses roll up into one shipment status. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dispatched"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["in_route_to_pickup"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["at_pickup"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["out_for_delivery"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["at_delivery"]}," all appear as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["in_transit"]},". Read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tracking_status"]}," when you need the detail."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Response fields with no value are returned as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," rather than omitted. A freshly booked shipment, for example, has no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pro_number"]}," until the carrier assigns one, so the field is present with a value of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]},". Check for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," rather than for the absence of a key."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The JSON examples on these pages are abbreviated to the fields being discussed, so a real response will usually contain more keys than the example shows."]}]}]},"headings":[{"value":"Freight (LTL)","id":"freight-ltl","depth":1},{"value":"The Workflow","id":"the-workflow","depth":2},{"value":"Requirements","id":"requirements","depth":2},{"value":"Two Ways to Describe a Shipment","id":"two-ways-to-describe-a-shipment","depth":2},{"value":"Units of Measure","id":"units-of-measure","depth":2},{"value":"Handling Units and Commodities","id":"handling-units-and-commodities","depth":2},{"value":"Freight Class","id":"freight-class","depth":3},{"value":"Accessorials","id":"accessorials","depth":2},{"value":"Location Type","id":"location-type","depth":3},{"value":"Insurance","id":"insurance","depth":2},{"value":"Hazardous Materials","id":"hazardous-materials","depth":2},{"value":"Statuses","id":"statuses","depth":2}],"frontmatter":{"seo":{"title":"Freight (LTL)"}},"lastModified":"2026-08-14T20:29:54.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/apis/shipengine/docs/freight/freight-overview","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}