How to calculate COD profit margin: formula, max CPA and break-even

· by Ariel Patrício · in Cash on Delivery · 14 min read

A calculator, banknotes and financial documents on a desk

In cash on delivery, ads pay for orders that never confirm and shipping pays for parcels that come back. The formula that follows the whole funnel, with a worked euro example, max CPA and break-even.

To calculate COD profit, follow the order through the funnel: generated, confirmed, delivered. You pay ads on every generated order, shipping on every shipped one and product cost only on delivered ones. Profit = delivered × price − generated × CPA − delivered × product cost − confirmed × shipping. Max CPA and break-even delivery rate follow from it.

The margin maths that works under prepayment rests on an assumption cash on delivery does not meet: an order sold is an order paid. In COD, some orders never confirm, and some of the parcels that leave the warehouse come back unpaid. If you calculate margin on orders created, you will see profit in the spreadsheet and a loss in the bank statement.

This article uses exactly the same formula as the N1 COD profit calculator. Every step is written out below, so you can rebuild it in a spreadsheet in ten minutes.

All figures in this article are hypothetical, chosen as round numbers to show the mechanics. They are not N1 prices, not market averages and do not represent any country.

Why prepaid margin maths fails in COD

With prepayment, the customer pays before dispatch. Every parcel that leaves is already paid for. Margin is price minus product cost, shipping and ads, and that is it.

COD has three leaks that calculation ignores:

  1. Generated but not confirmed. The customer filled in the form but does not answer the confirmation call, changes their mind or entered fake details. No parcel ships, but the ad that brought the order has already been paid for.
  2. Shipped but not paid. The customer refuses at the door, is not home for the delivery attempts, or the address does not exist. Shipping is paid and revenue is zero.
  3. Time between sale and cash. Money arrives only after collection and remittance. That does not change monthly profit, but it changes cash flow.

The formula below handles the first two. The third is covered in COD reconciliation and payout.

The seven inputs

All values are yours. The calculation needs no market benchmarks.

InputSymbolWhat it is
Selling pricePWhat the customer pays at the door, in euros
Product costCpCost of goods for one order
CPAAAd spend divided by generated orders
Shipping per parcelSCost of sending one parcel, delivered or refused
Orders per dayNOrders the store generates per day
Confirmation ratecShare of generated orders confirmed and shipped
Delivery ratedShare of shipped orders delivered and paid

Two definitions matter. CPA here is per generated order, not per delivered order: it is what your ad platform reports. And the delivery rate is per shipped order, not per parcel that reached the address. That rate is your buyout (or acceptance rate). How it differs from the refusal rate, which only counts parcels that reached the door, is explained in COD refusal rate.

The formula, step by step

The calculation projects a 30-day month and rests on three assumptions:

  • CPA is paid on every generated order, confirmed or not;
  • only confirmed orders ship, and each shipped parcel costs one shipping fee, delivered or refused;
  • refused goods return to stock in sellable condition, so product cost only applies to delivered orders.

Then:

generated   = N × 30
confirmed   = generated × c
delivered   = confirmed × d
refused     = confirmed − delivered

revenue     = delivered × P
ad spend    = generated × A
product     = delivered × Cp
shipping    = confirmed × S
profit      = revenue − ad spend − product − shipping

margin                 = profit ÷ revenue
profit per delivered   = profit ÷ delivered
max CPA                = c × (d × (P − Cp) − S)
break-even delivery    = (A ÷ c + S) ÷ (P − Cp)

"Refused" here means everything shipped and not paid: refused at the door, customer absent, wrong address, lost in transit. For cash purposes, they all cost the same shipping fee.

Worked example with round numbers (hypothetical, in EUR)

Price 40 €, product cost 10 €, shipping 6 €, CPA 8 €, 50 orders a day, 80% confirmation and 80% delivery.

StepCalculationResult
Generated orders per month50 × 301,500
Confirmed and shipped1,500 × 0.81,200
Delivered and paid1,200 × 0.8960
Refused or undelivered1,200 − 960240
Revenue960 × 40 €38,400 €
Ad spend1,500 × 8 €12,000 €
Product cost960 × 10 €9,600 €
Shipping1,200 × 6 €7,200 €
Monthly profit38,400 − 12,000 − 9,600 − 7,2009,600 €
Margin9,600 ÷ 38,40025%
Profit per delivered order9,600 ÷ 96010 €
Max CPA0.8 × (0.8 × 30 − 6)14.40 €
Break-even delivery rate(8 ÷ 0.8 + 6) ÷ 3053.3%

Now compare with the naive version. Without the funnel, each sale seems to leave 40 − 10 − 8 − 6 = 16 €. With the funnel, each delivered order leaves 10 €. The gap has a clear source:

  • the 300 orders that never confirmed cost 2,400 € in ads;
  • the 240 that shipped and were not paid cost 1,920 € in ads plus 1,440 € in shipping.

That is 5,760 € a month spent on orders that never became revenue.

Max CPA and break-even delivery rate

Divide monthly profit by generated orders and you get profit per generated order:

profit per generated = c × (d × (P − Cp) − S) − A

Set that to zero and you get the two numbers that tell you how much room the product has.

Max CPA

The highest CPA that still closes the month without a loss, all else equal:

Max CPA = c × (d × (P − Cp) − S)

In the example, 14.40 €. The product pays 8 €, so there is 6.40 € of headroom per generated order, which is exactly profit per generated order (9,600 ÷ 1,500). Max CPA is the number to hand to whoever runs your ads. It depends on your confirmation and delivery rates: with worse delivery, the same product can afford a lower CPA.

Break-even delivery rate

The lowest delivery rate that still closes the month without a loss:

Break-even delivery = (A ÷ c + S) ÷ (P − Cp)

In the example, 53.3%. The operation runs at 80%, 26.7 points above break-even. That looks comfortable, but break-even means a whole month of work for zero profit. If your headroom is only a few points, one week of weaker traffic or slower delivery pushes the product into the red.

If P is less than or equal to Cp, or break-even delivery comes out above 100%, no delivery rate can save the product at that CPA and that shipping cost.

Sensitivity table: delivery rate x CPA

Monthly profit for each combination of delivery rate and CPA, with the other example inputs fixed (price 40 €, product 10 €, shipping 6 €, 50 orders a day, 80% confirmation).

DeliveryCPA 4 €CPA 8 €CPA 12 €CPA 16 €Max CPA
50%4,800 €−1,200 €−7,200 €−13,200 €7.20 €
60%8,400 €2,400 €−3,600 €−9,600 €9.60 €
70%12,000 €6,000 €0 €−6,000 €12.00 €
80%15,600 €9,600 €3,600 €−2,400 €14.40 €
90%19,200 €13,200 €7,200 €1,200 €16.80 €

Three takeaways:

  • Every 10 points of delivery rate are worth 3,600 € a month in this example, or 2.40 € more CPA the product can absorb. Improving delivery is often cheaper than cutting CPA.
  • At 8 € CPA, delivery can drop from 80% to 60% and the month still closes positive. At 12 € CPA, the same drop means −3,600 €.
  • The zero diagonal is the boundary. 70% delivery at 12 € CPA gives exactly zero: that is the max CPA for that row.

Margin, contribution margin and profit per delivered order

These three terms appear in different spreadsheets and muddle the conversation. In this article:

  • Margin is profit ÷ revenue. In the example, 25%.
  • Profit per delivered order is profit ÷ delivered. In the example, 10 €. This is the number to compare with the naive per-sale figure.
  • The profit in the formula is in practice a contribution margin: it is before fixed costs (team, tools, storage), operating fees and income tax. Those have to fit inside it.

A 25% margin can be good or bad. What decides it is the headroom to break-even, not the percentage.

Common mistakes in COD profit calculations

Calculating on orders created

The most expensive mistake. In the example, 1,500 generated orders × 16 € "margin per sale" gives 24,000 € a month. Real profit is 9,600 €. Calculating on orders created overstates the result by 2.5 times.

A variant of the same mistake: using the share of parcels that reached the address as your delivery rate, instead of the share of parcels shipped. It leaves out everything that was never delivered and inflates profit.

Forgetting return shipping

The formula assumes a refused parcel costs one shipping fee, same as a delivered one. If your contract charges returns separately, add the average return cost to shipping:

Adjusted shipping = outbound shipping + (1 − d) × return shipping

With a hypothetical 4 € return fee and 80% delivery: 6 + 0.2 × 4 = 6.80 €. Monthly profit falls from 9,600 € to 8,640 € and max CPA from 14.40 € to 13.76 €. Plug 6.80 into the shipping input and profit and max CPA come out right.

Break-even delivery needs one more step, because adjusted shipping itself depends on the delivery rate. Plugging in 6.80 would give 56.0%, but the correct break-even with returns is (A ÷ c + outbound + return) ÷ (P − Cp + return) = (10 + 6 + 4) ÷ 34 = 58.8%, against 53.3% without returns.

If part of the refused stock comes back damaged, product cost is lost on those parcels too. The formula does not capture this: treat it as a separate stock write-off.

Ignoring exchange rates

Cross-border sellers often have costs in one currency and revenue in another. And not every European market uses the euro: according to the European Central Bank, Poland, Czechia, Hungary and Romania are EU members that do not use the single currency. In Hungary, for example, COD is collected in forint (HUF). The Gulf markets each have their own currency as well.

Rule of thumb: convert everything into one currency, at the rate at which money will actually come in and go out, and include the conversion cost. If the product is paid for in dollars and the euro loses about 5% against the dollar, the hypothetical 10 € product cost becomes roughly 10.50 €, and monthly profit in the example drops by about 480 € with nothing changing in the operation.

Leaving VAT inside the price

The price the customer pays at the door usually includes VAT. If you owe the VAT on that sale, that part is not yours. According to the EU's official Your Europe portal, each EU country sets its own standard rate, which cannot be less than 15%.

At a hypothetical 20% rate, the net price of 40 € is 40 ÷ 1.2 = 33.33 €. Rerun the maths: monthly profit falls from 9,600 € to 3,200 €, max CPA drops to 10.13 € and break-even delivery rises to 68.6%. A comfortable product becomes a fragile one.

If you enter the gross price, the profit you get is before VAT. To see profit after VAT, enter the net price. Who owes VAT, where and under which scheme depends on how your sale is structured: see the EU's official VAT One Stop Shop portal and confirm with your accountant.

Averaging all countries together

Delivery rates change by country and by product. A blended average hides the market that is losing money. Calculate per product and per country, and compare markets with the COD Europe map 2026 and COD by country in Europe.

What the formula does not cover

  • Returns after payment. A customer who receives, pays and then changes their mind uses the 14-day right of withdrawal under Directive 2011/83/EU. That order counts as delivered in the formula and later leaves as a refund. If the volume is material, handle it separately.
  • Cost of the cash cycle. If you finance stock and ads while waiting for remittance, that cost is outside the formula.
  • Fixed costs and operating fees. Profit is before them.

How to build it in a spreadsheet

  1. Create seven input cells: price, product cost, shipping (adjusted for returns if needed), CPA, orders per day, confirmation rate, delivery rate.
  2. Below them, one row per line of the formula above: generated, confirmed, delivered, revenue, ad spend, product, shipping, profit.
  3. Add three output cells: margin, max CPA and break-even delivery.
  4. Copy the sensitivity table layout: delivery rates down the side, CPAs across the top, profit in each cell.
  5. Fill it with your last few weeks of data, per country. Read break-even delivery and max CPA first, then profit.

With no history yet, run it with a conservative delivery rate and see whether the product still closes. For the bigger picture of how COD works end to end, start with what cash on delivery is.

Frequently asked questions

Which delivery rate should I use?

Delivered and paid orders divided by shipped orders, that is, your buyout. Do not use the rate based on parcels that reached the address: it leaves out everything that was never delivered and makes profit look higher than it is.

What is max CPA in cash on delivery?

The highest ad cost per generated order that still leaves the month without a loss: confirmation × (delivery × (price − product cost) − shipping). It moves with your delivery rate, so recalculate whenever that changes.

Why is product cost left out of refused orders?

Because when a refused parcel comes back in sellable condition, the product returns to stock and can be sold again. If some of it comes back damaged, real margin is lower than calculated.

How do I include return shipping?

If returns are charged separately, use outbound shipping plus (1 − delivery rate) × return shipping as your shipping per parcel. Profit and max CPA then reflect the cost of the parcels that come back. For break-even delivery, use (CPA ÷ confirmation + outbound + return) ÷ (price − product cost + return).

What is a good COD profit margin?

There is no universal figure. Look at the gap between your delivery rate and break-even, and between your CPA and max CPA. The smaller the headroom, the more one bad month of traffic hurts.

Turn the maths into an operation

The formula tells you whether a product closes. Getting delivery close to what the spreadsheet assumes is operations work: confirmation, short delivery times from our warehouses in Europe, collection and payout on D+2. N1 runs COD in 16 markets, 12 in Europe and 4 in the Gulf. See our cash on delivery solution or talk to a specialist and request a proposal.

Other languages

More articles