Freight forwarding margin is the difference between what the client pays you and what you pay the carrier, expressed as a percentage of the client price. It sounds simple, yet many companies calculate it one way when quoting and another way after settlement. This guide shows how to calculate the margin on a forwarding order so the number in your quote matches what actually lands in your account.
All amounts below are examples with round numbers. Plug in your own rates and the method works the same way.
How do you calculate freight forwarding margin on a single order?
Start with the profit on the order: the client rate less the carrier cost and any other direct costs. To get the margin percentage, divide that profit by the client rate. Multiply by 100 and you have the percentage.
- Client rate (example)
- PLN 5,000 net
- Carrier cost (example)
- PLN 4,400 net
- Profit on the order
- PLN 5,000 less PLN 4,400, so PLN 600
- Margin
- PLN 600 divided by PLN 5,000, so 12%
- Markup
- PLN 600 divided by PLN 4,400, so about 13.6%
Always work with net amounts. VAT is neither your revenue nor your cost, so including it only blurs the picture.
Margin vs markup: why the difference costs you money
Margin relates profit to the selling price, markup relates it to the purchase cost. The same PLN 600 profit is a 12% margin but a 13.6% markup. Trouble starts when management sets a margin target and forwarders price with markup.
Example: the owner wants a 15% margin. A forwarder takes the PLN 4,400 carrier cost and adds 15%, which gives PLN 5,060. Profit is PLN 660, and the margin is only about 13%, not 15%.
To hit exactly 15% margin, divide the carrier cost by 0.85, which is 100% less the target margin. In the example that gives about PLN 5,176. A PLN 116 gap on one order becomes serious money across a few hundred orders a year.
Which hidden costs eat a forwarder margin?
A forwarder rarely loses margin on the carrier rate, because that number is visible from day one. It disappears on costs that appear along the way or only at payment time. These are the usual suspects.
- Waiting time: the carrier charges for time lost at loading, and your agreement with the client has no clause that lets you pass it on.
- Extra stops: the client adds a drop on the way, and the new carrier rate rises more than the client surcharge.
- Road tolls: if you price the route without tolls and the carrier bills them separately, the difference comes out of your margin.
- Currency differences: the client pays in EUR, the carrier is paid in PLN, and the rate on the payment day is lower than on the quoting day.
- Cost of financing: the client pays in 60 days, the carrier wants money in 30, so for a month you fund the order yourself.
- Bad debts: the client never pays, and you still have to pay the carrier.
Example: how a 12% margin turns into 7%
Take an order where the client pays EUR 1,200 on 60 day terms and the carrier gets PLN 4,500 on 30 day terms. At a rate of 4.30 revenue is PLN 5,160, profit PLN 660 and margin about 12.8%. That is the calculation on the day you accept the order.
- 1On the payment day the rate drops to 4.20, so revenue is now PLN 5,040 and profit PLN 540.
- 2The carrier adds PLN 150 for waiting time you cannot pass on to the client, leaving PLN 390.
- 3You fund PLN 4,500 for 30 days. At an assumed cost of money of 10% a year that is about PLN 37, leaving PLN 353.
- 4Final margin: PLN 353 divided by PLN 5,040, so about 7%.
None of these costs was large, but together they took almost half the profit. That is why it pays to calculate margin twice, at quoting and after settlement, and to look into the gap between the two.
How to build a forwarding order costing that tells the truth
A good forwarding order costing includes everything that really affects the result, not just two rates. A short checklist the forwarder runs through before sending a quote is enough.
- 1Client rate and carrier cost, both net and in one reference currency.
- 2Road tolls: who pays them and whether they are in the rate.
- 3Waiting time rules: how many free hours and the price of each extra hour, separately for the client and the carrier.
- 4Extra loading and unloading stops and the price of each one.
- 5A currency buffer when the client currency differs from the carrier currency.
- 6The gap between payment terms and its cost in money.
- 7A minimum profit in PLN below which the order makes no sense, whatever the percentage.
A currency buffer simply means using a slightly lower rate in the costing than today. If the rate on the payment day turns out higher, the difference is extra profit instead of a loss.
Part of this work can be handled by Bobi, the AI assistant for freight forwarding and transport. From a client mail it prepares a quote: it recommends a vehicle, proposes a price with your margin and drafts the reply, and you decide whether to send it.
How to calculate transport order profitability with several carriers
When an order is split into legs, for example a pre carriage to a cross dock and the main run with another carrier, you calculate transport order profitability for the whole order. Add up the cost of every leg and the transshipment, then compare it with the single client rate.
- Client rate (example)
- PLN 9,000
- First leg, carrier A
- PLN 3,800
- Second leg, carrier B
- PLN 4,200
- Transshipment
- PLN 300
- Profit
- PLN 9,000 less PLN 8,300, so PLN 700
- Margin
- about 7.8%
The biggest risk in these orders is a delay on one leg that causes waiting time on the next. So leave a bigger buffer in the costing than for a simple point to point move.
In Sokar an order can be split into legs handled by different carriers, and a margin and profitability preview is shown for every order. No need to stitch the legs together in a separate spreadsheet.
How to track margin per client and per lane
A single order tells you little. The real picture comes from summaries: which clients and which lanes bring profit, and which only bring turnover.
- Average and absolute margin per client over the last three months, not just the latest order.
- How long the client actually takes to pay compared with the term on the invoice.
- The number of orders with waiting time or extra costs you could not pass on.
- Margin per lane, meaning the loading and unloading city or region pair.
- The gap between quoted margin and settled margin, separately for each forwarder.
It often turns out that a big client with high turnover has the lowest margin and the longest payment times. That does not mean you should drop them, but you should know what serving them really costs.
In Sokar you set payment terms and credit limits for contractors, including foreign ones, and the order list shows rate statistics. Bobi checks the company and its VAT status at the order, which cuts the risk of a bad debt from the start.
When should you turn down a load, even if it looks profitable?
Saying no is a business decision too. Clear criteria help forwarders make it quickly and without arguing with the boss.
- Profit in PLN is below your agreed minimum, even if the percentage looks fine on a low rate.
- The client is over their credit limit or regularly pays late.
- The client payment term is much longer than the carrier term, and the margin does not cover the cost of financing.
- The contractor has an unclear history, a new tax number and pushes for an urgent move at a high rate.
- Unloading ends in a region where the carrier will not find a return load, so later orders on that lane will cost more.
- Waiting time and extra stop terms are undefined, and the client refuses to clarify them.
Want to see margin and profitability on every order instead of working them out in a spreadsheet?
Try Sokar in a 30 day pilotFrequently asked questions about forwarder margin
Sokar shows a margin and profitability preview for every order, including orders split into legs and orders settled in EUR. We help you move contractors, fleet and orders from your current system.
Check margin on every order: 30 days free