GoatLabelsGoatLabels

Blog

Multi-Carton B2B Orders: One PO, Many Labels

How to split a B2B purchase order into cartons, pick a rate for each carton, and keep every label tied to one reference your finance team can total.

A multi-carton B2B order ships cleanly when three things are true: each carton has its own weight and dimensions, each carton gets its own label and rate decision, and every label carries the same order reference. The purchase order stays one document for the customer and for finance, while the warehouse treats each box as its own parcel. Trouble with these orders can often be traced to skipping one of those three steps, such as the reference.

Why does one purchase order turn into several labels?

One purchase order turns into several labels because parcel carriers price and move individual packages, not orders. A buyer sends a single PO for forty units. The warehouse packs those units into however many boxes the product and the carton sizes require. Each box needs a scannable label with its own tracking number, because each box travels through the network on its own and can be delayed, damaged, or delivered separately.

Sales, customer service, and accounts receivable think in orders; the carrier thinks in packages. A multi-carton process bridges that gap.

Carrier limits also force splits. Per USPS, Priority Mail has a maximum weight of 70 lbs, and the "maximum combined length and girth ... is 108 inches." An order that would fit in one large, heavy box may have to become two boxes to stay inside a service's limits. Each carrier and service publishes its own limits, so check the current guide for the services you use before you set packing rules.

How should you split an order into cartons?

Split the order by deciding carton contents before anyone prints a label, and record the actual weight and dimensions of each packed box. A split that is planned at the pack station from real cartons is more reliable than one estimated from item master data, because item weights may not include dunnage, inner packs, or the carton itself.

A workable sequence for the pack station:

  1. Pull the order and confirm the line quantities to be shipped today. If part of the order is backordered, decide now whether the rest ships or waits.
  2. Choose cartons from your standard sizes. Fewer standard sizes means fewer dimension mistakes.
  3. Pack so that no carton exceeds the weight and size limits of the services you intend to rate. Leave a margin rather than packing to the limit.
  4. Weigh and measure each closed carton. Record length, width, height, and weight per carton.
  5. Number the cartons (1 of 3, 2 of 3, 3 of 3) on the packing slip and on the box.
  6. Note which lines and quantities went into which carton. This is what customer service needs when one box goes missing.
  7. Only then create the labels, one per carton, all with the same reference.

Should every carton ship with the same carrier and service?

Not necessarily: each carton can be rated on its own, and the right answer for a light carton may be different from the right answer for a heavy one. Rating per carton lets you compare the options for each box instead of for the order as a whole.

There are operational reasons to keep cartons together, though:

Situation Rate per carton Keep one carrier and service
Customer receives at a staffed dock daily Usually fine Not required
Customer wants one delivery to check in against the PO Risky Preferred
Cartons differ a lot in weight or size Strong case May cost more
Customer's receiving instructions name a carrier Not allowed Required
Order is urgent and must arrive the same day Only within the same transit window Simplest

A reasonable default rule is: rate each carton separately, but only among services that meet the same delivery window, and override the rule for any customer whose receiving instructions name a carrier. That keeps the per-carton choice without creating a delivery spread across three days. Rules like this are covered in more depth on our B2B shipping software page.

Also ask whether the order should be parcel at all. When the carton count and total weight climb, a pallet moving by LTL can be the better mode. The trade-offs are laid out in LTL vs parcel shipping.

What reference should every carton carry?

Every carton should carry one shared reference that identifies the order, written the same way every time. The shared reference is what lets you total the freight for a PO, bill it back, and find all the tracking numbers in one search.

Pick the identifier that your downstream systems already join on. For your team that may be the sales order number or the customer PO number. Then set a format and do not deviate from it:

  • Use one identifier as the primary reference, for example the sales order number.
  • If you want the carton sequence, append it after a fixed separator, for example SO-48211|2of3, or keep the sequence in a second field if your tool has one.
  • Do not let users type free text into the reference. "Smith order" and "SO48211" will never join to anything.
  • Keep leading zeros and prefixes exactly as the ERP stores them, so an exact-match lookup works.

To test the format, export a month of shipments, filter by one order number, and confirm you get exactly the cartons that shipped. For customer or department charge-back, see shipping cost allocation software.

What does this look like in a worked example?

Here is an illustrative example with hypothetical numbers; the rates are invented to show the method, not quoted from any carrier. A distributor receives PO 7730 from a customer and creates sales order SO-48211 for 40 units across three product lines. The pack station ends up with three cartons.

Carton Contents Weight Dimensions (in) Example rate A Example rate B Chosen
1 of 3 24 small fittings 9 lb 12 x 10 x 8 $11.40 $13.10 A
2 of 3 12 valve bodies 38 lb 18 x 14 x 12 $31.80 $27.50 B
3 of 3 4 housings 22 lb 20 x 16 x 10 $24.90 $21.60 B

Both example services meet the customer's delivery window, so the rule "lowest rate within the window" applies per carton. Total freight for the order in this example is $11.40 + $27.50 + $21.60 = $60.50. Shipping all three on service A would have been $68.10, and all three on service B would have been $62.20.

All three labels carry the reference SO-48211. At month end, finance filters the shipping export by that reference and gets three lines that sum to $60.50. If a carrier later adjusts carton 2 after re-weighing it, the adjustment should land against the same reference.

What goes wrong with multi-carton orders, and how do you prevent it?

Failures can come from data that was correct at the order level but wrong or missing at the carton level. The common ones, with the fix for each:

  • Identical weights on every carton. Someone divided the order weight by the carton count. Weigh each box; estimated weights lead to carrier adjustments later.
  • One carton never labeled. The station printed two of three. Print the carton count on the packing slip and reconcile labels to cartons before the order leaves the station.
  • Mixed references. One label has the SO number, another the PO number. Populate the reference from the order record, not by hand.
  • Duplicate labels after a retry. A batch was re-submitted after a timeout. If you create labels through an API, send an idempotency key per carton so a retry cannot buy the same label twice.
  • Tracking sent for one carton only. Send all tracking numbers, with the carton sequence.

If your orders start in an ERP, you may avoid several of these by exporting one row per carton with the order number repeated on each row. Our ERP shipping integration page describes that file-based pattern.

Where GoatLabels fits

GoatLabels handles the parcel side of this process. One order can produce several labels, and each label is its own dated ledger line carrying the same reference, so a filter on the order number returns every carton and its cost. USPS, UPS, FedEx, and DHL are rate-shopped on every parcel from one account, which makes per-carton carrier choice the normal path rather than a workaround. Re-weigh adjustments post to the same ledger. For volume, a CSV import accepts up to 500 rows per file, names the row and field on any error, and does not fail the batch for one bad row. The REST API supports an Idempotency-Key header and test keys on every plan.

The limits matter for B2B teams, so here they are plainly. GoatLabels has no native ERP, WMS, or EDI connectors; beyond its 13 store connectors, orders arrive by CSV or API, and tracking is not written back into an ERP automatically. It does not produce retailer compliance labels such as GS1-128, does not handle LTL or freight, and does not support bring-your-own carrier accounts or negotiated rates. If a customer's routing guide requires your own carrier account or a compliance label on every carton, you will need a different tool for those shipments. Plans are Free at $0 per month for 50 shipments and Pro at a flat $40 per month with unlimited shipments; details are on the pricing page.