3PL Shipping Markup: How to Bill Parcel Costs to Clients

Kris Gösser
October 13, 2026
Product
See how Shipium completes your Manhattan implementation.

A 3PL that buys a label at its own negotiated carrier rate and bills the merchant at a higher sell rate keeps that spread only if the carrier invoice, arriving days or weeks later, matches the rate used at label time. When a dimensional weight correction or an address correction lands after the merchant has already been billed, the 3PL absorbs it or rebills it, and either choice costs something. 3PL shipping markup is simple to set and harder to protect.

This guide covers how multi-client buy/sell parcel billing works, the four common markup models, where the margin leaks, and a reconciliation process that ties every carrier charge back to the client that generated it. For 3PL billing beyond parcel, including storage, pick and pack, and returns fees, see the 3PL billing management guide.

Key highlights:

  • 3PL shipping markup is the difference between the rate a 3PL pays a carrier (the buy rate) and the rate it bills each merchant client (the sell rate).
  • The margin is most exposed after label creation, when carrier invoices add surcharges and adjustments the sell rate did not account for.
  • Rating on fully loaded cost at carrier selection, and attributing every invoice line to a client account, keeps the billed sell rate and the realized margin close together.
  • Shipium Billing Management supports custom sell rate sheets per merchant, attributes carrier invoices to the correct client account, and audits each line item against pre-shipment data.

How multi-client buy/sell parcel billing works

In buy/sell billing, the 3PL ships on its own carrier accounts, pays the carrier at its negotiated buy rate, and bills each merchant client a sell rate set in that client's contract. The spread between the two is the 3PL's shipping margin, and it is earned one label at a time.

The model only applies when the 3PL owns the carrier relationship. Parcel billing runs on one of two account structures, and a 3PL can run both at once:

Account structure Who pays the carrier How the 3PL earns on shipping Main billing risk
3PL-owned accounts (buy/sell) The 3PL Spread between buy rate and each client's sell rate Post-shipment adjustments that are never rebilled
Client-owned accounts (bill third party) The merchant, directly A per-label or per-order handling fee Labels created on the wrong account

Buy/sell gives the 3PL a margin and lets smaller merchants access rates they could not negotiate alone. It also means the 3PL carries every invoice discrepancy until it is either recovered from the carrier or passed to the client.

A worked example. Say a 3PL bills a merchant at cost plus 20% on parcel. A ground label rates at $9.40 at pack-out, so the merchant is billed $11.28 and the 3PL expects $1.88 of margin.

Stage 3PL cost Billed to merchant 3PL margin
At label creation $9.40 $11.28 $1.88
Invoice adds a $1.65 dimensional weight adjustment, not rebilled $11.05 $11.28 $0.23
Adjustment rebilled at cost plus 20% $11.05 $13.26 $2.21

One unrebilled adjustment removed 88% of the expected margin on that shipment. Across thousands of daily labels and dozens of clients, the gap between expected and realized margin is set mostly by how reliably adjustments reach the right client.

The figures above are illustrative.

3PL shipping markup models compared

This guide groups parcel pricing into four markup models, and each moves a different risk onto the 3PL or the merchant. The right model depends on how much rate volatility the client will accept and how precisely the 3PL can rate at label time.

Markup model How the sell rate is set Works best when Risk to the 3PL
Cost plus percentage Buy rate multiplied by an agreed markup Clients accept rates that move with the carrier's Low, as long as adjustments are rebilled at the same markup
Fixed rate card A client-specific table by service, zone and weight Merchants want predictable shipping costs for their own checkout pricing High, because surcharge and GRI changes come out of the spread until the card is repriced
Pass-through plus fee Buy rate at cost, plus a flat per-label or per-order fee Large merchants who audit carrier costs closely Low on carrier cost, but the fee must cover the labor of rebilling adjustments
Blended or tiered A different markup or card by service level or volume tier Clients with mixed profiles, such as heavy ground plus some expedited Moderate, with more contract terms to keep in sync with billing

Two contract terms decide how well any of these hold up:

  1. Whether the sell rate is fully loaded. A rate card built on base rates alone leaves fuel, residential, delivery area and dimensional surcharges to be settled later. A card built on fully loaded rates keeps more of the margin fixed at quote time. For the mechanics, see how fully loaded rate shopping ensures maximum cost savings.
  2. How post-shipment adjustments are billed. Specify whether adjustments pass through at cost or at the same markup, the window for rebilling them, and what documentation the client receives.

Carrier pricing changes make the second term matter more each year. Supply Chain Brain's comparison of the 2026 FedEx and UPS general rate increases notes that both carriers again set a 5.9% headline increase, while minimum charges, accessorial fees, fuel surcharges and off-cycle adjustments continue to compound on top of it. A fixed rate card priced only against the headline number falls behind those changes during the year.

Where 3PL shipping margin leaks

Shipping margin leaks at five points, and most of them surface only after the carrier invoice arrives. Each one has a specific control.

Leak What happens Control
Rating on base rates only Fuel, residential, delivery area and dimensional surcharges appear on the invoice but were never in the sell rate Rate fully loaded cost at carrier selection
Unrebilled adjustments Dimensional weight, address and residential corrections arrive after the client was billed Match each adjustment to its original shipment and client, then rebill under the contract terms
Unattributed charges Charges on shared 3PL accounts cannot be tied to a client, so they are absorbed Attribute every invoice line to a client account using the shipment record
Carrier errors not disputed Duplicate charges, wrong service levels and rate mismatches are paid as invoiced Audit each line against pre-shipment data before payment
Billing lag Client invoices go out late or need corrections, which invites disputes, while carrier bills keep arriving on the carrier's schedule and strain working capital Generate client bills from reconciled data on a fixed cycle

The third leak drives most client disputes. When a 3PL cannot show which merchant account generated a charge, the merchant has a reasonable basis to reject it, and the 3PL usually absorbs the cost to protect the relationship.

The common thread is the shipment record. A 3PL that stores the rate, service, dimensions, client and label for every shipment at pack-out can reconcile any later charge against it. A 3PL that reconstructs those details from spreadsheets after the invoice arrives is limited by how much of that history survives.

For how carrier pricing affects this at the contract level, see carrier contract management.

How to reconcile carrier invoices across 3PL clients

Carrier invoice reconciliation for a multi-client 3PL is an eight-step cycle that starts at label creation. Most of the work happens before the invoice exists, because the shipment record captured at pack-out is what every later step checks against.

  1. Capture the shipment record at label creation. Store the client account, service level, fully loaded rate, package dimensions, weight and destination with the tracking number.
  2. Ingest carrier invoices on every billing cycle. Pull them by API, EDI or SFTP so line items arrive as structured data.
  3. Match each invoice line to its shipment and client. Use the tracking number to join the charge to the stored record and the client who generated it.
  4. Audit each line against pre-shipment data. Flag rate mismatches, duplicate charges, unexpected surcharges and service-level discrepancies.
  5. Dispute carrier errors before payment. File disputes inside each carrier's claim window with the shipment-level evidence from step 1.
  6. Rebill valid adjustments to the right client. Apply the contract terms for adjustments, at cost or at markup, and attach the supporting detail.
  7. Generate client invoices from reconciled data. Bill each merchant with line-level detail so charges can be checked against their own order data.
  8. Review realized margin by client, carrier and service each month. Compare it with expected margin and reprice rate cards where the gap persists.

Steps 3 and 4 decide whether the cycle scales. At a few hundred labels a day, a finance analyst can match lines by hand. At tens of thousands of labels across dozens of clients, matching and auditing have to run automatically, with people reviewing only the exceptions.

How Shipium handles multi-client 3PL shipping billing

Shipium automates the rating, audit and client attribution steps of that cycle, because the same platform that rates and labels each shipment also holds the record every invoice line is checked against.

Reconciliation step How Shipium handles it
Rating at label time The Rating Engine evaluates fully loaded rates at carrier selection, including applicable surcharges and fees, so the rate used at the warehouse reflects what will be invoiced
Client sell rates Billing Management supports custom sell rate sheets, so each merchant is billed against its contracted rates
Invoice ingestion and audit Carrier invoices arrive by API, EDI, SFTP or other supported methods, and each line item is reconciled against pre-shipment data, with discrepancies surfaced at the shipment level before payment
Client attribution Carrier invoices are attributed directly to the correct customer account through automated invoice reconciliation
Margin review Reporting and dashboards show cost-per-parcel trends, carrier accuracy and surcharge patterns, with deeper analysis in Orca Analytics

Always-On Audit extends this by validating carrier charges against the rate Shipium generated at shipment as invoices arrive, which catches billing errors before refund windows close. For how this compares with a standalone billing tool, see Shipium's Always-On Audit vs. Enveyo, and for the full 3PL use case, see Shipium for 3PLs. For broader platform selection criteria, see what to look for in the best 3PL software.

Frequently asked questions

How do 3PLs mark up shipping?

3PLs mark up shipping by applying a percentage over the carrier buy rate, a fixed client rate card, pass-through cost plus a per-label fee, or a tiered blend of these by service or volume. The markup level varies by contract and by the size of the 3PL's carrier discount, so there is no single industry standard.

What is buy/sell billing for a 3PL?

Buy/sell billing means the 3PL ships on its own carrier accounts at its negotiated buy rate and bills each merchant client a contracted sell rate. The difference is the 3PL's shipping margin, and it applies only to labels created on 3PL-owned accounts.

How should a 3PL bill dimensional weight adjustments to clients?

A 3PL should match each adjustment to the original shipment and client, then rebill it under the terms written in that client's contract, either at cost or at the same markup as the original label. Writing the adjustment terms and rebilling window into the contract gives both sides a reference when a charge is questioned.

How does a 3PL attribute carrier charges to the right client?

The 3PL joins each carrier invoice line to its stored shipment record by tracking number, and that record carries the client account captured at label creation. Without a shipment record, charges on shared carrier accounts have to be matched by hand.

Does Shipium support multi-client 3PL billing?

Yes. Shipium Billing Management supports custom sell rate sheets for each merchant, attributes carrier invoices to the correct client account, and audits every invoice line against pre-shipment data before payment.

‍

Book a demo to see how Shipium attributes carrier charges to each client and protects shipping margin across your merchant portfolio.