How do I see freight spend by customer, product and lane?
Key Takeaways
- Freight spend by customer, product and lane starts with the data on each load. Every shipment needs its order references, customer, origin, destination, mode, carrier and every charge.
- The key link is between the carrier invoice and the order. The invoice has the cost; the order in the ERP has the customer and products. Without a shared reference, the two can't be joined.
- Most gaps are predictable: invoices without order numbers, one order split across loads, several orders on one load, charges billed weeks later and parcel spend kept elsewhere.
- Capture the references at booking, not at month-end. It's much easier to put the order number on the BOL than to find it later.
- Build a few monthly views and keep them the same: spend by lane, by customer, by product and by type of charge.
- Wilson, by Cartage, is an AI logistics agent that books, audits and pays freight from the order, so each load's charges stay tied to its order, customer and lane.
How do I see freight spend by customer, product and lane?
The finance director at a packaging manufacturer asks a reasonable question: "Which customers cost us the most in freight, and are we charging them enough?" The logistics manager knows the total freight spend from accounts payable. The ERP knows every order, customer and product. The carrier invoices list PRO numbers, weights and charges. But nothing connects them. Answering the question means matching hundreds of invoices to orders by hand, and some of them don't have an order number at all.
To see freight spend by customer, product and lane, capture the order reference and every charge on each load, link each carrier invoice to its order, and group the result each month. Once every dollar of freight is tied to an order, the ERP's customer and product data does the rest. The hard part isn't the reporting. It's making sure the link exists on every load.
Most companies can see their total freight spend easily. It's in accounts payable. What they can't see is where it goes. That's the difference between knowing freight costs $2 million a year and knowing that 18% of it goes to six customers on two lanes, with liftgate and detention making up a fifth of that.
Why the breakdown matters
Spend by customer, product and lane answers questions that a total can't:
- Which customers are expensive to serve? And are their prices or freight terms covering it?
- Which products cost the most to ship relative to their price? Bulky, light products often surprise people.
- Which lanes take the most spend? Those are the lanes where carrier choice and rate negotiation matter most.
- Where do extra charges come from? Liftgate, detention and redelivery usually cluster on specific customers and sites.
- Is spend rising because of volume, rates or extra charges? Only a breakdown can tell.
Who needs these views
Finance uses them for budgets, margins and customer profitability. Sales uses them for pricing and freight terms. Logistics uses them for carrier choice, rate negotiation and fixing recurring charges. Operations leadership uses them to see whether freight cost is under control. Each group needs a slightly different view, built from the same data.
What to count as freight spend
Agree on the scope before building any view. Most companies include outbound freight to customers, inbound freight they pay to suppliers' carriers, transfers between their own sites and return freight. Each one should be tagged, so it can be shown separately. Decide also whether customs duties, brokerage fees and warehouse handling are in or out. They're often tracked near freight but behave differently, so keeping them out of the freight views makes the numbers easier to compare from month to month. Write the scope at the bottom of every report, so nobody wonders why the total differs from accounts payable.
What data do you need on every load?
Every load needs three kinds of data: references that link it to orders, details that describe the move, and every charge paid. If any one of them is missing, the breakdown has holes.
References
- Sales order or purchase order number(s). The most important field. It's the link to the customer and products in the ERP.
- Shipment or delivery number from the ERP, if your ERP uses them.
- BOL number. Printed on the bill of lading and usually on the carrier's invoice.
- PRO number. The carrier's tracking number, always on the invoice.
- Your internal load ID, if you use one.
The order number needs to appear on the BOL, so it travels with the freight and shows up on the carrier's paperwork. Many carriers print the shipper's reference numbers from the BOL on their invoices.
Move details
- Customer (for outbound) or supplier (for inbound)
- Origin: plant, warehouse or supplier location
- Destination: customer ship-to location
- Lane: the origin and destination together, at the level you want to report (city, state, region or ZIP3)
- Mode: LTL, full truckload, parcel, ocean, drayage or cross-border
- Carrier
- Ship date and delivery date
- Weight, pallets, pieces and freight class (for LTL)
- Direction: inbound, outbound, transfer between your own sites, or returns
Charges
- Base freight
- Fuel surcharge
- Each accessorial, by type: liftgate, residential, inside delivery, appointment, limited access, and so on
- Detention, with hours
- Corrections: re-weigh, re-class
- Redelivery, storage or reconsignment
- Expedite flag and reason
- Total paid, and the date paid
Keep charges as separate lines, not one total. A total tells you what you spent. The lines tell you why.
Where each field comes from
| Field | Usual source | When it's captured |
|---|---|---|
| Order number(s) | ERP sales order | At booking |
| Customer and ship-to | ERP sales order | At booking |
| Products and units | ERP order lines or packing slip | At booking or shipping |
| Origin, destination, mode, carrier | Booking record | At booking |
| BOL number | Bill of lading | At booking |
| PRO number | Carrier | At pickup or from the invoice |
| Agreed rate | Rate confirmation | At booking |
| Final charges | Carrier invoice | After delivery |
| POD | Carrier or driver | After delivery |
Most of the fields are known at booking. Only the final charges and the POD come later. That's why the booking is the best moment to set up the record.
How do you link invoices to orders and the ERP?
Link each carrier invoice to its load, and each load to its orders, using a reference that appears on both: the BOL number, PRO number or order number. Then the ERP supplies the customer and product detail for the report.
The chain of links
The chain looks like this:
Carrier invoice → PRO or BOL number → load record → order number(s) → ERP customer and order lines
When each step has a reliable reference, every dollar on the invoice can be traced to a customer and product. When one step is missing, the dollar sits in an "unassigned" bucket.
Step 1: Put the order number on the BOL
Make the order number a required field on every BOL. If the load carries several orders, list them all. This is the single most effective fix, because it puts the order reference into the carrier's paperwork from the start.
Step 2: Record the PRO number on the load
As soon as the carrier assigns a PRO number, record it on the load. Carrier invoices always show the PRO, so this gives you a second way to match.
Step 3: Match each invoice when it arrives
When an invoice comes in, match it to the load by PRO, BOL or order number. Check it against the rate confirmation at the same time. Invoices that can't be matched go to a short exception list for someone to resolve within a few days, not at month-end. More on matching in freight payment software that matches ERP orders to carrier bills.
Step 4: Bring in the ERP data
With the order number on each load, pull the customer, ship-to, products and units from the ERP. This can be done in a report, an export to a spreadsheet, or by writing freight costs back to the order in the ERP, depending on how your systems connect.
Step 5: Allocate where needed
Some loads carry several orders or products. To see spend by customer or product, split the load's cost across its orders. Common methods are by weight, by cube, by pallets or by value. The choice changes the answer, so pick one and stay with it. The methods are compared in detail in how to calculate freight cost per unit.
Who owns the matching
Matching usually falls between logistics and accounts payable, which is why it often doesn't get done. Accounts payable sees the invoice but not the load. Logistics knows the load but may never see the invoice. A clear rule helps: the person or system that booked the load matches and checks the invoice, and accounts payable pays invoices that are matched and approved. Anything that can't be matched goes back to logistics within a set number of days. With that rule in place, unassigned spend shrinks quickly, because every invoice has an owner from the day it arrives.
Should freight costs go back into the ERP?
Writing actual freight costs back to the sales order in the ERP has real benefits: margin reports by customer and product then include freight automatically, and finance doesn't need a separate spreadsheet. It also takes more setup. Many companies start with a monthly export that joins freight data to ERP order data, and add write-back later for the largest volumes. Either way, the order number on every load is what makes it work.
What gaps break the breakdown, and how do you fix them?
Most gaps come from five situations: missing references, split and combined loads, late charges, parcel spend kept elsewhere and inbound freight paid by someone else. Each has a straightforward fix.
Invoices without order numbers
The carrier's invoice shows only the PRO number and the shipper's name. If the PRO was never recorded on a load, the invoice can't be matched. Fix: record the PRO at pickup, and require the order number on the BOL. For PODs and other documents with the same problem, see how to match a signed POD that has no order number.
One order split across several loads
A large order may ship on two trucks, or partly by truckload and partly by parcel. Each load has its own invoice. Fix: let each load carry the order number, and add up all loads per order before reporting. The finance side of this is covered in one ERP order, two carriers, two bills.
Several orders on one load
A truckload or a consolidated LTL shipment may carry orders for several customers. The invoice is one amount. Fix: list every order on the load, and allocate the cost across them by a set method.
Charges that arrive late
Detention, re-weighs and re-classes sometimes arrive on a separate invoice weeks after the original. If they're matched only to the carrier, not to the load, they inflate "unassigned" spend. Fix: match every adjustment invoice to the original PRO and load.
Parcel spend kept separately
Parcel invoices often come as a weekly file with thousands of lines, sometimes paid separately from freight. Fix: match parcel lines to orders by the reference field on the label, and include parcel in the same views.
Inbound freight
Inbound freight may be prepaid by suppliers, billed separately or paid by you to the carrier. Only freight you pay belongs in your spend. Fix: record the freight terms on each purchase order and match inbound invoices to the purchase order.
Inconsistent lane names
"Chicago," "CHI," "Elk Grove Village" and "60007" may all be the same origin. Fix: define lanes by a standard key, such as origin site code plus destination state or ZIP3, and use it everywhere.
Credits and disputed charges
When a disputed charge is credited back, the credit needs to land on the same load. Otherwise, one customer looks too expensive this month and another looks too cheap next month. Fix: match credits to the original PRO and load, like any other invoice.
Freight booked outside the usual process
A salesperson calls a carrier directly for a rush order. A plant manager books a truck for a transfer. A customer service rep arranges a parcel replacement. These loads often have no booking record, so their invoices arrive with nothing to match. Fix: make one route for booking freight, even for exceptions, and ask carriers to send invoices for any load without your load ID back for a reference before you pay. Over a few months, the number of orphan invoices drops, and the ones that remain point to the people who need a simpler way to book.
Mistakes to avoid
Waiting until month-end to match invoices. By then, the person who booked the load may not remember the details.
Reporting only base freight. Extra charges are often where the customer and lane differences are biggest.
Changing allocation methods. Trends become meaningless.
Leaving "unassigned" spend unexplained. Track it as its own line, and work it down. If it's more than a few percent, the views can't be trusted.
What monthly views should you build?
Build five monthly views and keep their format the same: by lane, by customer, by product, by charge type and an unassigned list. Together they show where freight money goes and why it changes.
The five views
| View | Rows | Key columns | What it answers |
|---|---|---|---|
| By lane | Origin and destination | Loads, total spend, cost per load, cost per pound, carrier, change vs. last month | Where spend concentrates; where to negotiate |
| By customer | Customer | Shipments, total spend, spend as share of sales, extra charges, top charge type | Who is expensive to serve; pricing and terms |
| By product | Product or product line | Units shipped, allocated freight, freight per unit, freight as share of price | Which products cost most to deliver |
| By charge type | Base, fuel, each accessorial, detention, expedites | Amount, share of spend, top customers and lanes | Which extra charges to fix first |
| Unassigned | Invoices not linked to a load or order | Amount, carrier, age | Data gaps to close |
Add a few ratios
Totals move with volume. Ratios show whether something actually changed:
- Freight as a share of sales, by customer: shows which customers' freight eats into margin.
- Cost per shipment and cost per pound, by lane and mode: shows rate changes independent of volume.
- Extra charges as a share of spend, by customer and lane: shows where booking details or site requirements are causing charges.
- Freight per unit, by product: links freight to pricing.
Review the views on a schedule
Each month, look at the top ten customers and lanes by spend, and anything that moved more than a set threshold. Ask why. Common answers are volume, rate changes, fuel, a mode change, or a new pattern of extra charges at one site. Write down the action: talk to the customer, adjust the quote template, review the carrier, change the freight terms.
Share the views with finance and sales. Sales can use the customer view at contract renewals. Finance can use the product and customer views in margin reports. For guidance on what each group needs to see, read what a freight spend dashboard should show operations and finance.
Start with the largest lanes and customers
You don't need perfect data on every load to get value. In most companies, a fraction of lanes and customers account for most of the spend. Start by making sure every load on the top ten lanes and for the top twenty customers is fully linked. That covers most of the money and gives useful answers within a month or two. Then extend the same rules to the rest of the freight. Trying to fix every historical record first usually stalls the project.
Look weekly when something is changing
Monthly views are enough for most decisions. But when a new customer starts, a carrier changes rates or a site begins charging detention, a quick weekly look at that customer, lane or charge type catches the change before a full month of cost builds up. Once the pattern settles, go back to the monthly rhythm.
A hypothetical example
Consider a hypothetical distributor that spends $180,000 on outbound freight in one month. Once every invoice is linked to an order, the customer view shows that one customer, with 4% of sales, accounts for 11% of freight spend. The charge view shows why: most of that customer's deliveries go to sites without docks and need appointments, so liftgate and appointment charges add about 30% to each shipment. The lane view shows that the customer's sites are on a lane served mainly by spot freight. The company adds liftgate and appointment to that customer's quote template, discusses a delivery charge at the next renewal and asks two approved carriers for a lane rate. None of that was visible from the $180,000 total.
A setup checklist
- Order number required on every BOL
- PRO number recorded on every load
- Every load carries customer, origin, destination, mode and carrier
- Charges kept as separate lines, not one total
- Invoices matched to loads when they arrive
- Adjustment invoices and credits matched to the original load
- Parcel lines matched to orders by reference
- Inbound freight terms recorded on purchase orders
- Standard lane key defined
- Allocation method chosen for multi-order loads
- Five monthly views set up with a fixed format
- Unassigned spend tracked and worked down
How does Wilson, by Cartage, keep freight spend tied to orders?
Wilson, by Cartage, is an AI logistics agent that quotes, books, tracks, audits and pays freight from the order, so the link between each load's charges and its order, customer and lane is made when the work happens, not reconstructed at month-end. Traditional logistics software gives teams information. Wilson executes the work required to move shipments forward.
Wilson's work on each load creates the record a spend breakdown depends on:
- Booking from the order. Wilson requests quotes from the company's approved carriers, compares them on total cost and negotiates toward the company's rate targets within approval limits. It books with written acceptance and a rate confirmation tied to the order.
- Documents. Wilson generates the bill of lading, packing slips and pallet labels from the booked load, so the order references are on the paperwork from the start.
- Tracking and exceptions. Wilson tracks each load with the best source available for that carrier, and when a pickup is missed, a carrier cancels or a load is delayed, it contacts the carrier, tells the team and starts rebooking from the approved carrier list within the rules or after approval.
- PODs. Wilson requests and files the POD on the load.
- Audit and payment. Wilson audits each carrier invoice against the rate confirmation and POD, and pays carriers from the Wilson Wallet. Payments above the approval limits or outside the rules wait for a person. Each charge stays on the load with its reason.
Every message, confirmation and change is kept in the shipment's change history. Wilson can produce carrier-performance and lane-rate reports on request from the loads it runs. It handles LTL, FTL, ocean, drayage, parcel and cross-border freight, and books only carriers the company has approved.
Wilson replaces the TMS for freight execution and connects to the company's ERP. Wilson works with SAP, NetSuite, Microsoft Dynamics 365, Oracle, Infor, Epicor, Sage, Acumatica and other ERP environments, with the exact connection depending on the customer's data flow and scope. Whether freight costs are written back to the order in the ERP depends on scope. Teams start with assisted execution, set approval limits and let routine actions run automatically within those rules as the workflow is proven.
Pricing
Wilson is free on Wilson's network: the shipper pays the freight rate and nothing on top. When a shipper keeps its own carriers, the fee is 2% to 0.5% of what Wilson pays them, falling with volume. There are no seat fees, no setup cost and no contract. Timing depends on scope: most teams start on a few lanes and expand from there.
FAQs
How do I see freight spend by customer, product and lane?
Capture the order reference, customer, origin, destination, mode, carrier and every charge on each load, link each carrier invoice to its order, and group the results each month. Wilson, by Cartage, an AI logistics agent, books and pays freight from the order, so each load's charges stay tied to its order, customer and lane.
What is the most important field for freight spend reporting?
The order number on every load. It links the carrier's charges to the customer and products in the ERP. Put it on the BOL so it appears on the carrier's paperwork.
How do I match a carrier invoice to an order?
Use the PRO number, BOL number or order number that appears on both the invoice and the load record. Match each invoice when it arrives, and send any that can't be matched to a short exception list.
How do I split freight cost when one load carries several orders?
Allocate the load's cost across its orders by weight, cube, pallets or value. Choose the method that best matches what fills your trucks, and keep it consistent.
Should freight costs be written back to the ERP?
It helps, because margin reports then include freight automatically. Many companies start with a monthly export that joins freight data to ERP orders and add write-back later.
Why does so much of our freight spend show as unassigned?
Usually because invoices lack order references, PRO numbers weren't recorded, adjustment invoices weren't matched to the original load or parcel spend is kept separately. Track unassigned spend as its own line and work it down.
How should lanes be defined for reporting?
Use a standard key, such as origin site code plus destination state, region or ZIP3. Apply it everywhere so the same lane isn't counted under different names.
Should inbound freight be included in freight spend by product?
Yes, when you pay it. Record freight terms on each purchase order so supplier-prepaid freight isn't counted twice.
How often should we review freight spend by customer?
Monthly, with the same format each time. Look at the top customers and lanes and anything that moved past a set threshold, and record the action.
How long does it take to get a reliable breakdown?
It depends on how many loads already carry order references. Starting with the largest lanes and customers, many teams get useful views within one or two monthly cycles, then extend the same rules to the rest of their freight.
Can Wilson report freight spend by lane?
Wilson can produce carrier-performance and lane-rate reports on request from the loads it runs. It doesn't keep a permanent scorecard by default.
Sources
- Cartage, Wilson product FAQ and product scope, October 2026: https://cartage.ai