---
title: "Gross profit calculator: formula, examples and ad limits"
description: "Gross profit calculator method: net revenue minus COGS, worked examples, margin vs markup, and how each product's margin sets its break-even ROAS."
canonical: "https://www.productmetrics.io/blog/calculator-gross-profit"
pageType: article
language: en
publisher: "Product Metrics"
author: "Berend Vrakking"
datePublished: 2026-11-08
dateModified: 2026-11-08
image: "https://www.productmetrics.io/og/blog/calculator-gross-profit.png"
---

> Content index: https://www.productmetrics.io/llms.txt

# Gross profit calculator: formula, examples and ad limits

## Key takeaways

- A €50.00 order excl. VAT with €30.00 landed cost leaves €20.00 of gross profit: a 40% gross margin and a 66.7% markup.
- Reading markup as margin always understates break-even ROAS by exactly 1: a 50% markup is a 33.3% margin, which breaks even at 3, not 2.
- Ads are paid from contribution, not gross profit: after shipping and fees the same order keeps €12.50 and needs a ROAS of 4 to break even.

Gross profit is net revenue minus the [cost of goods sold (COGS)](https://www.productmetrics.io/glossary/cost-of-goods-sold "Cost of goods sold (COGS) is what it cost you to buy or make the products you sold in a period."); [gross margin](https://www.productmetrics.io/glossary/gross-margin "Gross margin is the share of revenue left after subtracting the cost of goods sold, shown as a percentage.") is that profit as a share of revenue. It is the first number a calculator gives, and the wrong one for an ad target.

I worked one illustrative €50.00 order and five markups through the formulas. The order's 40% gross margin shrinks to 25% before ads, so it breaks even at a [ROAS](https://www.productmetrics.io/glossary/roas "Return on ad spend (ROAS) is the revenue your ads generate for every euro you spend on them.") of 4, not 2.5.

## How do you calculate gross profit?

To calculate gross profit, subtract COGS from net revenue; divide the result by net revenue for gross margin. Our [gross margin glossary entry](https://www.productmetrics.io/glossary/gross-margin) defines both with a worked example, and a calculator needs only those two inputs:

| Output | Formula |
| :--- | :--- |
| Gross profit | Net revenue − COGS |
| Gross margin | Gross profit ÷ net revenue × 100 |
| Markup | Gross profit ÷ COGS × 100 |

Net revenue is the price the customer actually paid, after discounts and excluding VAT. Feed in the list price and the arithmetic describes a sale that never happened. The [margin calculator](https://www.productmetrics.io/margin-calculator) works out all three from your price and cost.

### Worked examples for a store and single products

The formulas work for a year of sales or one order (illustrative figures):

| Scenario | Net revenue | COGS | Gross profit | Gross margin | Markup |
| :--- | ---: | ---: | ---: | ---: | ---: |
| Store, full year | €1,000,000.00 | €600,000.00 | €400,000.00 | 40% | 66.7% |
| Single product sale | €100.00 | €40.00 | €60.00 | 60% | 150% |
| Same product at 20% off | €80.00 | €40.00 | €40.00 | 50% | 100% |

Taking €20.00 off the price removes €20.00 of gross profit: a 20% discount cuts this product's gross profit by a third.

### Gross margin vs markup: which one sets the ad limit?

Gross margin sets the ad limit, never markup. Markup divides the same profit by cost instead of revenue, so it is always the larger percentage.

Read markup as margin and a product looks able to afford more advertising than it can:

| Markup | Gross margin | 1 ÷ markup (wrong) | 1 ÷ margin |
| ---: | ---: | ---: | ---: |
| 25% | 20.0% | 4.00 | 5.00 |
| 50% | 33.3% | 2.00 | 3.00 |
| 100% | 50.0% | 1.00 | 2.00 |
| 150% | 60.0% | 0.67 | 1.67 |

The error is exactly 1 at every markup, because 1 ÷ margin equals 1 + 1 ÷ markup. A product marked up 50% looks safe at a ROAS of 2, when it needs 3 just to cover its cost.

To convert, margin is markup ÷ (1 + markup). The [markup vs margin](https://www.productmetrics.io/glossary/markup-vs-margin) entry explains the difference in more detail.

### Gross profit or gross margin: which one ranks products?

Gross profit in euros ranks products by what they earn; gross margin only makes differently priced products comparable. A low-volume product with a strong margin can earn less in total than a best seller with a thin one.

**Figure: Monthly gross profit of a high-margin and a low-margin product.** The 30% margin product earns twice the gross profit of the 60% margin product, because it sells 20 times as often.

![Bar chart of illustrative monthly gross profit: product A at a 60% margin and 10 sales earns €1,200, product B at a 30% margin and 200 sales earns €2,400.](https://www.productmetrics.io/images/blog/calculator-gross-profit/gross-profit-vs-margin.webp)

| Product | Gross profit per month |
| --- | --- |
| Product A: 60% margin, 10 sold | €1,200 |
| Product B: 30% margin, 200 sold | €2,400 |

_Source: Illustrative data: product A sells 10 a month at €200.00 with a 60% margin, product B 200 a month at €40.00 with a 30% margin, revenue excl. VAT_

Sorted by margin, product A comes first and hides that product B pays twice as much towards everything else. Keep both outputs visible.

## Which costs belong in COGS?

COGS is the direct cost of the products you sold: the purchase or manufacturing cost, plus what your accounting policy adds to inventory, such as inbound freight and import duties. Marketing, administration, interest and taxes stay out: they are operating costs, not product costs.

For a manufactured product, COGS also holds direct materials and production labour, not only the supplier invoice.

Over a reporting period, work COGS out from inventory:

**COGS = beginning inventory + net purchases and directly attributable costs − ending inventory**

That isn't today's supplier price times units sold: stock bought at different prices sells at the cost your valuation method assigns. The [COGS calculator](https://www.productmetrics.io/cogs-calculator) runs this period formula.

This placement keeps variable order costs out of COGS, each visible as its own line. It is a management model for ad decisions; statutory accounts may differ.

| Cost | In COGS? | Where it goes in this model |
| :--- | :--- | :--- |
| Purchase or manufacturing cost | Yes | COGS |
| Inbound freight and import duties | Yes, when capitalised | COGS |
| Packaging | Sometimes | COGS or fulfilment, chosen once and kept |
| Outbound shipping | No | Contribution layer |
| Payment processing fees | No | Contribution layer |
| Marketplace commissions | No | Contribution layer |
| Returns handling and reverse shipping | No | Contribution layer |
| Advertising | No | Below contribution |

Write the policy next to the calculator, with each input's source system. Then merchandising and marketing share one definition, and moving a cost between categories can't pass for an improvement.

## Why isn't gross profit your ad budget?

Gross profit isn't your ad budget, because shipping, payment fees and returns are paid from it before the ad is. What is left is contribution before ads, the pool an ad can spend.

**Figure: What is left of a €50.00 order at each profit layer.** A 40% gross margin becomes 25% before ads and 9% after them: only €12.50 of the €20.00 gross profit can pay for the ad.

![Bar chart of an illustrative €50.00 order excl. VAT: €20.00 gross profit, €12.50 contribution before ads after shipping and fees, and €4.50 left after €8.00 of ads.](https://www.productmetrics.io/images/blog/calculator-gross-profit/order-profit-layers.webp)

| Profit layer | Left of the order |
| --- | --- |
| Net revenue | €50.00 |
| Gross profit | €20.00 |
| Contribution before ads | €12.50 |
| Contribution after ads | €4.50 |

_Source: Illustrative data: €50.00 revenue excl. VAT, €30.00 landed cost, €6.00 shipping, €1.50 payment fee, €8.00 ad cost_

In the example, €6.00 of outbound shipping and a €1.50 payment fee turn €20.00 of gross profit into €12.50, a 25% [contribution margin](https://www.productmetrics.io/glossary/contribution-margin "Contribution margin is the revenue from a sale minus its variable costs, such as product cost, shipping, payment fees and returns."). An €8.00 ad leaves €4.50, or 9% of revenue, before rent, salaries and tax.

Each layer answers a different question:

| Layer | Question it answers | Use it for |
| :--- | :--- | :--- |
| Gross profit | Does the price cover the product? | Pricing, supplier terms, inventory cost |
| Contribution before ads | What may acquiring this order cost? | [Break-even ROAS](https://www.productmetrics.io/glossary/break-even-roas "Break-even ROAS is the revenue-to-ad-spend ratio at which contribution profit exactly covers advertising costs.") and targets |
| Contribution after ads | What did buying this order leave? | Product decisions, before overhead and tax |

The [contribution margin calculator](https://www.productmetrics.io/contribution-margin-calculator) works out the middle layer per product. Leave VAT out of revenue at every layer: it belongs to the tax authority.

Watch for double deductions. If landed cost includes inbound freight, don't subtract the freight invoice again; if a marketplace pays out net of commission, rebuild gross revenue first.

## How do returns change the margin?

Returns lower margin twice: the refund removes the revenue, and reverse shipping, inspection and repackaging add costs the order never had. NRF and Happy Returns estimate that 19.3% of online sales were returned in 2025.

The €50.00 order above assumed nobody sends it back. Suppose each return refunds €50.00 and the product goes back on sale, but the €7.50 of shipping and fees is lost and the return adds €6.00 of reverse shipping and €2.00 of handling.

**Figure: Contribution before ads per €50.00 order at four return rates.** At the 19.3% average online return rate, the order keeps €7.10 instead of €12.50 and its break-even ROAS rises from 4 to 7.05.

![Bar chart of illustrative contribution before ads per €50.00 order: €12.50 with no returns, €9.70 at 10%, €7.10 at the 19.3% average and €4.10 at 30% returns.](https://www.productmetrics.io/images/blog/calculator-gross-profit/returns-contribution.webp)

| Return rate | Contribution before ads per order |
| --- | --- |
| 0% | €12.50 |
| 10% | €9.70 |
| 19.3% | €7.10 |
| 30% | €4.10 |

Reference line: Break-even (€0.00).

_Source: Illustrative data: €12.50 contribution per kept order; each return refunds €50.00, the product is resold, and €7.50 of shipping and fees plus €8.00 of reverse shipping and handling are lost. 19.3% from NRF and Happy Returns, 2025_

At 30% returns the order keeps €4.10, and break-even ROAS on reported revenue reaches 12.20. A ROAS that looks excellent in the ad account can still lose money.

That 19.3% is an average across online retail, not your rate. Replace it with returned units ÷ eligible sold units per product or category; [how product returns affect profitability](https://www.productmetrics.io/blog/ecommerce-return-rate) covers the formula and its ROAS impact.

### Model refunds and recovery separately

Start from sales after discounts, then subtract recognised refunds. For a forecast, add a reserve for returns still to come, without subtracting booked refunds a second time.

Recovered stock isn't recovered value: a returned product may resell at full price, need a markdown or be written off. An exchange keeps the revenue but adds a shipment.

### Turn uncertain inputs into a margin range

Build three scenarios per product from matched assumptions instead of one store-wide return rate:

| Scenario | Assumptions | Use the contribution as |
| :--- | :--- | :--- |
| Low | More returns, weaker recovery, higher handling cost | Conservative floor |
| Base | Expected returns and observed recovery | Working estimate |
| High | Fewer returns and stronger recovery | Optimistic ceiling |

Set ad limits from the conservative floor while the return window is open. A high-margin product with frequent, unsellable returns can leave less contribution than a lower-margin product customers keep.

## How do you turn a product's margin into an ad limit?

Break-even ROAS is 1 divided by the contribution margin before ads: at 25%, a product needs a ROAS of 4 before its ads stop losing money. Leave advertising out of that margin, or the calculation goes circular.

The [break-even ROAS calculator](https://www.productmetrics.io/break-even-roas-calculator) gives this floor for your own numbers.

**From gross profit to an ad limit per product**

1. **Calculate gross profit per product.** Net revenue after discounts, excl. VAT, minus landed cost. In the example: €50.00 − €30.00 = €20.00, a 40% gross margin.
2. **Subtract variable order costs and returns.** Shipping, payment and marketplace fees, and a returns reserve, each once. €20.00 − €6.00 − €1.50 = €12.50, a 25% contribution margin before ads.
3. **Divide 1 by the contribution margin.** 1 ÷ 0.25 = a break-even ROAS of 4. Below it, every sale loses money before overhead.
4. **Set the target above break-even.** Keep a share of revenue for overhead and profit: 1 ÷ (0.25 − 0.10) = a ROAS of 6.67, a target ROAS of 667%.

In profit terms the same floor is a POAS of 1.0, since POAS = ROAS × contribution margin ([POAS vs ROAS](https://www.productmetrics.io/blog/poas-vs-roas)). The table adds a target that keeps 10% of revenue after ads, calculated as 1 ÷ (contribution margin − 0.10):

| Contribution margin before ads | Break-even ROAS | ROAS to keep 10% of revenue | As target ROAS |
| ---: | ---: | ---: | ---: |
| 25% | 4.00 | 6.67 | 667% |
| 30% | 3.33 | 5.00 | 500% |
| 44% | 2.27 | 2.94 | 294% |
| 50% | 2.00 | 2.50 | 250% |

If the share you want to keep equals the contribution margin or exceeds it, there is no ad allowance left. [Setting a target ROAS from your margin](https://www.productmetrics.io/blog/target-roas-from-margin) walks through choosing that share.

### Turn the ROAS threshold into a cost per click

A ROAS threshold isn't a maximum cost per click. The allowable acquisition cost per order is contribution before ads minus the contribution you want to keep: €12.50 − €5.00 = €7.50 in the example.

Multiply that allowance by the click-to-order conversion rate to get the click ceiling.

**Figure: Maximum cost per click for €7.50 of allowable acquisition cost.** The same product can afford €0.08 a click at a 1% conversion rate and €0.38 at 5%: margin sets the allowance, conversion rate sets the click price.

![Bar chart of the maximum cost per click for €7.50 of allowable acquisition cost: €0.08 at a 1% conversion rate, €0.15 at 2% and €0.38 at 5%, illustrative data.](https://www.productmetrics.io/images/blog/calculator-gross-profit/cpc-ceiling-by-conversion-rate.webp)

| Click-to-order conversion rate | Maximum cost per click |
| --- | --- |
| 1% | €0.08 |
| 2% | €0.15 |
| 3% | €0.23 |
| 4% | €0.30 |
| 5% | €0.38 |

_Source: Calculated: €7.50 allowable acquisition cost per order × click-to-order conversion rate; illustrative data_

At a 2% conversion rate, the €50.00 order can afford €0.15 a click. If the €7.50 already allows for refunds, don't deduct returns again through the conversion rate.

### Use the threshold per product, not per account

A [break-even ROAS for each product](https://www.productmetrics.io/blog/break-even-roas-per-product) is a decision line, not something an automated bid strategy enforces per product. Use it in this order:

1. Calculate contribution per product, with the conservative return scenario where uncertainty is material.
2. Group products into margin bands, so each campaign or portfolio target covers similar economics.
3. Compare actual ROAS with each band's target, with revenue definitions, attribution windows and cost periods aligned.
4. Lower the priority of products below their required ROAS. Give more priority to products above it when stock and demand allow.

Don't run step 4 backwards: a product below its line doesn't earn more budget because its reported revenue is growing.

By hand, this is one spreadsheet row per product, refreshed whenever a price, cost or return rate moves. Product Metrics does it for every product: connect your margins and each product is segmented on POAS instead of ROAS.

The segments go to Google Merchant Center as labels, so campaigns give more priority to the products that clear their line. [Product Segmentation](https://www.productmetrics.io/product-segmentation) shows how.

> **Grow revenue with the products that perform best.** Every product segmented on profit, so you know which ones get more priority. [Analyse your products for free](https://app.productmetrics.io/) Log in with Google, no credit card.

## What should you check before you change a target?

Before a threshold changes a campaign, check that price, cost and conversion data describe the same orders. Start with the products with the most ad spend:

| Check | Confirm |
| :--- | :--- |
| Revenue basis | Price paid, excl. VAT and after discounts, defined as in your ad reports |
| Landed cost | The cost assigned to the units sold, including capitalised freight and duties |
| Order deductions | Shipping, payment, marketplace and fulfilment costs, each counted once |
| Returns reserve | The rate, how recovered stock is valued, and the order cohort behind it |
| Status | Ready to scale, needs investigation, or not for paid acquisition today |

### Check the measurement before judging the product

A weak-looking product may be missing conversions; a strong-looking one may report revenue incl. VAT. Check both the revenue and the spend inputs before you move budget.

Look at [product journeys](https://www.productmetrics.io/product-journeys) as well as direct sales. A shopper can click one product and buy another, so the clicked product's own revenue undercounts what it brings in.

Don't scale on orders whose return window is still open: use the reserve until the cohort has produced its normal refunds.

### Make the review repeatable

Recheck the model monthly, and when supplier prices, promotions, carrier rates or the returns policy change. Save the input date, so anyone can see why a target moved.

Match the fix to the cause. A shipping-heavy product may need a bundle or a free-shipping threshold; a frequently returned one, better size information. Lowering its priority protects the budget but fixes neither.

## Final thoughts

A gross profit calculator tells you whether the price covers the product. It can't tell you what an ad may cost, because shipping, fees and returns take their share first.

In the €50.00 example, 40% gross became 25% to spend, and break-even ROAS moved from 2.5 to 4. This week, compare the ROAS of your ten highest-spending products with 1 ÷ each one's contribution margin: the ones below their line are where budget leaks first.

For a second take on the formulas, [Xero's gross profit guide](https://www.xero.com/us/glossary/gross-profit/) defines gross profit and gross margin for small businesses, and [Investopedia's gross profit explanation](https://www.investopedia.com/terms/g/grossprofit.asp) separates direct production costs from marketing, administration, interest and taxes.

If you make your own products, Amazon's seller guide to [calculating profit margins](https://sell.amazon.com/blog/calculate-profit-margins) counts manufacturing, raw materials and direct labour as COGS, and the [Inkle guide to COGS](https://www.inkle.ai/blog/cost-of-goods-sold-cogs-small-business) works through the period calculation from inventory.

The 19.3% return rate is cited in [LevelCFO's ecommerce benchmarks](https://levelcfo.com/benchmarks/ecommerce/). If returns are where your margin leaks, [explore eCommerce returns management workflows](https://api2cart.com/business/returns-management-software-key-workflows/) to see how inspection and restocking outcomes can reach the margin model.

If a product's ROAS looks off before its margin does, Trackingplan's explanation of [how to calculate ROAS accurately](https://www.trackingplan.com/blog/return-on-advertising-spend) covers checking revenue and spend inputs. If its gross margin points at its price rather than its ads, the guide to [improve business profitability with Nexist](https://nexist.com.au/blog/how-to-calculate-gross-profit-margin) connects margin analysis with pricing.

## Frequently asked questions

### Is gross profit the same as net profit?

No. Gross profit subtracts only the cost of goods sold from net revenue. Net profit also subtracts shipping, fees, returns, advertising, salaries, software, rent, interest and tax, so it is always the smaller number for a profitable store.

### Should shipping charged to the customer count as revenue?

Count it as revenue only if you also count the carrier's charge as an order cost, and decide it once for every product. Mixing the two, for example adding shipping income but leaving the label cost out, inflates contribution and lowers break-even ROAS on paper only.

### What is a good gross margin for an online store?

US online retailers reported a 39.6% gross margin for 2022 (US Census Bureau). A product's own target depends on what its order costs and returns take after that, which is why the ad limit comes from contribution margin, not gross margin.

## Keep reading.

- [Ecommerce profit margins: what is good and how to calculate](https://www.productmetrics.io/blog/ecommerce-profit-margins)
- [Operationalizing POAS: Best Practices, Governance, and Analysis](https://www.productmetrics.io/blog/operationalizing-poas)
- [POAS In The Real World Passing Profit, Composing Conversion Value, And Bidding With Confidence](https://www.productmetrics.io/blog/poas-conversion-value-bidding)

---

Written by Berend Vrakking, founder of Product Metrics. Last updated 2026-11-08.

1M+ products analysed · Nominated at the Dutch Search Awards for Best Measurement Campaign (2023) and Best Use of Data (2024)

HTML version: https://www.productmetrics.io/blog/calculator-gross-profit
