Own store, Amazon or Etsy: how to compare sales channels properly
You sell the same product in more than one place and you are not sure which one actually pays you.
You sell the same product in more than one place and you are not sure which one actually pays you.
Most sellers compare channels by looking at what comes in. It is the most visible number and the most misleading one: every channel charges at a different moment, keeps a different slice and pushes different costs onto you. Two channels billing the same amount can leave you several euros apart per order, and the only way to see it is to put both into the same units before comparing them.
This guide is about that step: normalising. It does not reproduce anyone's fee schedule — fees change, and they live on each channel's own page — and it will not tell you that one channel beats another. It gives you the arithmetic to decide that yourself, with your numbers.
Revenue measures how much money passes through the business, not how much stays in it. In a channel comparison there are at least three reasons that number lies to you.
The first is tax. In one channel the price you see includes VAT and in another it may not. And the VAT you charge is not yours.
Two things get cited as if they were one. The tax statute — article 88.Uno of Spain's Ley 37/1992 — says you must pass the full amount of the tax on to the customer, who is obliged to bear it. That governs the mechanics: who charges what to whom. What says that amount is not your revenue is the accounting rule: recognition and measurement rule 12 of Spain's Plan General de Contabilidad, which establishes that VAT charged does not form part of the revenue of taxed transactions. Two different sources for two different statements — and both of them are Spanish, so check your own market's rules before assuming they carry over.
There is a third quantity that is neither: the taxable base, which is what the tax is levied on, and cash billed, which is what lands in your account with the VAT inside it. Revenue, taxable base and cash collected are three different numbers, and only the first belongs in this comparison.
Compare a tax-inclusive price against a tax-exclusive one and the gap you are looking at is the tax rate, not the channel.
The second is that every channel charges differently. A percentage of the price, a flat fee per transaction, a payment-processing charge, a monthly plan, a pick-and-pack cost. Adding those up by eye does not work, because they do not scale together: the percentage grows with the basket and the flat fee does not.
The third is that some costs only exist in some channels. Shipping you absorb, advertising you need in order to be found, returns you handle. If the channel brings you traffic, your acquisition cost falls; if you have to bring it yourself, it rises. None of that shows up in a fee schedule.
Normalising means filling the same table for every channel, in the same order, on the same basis. Twelve boxes:
| Box | What goes in | The usual trap |
|---|---|---|
| Price actually charged | What the customer pays, before channel discounts | Using the shelf price rather than what settles |
| Tax | The rate that applies in that market | Comparing one channel with tax against another without it |
| Product cost | Landed cost in your warehouse | Leaving inbound freight out |
| Packaging | Box, filler, label | Counting it only where you buy it separately |
| Percentage fee | The slice the channel keeps | Applying it to the net price when it is charged on the gross |
| Flat fee | The per-transaction charge | Skipping it because "it is small" |
| Fulfillment | Picking, packing, dispatch | Counting it only in the channel that outsources it |
| Shipping absorbed | The part of delivery you pay | Assuming free shipping is free |
| Advertising | What you spend to win that order | Splitting total spend without asking where the order came from |
| Returns | A provision per order, not the cost of one return | Only counting it when it happens |
| Other variable costs | Prorated subscriptions, special packaging | Filing them under fixed costs and losing sight of them |
| Contribution margin | The output, not an input | Mistaking it for profit |
The first eleven are data. The last one is what comes out.
1. Strip the tax out of every price. If a price includes tax at t per cent, the amount excluding tax is price / (1 + t/100). From here on you work tax-exclusive, in every channel.
2. Turn every fee into euros per order. A percentage applies to whatever base that channel uses — and it is worth checking whether that base is the gross or the net amount. A monthly plan is divided by the orders you got that month. A listing fee is divided by the orders that listing produced.
3. Share out what is common. Product cost and packaging are the same wherever you sell. If they come out different per channel, either the product really is different or something is wrong in your figures.
4. Attribute advertising to the channel that consumes it. This is the step most often fudged. If a channel brings you visits without spend, its acquisition cost is low, and that is a genuine advantage of the channel. Splitting ad spend evenly erases exactly the information you were looking for.
5. Work out contribution per order. Tax-exclusive price minus everything above.
6. Look at the percentage too. Contribution in euros tells you what an order leaves; contribution as a share of price tells you how much room the channel has if the price has to come down.
price ex-tax = price charged / (1 + rate/100)
fees = price × percentage + flat fee + payment processing
contribution per order =
price ex-tax
− product cost
− packaging
− fees
− fulfillment
− shipping absorbed
− returns provision
− other variable costs
− advertising attributed
contribution as a share = contribution per order / price ex-taxThat is all of it. The difficulty is in filling the boxes honestly, not in the arithmetic.
A hypothetical shop sells the same item in three places. It costs €12.00 landed in its warehouse plus €1.00 of packaging, the same in all three. The applicable tax rate is 21%.
What it sees in each channel, tax included:
The percentages and amounts in this example are made up so that the method is visible. They are not any real platform's fees: those have to be read on each channel's own page on the day you do the sums.
Normalised, it comes out like this:
| Channel | Price ex-tax | Platform fees | Fulfillment | Shipping absorbed | CAC | Contribution per order | Of price |
|---|---|---|---|---|---|---|---|
| Tienda propia | €40.00 | €0.81 | €3.00 | €3.50 | €8.00 | €10.49 | 26.2% |
| Marketplace A | €44.00 | €6.60 | €4.20 | €0.00 | €1.50 | €17.00 | 38.6% |
| Marketplace B | €42.00 | €4.71 | €0.00 | €3.50 | €3.00 | €16.34 | 38.9% |
The channel with the highest revenue per order is Marketplace A, at €44.00 ex-tax, and it is also the one leaving the most contribution: €17.00. But the lead over second place is €0.66 per order — that is €66.00 per hundred orders. It is a lead, not a chasm, and one box changing is enough to reverse it.
Look at the own store. It has the lowest price of the three and it also pays the lowest fees: €0.81 against €6.60 in marketplace A. It still leaves the least, €10.49, because it carries €8.00 of advertising and €3.50 of shipping that the other channel does not have. Fees were never the problem.
Here is the part almost nobody checks. Percentage fees grow with the price and flat fees do not. That means the ranking between channels depends on the basket size, and a comparison built on your average order does not hold for your large one.
Same product, basket 50% larger:
| Channel | Price ex-tax | Contribution per order | Of price |
|---|---|---|---|
| Tienda propia | €60.00 | €30.21 | 50.4% |
| Marketplace A | €66.00 | €35.70 | 54.1% |
| Marketplace B | €63.00 | €35.98 | 57.1% |
It has flipped. Marketplace B now wins with €35.98 against €35.70 for the previous leader. And the highest price is still marketplace A's, €66.00, which is no longer the one leaving the most contribution. The channel that bills the most is not necessarily the one that pays you the most, and this table is the demonstration in numbers.
The reason is simple: marketplace A charges a high percentage, so every extra euro of price pays an extra slice of fee. Marketplace B charges less percentage and more flat, and flat does not grow. If your catalog spans very different price points, run this per price band rather than once.
It helps to keep two mental columns.
The channel's costs: percentage fee, flat fee, payment processing, the channel's own logistics. You do not control them. You read them, convert them to euros per order and move on.
Your costs: product, packaging, shipping you absorb, advertising, returns. These you do control, and they explain most of the real differences. In the example above the own store loses on its own costs, not on the channel's.
The distinction matters because the levers differ. Against a channel cost you can only change channel or raise the price. Against your own cost you can negotiate, redesign the packaging, change the shipping policy or stop buying traffic that does not convert.
Rename the channels as letters and run the numbers again. The result has to be identical. If it changes, a preference has crept in somewhere that is not in the figures.
In the example above, with the three channels renamed X, Y and Z, the contributions come out exactly the same: yes, they match. It sounds trivial and it is not — it is the fastest way to catch yourself defending a channel instead of measuring it.
Comparing on revenue. Already said, but it is the dominant mistake.
Mixing tax-inclusive and tax-exclusive prices. If the gap between two channels looks suspiciously like the tax rate, this is why.
Applying the percentage fee to the wrong base. Many platforms charge on the gross amount, not the net. Small per order, large over a year.
Splitting advertising evenly. It erases the one real advantage marketplaces have: they bring the visit.
Ignoring returns until they happen. A return is not an accident, it is a rate. Provision for it per order.
Comparing once. Fees change, your average basket changes and your product mix changes. The comparison expires.
Generalising from one product. A channel can be the best one for your expensive item and the worst for the cheap one.
It is a per-order calculation, and it has five limitations worth keeping in view, because some things do not fit in one.
Volume. A channel with lower unit contribution and three times the orders can contribute more in total. Always multiply by each channel's real order count before deciding.
The cost of being there. Keeping a channel alive costs time, photography, listings, customer service and sometimes a subscription. Prorated over few orders, the channel gets much worse.
Concentration risk. Depending on a single channel is a risk even when it is the most profitable one. A suspended account or a fee change leaves you without a business.
The customer. In your own store the customer is yours and you can sell again. In a marketplace, often not. That does not show in first-order contribution but it changes what a customer is worth.
Settlement terms. Two channels with identical contribution and different payout schedules are not the same thing for your cash.
Sources
Platform fee schedules are deliberately not cited here. They change without notice and differ by marketplace. The only valid source is the channel's own fee page on the day you do the sums.
Methodology
Every figure in the example is produced by Profyza's channel comparison calculator, run with the inputs declared above. The tax-stripping step uses the same function as the published calculators. There is no hand-typed number in this text: each one is generated when the page is built, and separately checked against an independent calculation done by hand.
The inputs describe a hypothetical shop. They are not any real company's data and they are not industry benchmarks.
Currency and market: euros, European Union. The statute cited is Spanish.
Last reviewed: 9 September 2026.
Author: Profyza editorial team.
How the figures were produced. Each one is generated by the Profyza calculation engine for that step, using the inputs declared above. Every figure is also cross-checked against an independent arithmetic check — also automated — that recomputes it without calling the engine, which is what catches the text and the calculation drifting apart. It is not a human review, and this piece has not been reviewed by an economist, an accountant or a licensed adviser. If your situation needs that, get it.
Methodology: how all of this is calculated is set out on the methodology page.
Automated mathematical verification: Profyza calculation engines. This is not a human or professional review.
Change the price box and recalculate. Lowering the price does not cut percentage fees in the same proportion as it cuts contribution, so the effect is usually worse than it looks.
Yes, divided by the orders you made in that channel that month. Bear in mind that number gets much worse in a quiet month.
Either works, but pick one and apply it to every channel. Leaving it out means you are comparing contribution before acquisition — a legitimate comparison, but a different one.
It does not belong in this calculation. You work tax-exclusive here precisely so you do not have to carry it around.
When channel fees change, when your average basket moves noticeably, or when your shipping policy changes. At minimum, once a year.
Yes, and you should: with two it is easy to talk yourself into what you already believed.
Find out how much you can pay for a sale or a click without losing money.
Work out how much returns cut from your monthly profit.
Strip out the fees, the tax, the materials, the shipping and the ads.
Work out your profit per unit after fees, fulfillment and advertising.
What each order really leaves you, and how much of that you can spend winning the customer.
What each imported unit really costs once it is sitting in your warehouse, ready to sell.
The order value above which you can give shipping away without losing money.
How much you can afford to pay for a customer without giving up your profit.
How many months it takes to recover what you paid to acquire a customer.
The stock level at which you have to place the order to avoid running out.
How many buffer units you need so a deviation does not leave you out of stock.
What a full warehouse costs you per year, and what share of your inventory that is.
What running out of stock really cost you, in lost contribution and extra spending.
Whether the bundle you are building leaves more money than selling the same items separately.
How far you can cut the price without falling below the margin you want to keep.
How many more units you have to sell so a discount does not leave you worse off.
The price below which you lose money, and the one your target margin needs.
How many days pass between paying your supplier and collecting from your customer.
Whether the supplier's minimum order pays off once you have paid to hold it.
Which sales channel leaves most per order for the same product and its real costs.