Navigated to /blog/bill-of-lading-basics

Bill of Lading Basics for Small Manufacturers

What has to be on a bill of lading, why it usually gets assembled by hand at the worst possible moment, and what actually goes wrong when it is.

A bill of lading (BOL) is a legal document, a receipt for the goods, a contract of carriage between shipper and carrier, and often the first thing a customer's receiving dock checks against the actual pallets coming off the truck. Most small manufacturers know they need one for every outbound shipment. Fewer have a system for producing one that isn't "someone fills out a template by hand while the driver waits."

What actually has to be on it

A usable BOL needs to carry a specific set of fields, not just "a bunch of shipping information":

  • Shipper name and address. Who's sending it, where from.
  • Consignee name and address. Who's receiving it. This is the field most likely to be wrong if it's typed fresh each time instead of pulled from a stored customer record.
  • Carrier name. Which freight company is handling the move.
  • Ship date. When it actually left, not when the paperwork was printed.
  • Description of goods. What's on the shipment, in enough detail for the carrier and receiver to identify it.
  • Quantity and weight. Total units and total weight, which the carrier uses for rating and the receiver uses to confirm what showed up.
  • Pallet count. How many pallets or units the freight actually occupies, which matters for the type of truck and dock time needed.
  • Order or PO reference. So the customer can tie the shipment back to what they ordered, especially when they've placed more than one order with you.
  • Special instructions, when relevant: liftgate required, appointment needed, delivery window, anything the driver or receiving dock needs to know before the truck shows up.

Miss the pallet count or get the weight wrong and a freight bill can get re-rated after the fact. Miss the order reference and a customer's receiving team has to guess, or call you, to figure out which PO this shipment belongs to.

Why this usually happens by hand

The information a BOL needs lives in different places: the order lives in whatever system tracks orders, the customer's shipping address lives in a customer file (which may or may not match who they told the salesperson to bill), the pallet count and weight depend on the product and how it was packed, and the ship date is whatever day the truck actually shows up, which frequently isn't the day someone expected when they pre-filled the paperwork.

Pulling all of that together usually falls to whoever's closest to the dock when the truck arrives, typing it into a shipping template by hand, often the same day, sometimes the same hour, as the shipment. That's exactly the condition under which errors happen: a consignee address that's a version out of date, a weight that's estimated because nobody had time to look it up, a pallet count that's wrong because it was guessed rather than pulled from the actual pack quantity.

What goes wrong when it's assembled this way

None of these errors are dramatic on their own, but they compound. A wrong weight means a freight invoice that doesn't match what was quoted, and a dispute later. A wrong pallet count means a carrier sends the wrong size truck, or a dock that isn't staffed for what actually shows up. A missing or wrong order reference means a customer who can't reconcile what arrived against what they ordered without calling you, which is a bad first impression on a shipment that otherwise went fine.

What actually fixes it

The fix isn't a nicer template. It's not re-typing the same information from different sources every time a truck is ready to leave. If the order record already has the customer, the product, and the quantity on it, and the product record already has how many units fit on a pallet and how much a unit weighs, a BOL can be generated directly from that data instead of reconstructed by hand under time pressure.

How RunMark handles this

RunMark generates a bill of lading as a PDF directly from an order record. Consignee name is pulled from the order's linked customer when one exists, so it doesn't need retyping. Pallet count and total weight are calculated automatically from the product's units-per-pallet and unit-weight figures when those are set on the SKU, and only need to be entered manually when RunMark genuinely can't derive them. Carrier, consignee, and the shipment's special instructions are the only fields that require direct input, along with an optional company logo pulled from your org's own branding. BOL generation is only available once an order is marked complete or shipped, so it's tied to the actual state of the order rather than a document you fill out speculatively before the shipment is real.

This isn't a transportation management system. It doesn't quote freight, dispatch carriers, or handle carrier-specific compliance formats. What it removes is the manual reconciliation step, gathering order, customer, and product data from separate places and retyping it onto a form at the exact moment everyone's in the biggest hurry. If the order record is right, the BOL generated from it is right too.

Back to the blog