Skip to content
Build logRevenue optimization

How we compute an Amazon channel’s contribution from its own payment reports

Budget, stock and range decisions need a contribution figure the team can trace. We rebuild it from payment reports, invoices and ERP records the business already holds.

Contents
  1. What we built
  2. The commercial question
  3. Why we started from documents
  4. How we worked
  5. The baseline
  6. A number is a hypothesis until a document confirms it
  7. The economics
  8. One example
  9. The fee has two VAT effects
  10. Reconciled is not complete
  11. Guardrails
  12. What it makes possible
  13. Principles for your business

What we built

Many margin models get Amazon’s referral fee wrong on the German marketplace. They apply the rate to net revenue. Amazon’s fee page applies it to the total price, including any shipping charged. On the German marketplace that price includes VAT. An ad break-even built that way starts from a fee that is too low. One built on the full amount withheld errs the other way, since part of it comes back with the VAT return.

The fee was one of several operating numbers we recomputed from the business’s own documents. A growing channel decides every week where ad budget goes, which route ships, what gets reordered and what gets dropped. Each of those decisions needs a contribution figure, and a rate card or a rebuilt spreadsheet is a weak base for it.

For a distributor’s Amazon channel we built a model that computes contribution per order and per route from payment reports, invoices and ERP records. Every figure traces back to a source line, and every margin shows how much of the data it covers. We estimate a manual cycle of the same analysis at 54 to 68 hours. The finished model rebuilds in about 15 seconds. Contribution per product follows once every purchase price is joined.

Contribution per order and per route is computed from the channel’s own payment reports and invoices. Per product follows once every purchase price is joined.

  • Time to a contribution view, recurring cycle
    Manual effort estimated task by task
    Rebuilt in seconds instead of assembled by hand
    Before
    54 to 68 hours of manual work per cycle our estimate
    After
    About 15 seconds per rebuild measured runtime
  • Referral fee in the margin model
    Charged on the buyer’s total price including VAT, German marketplace
    Fee basis read as Amazon publishes it
    Before
    Rate card applied to net revenue
    After
    Fee as withheld in the payment reports
  • Contribution view
    Per product once every purchase price is joined
    Ad and route decisions can rest on contribution
    Before
    Revenue and estimates
    After
    Contribution per order and per route from transaction reports
  • In-house shipping cost
    Matched by postcode and date. Single matches can be ambiguous
    Routes comparable per unit
    Before
    Not in the marketplace data
    After
    Carrier invoices matched to orders
  • Purchase cost
    Placeholders labelled as such
    Coverage shown beside every margin
    Before
    Assumed present
    After
    Measured, gaps made visible
  • Report format changes
    Checked on every build
    No silent misreads
    Before
    Fixed parsing
    After
    Header row found automatically
Time to a contribution view per recurring cycle: manual work versus model rebuild Recurring cycle only, building the model is not included. Left: manual analysis cycle estimated at 54 to 68 hours, broken into tasks: import and validation 2 to 3 hours, monthly formulas 30 hours or more, VAT reconciliation 4 to 6, fulfillment and shipping split 8 to 10, margin per product where purchase prices are known 6 to 8, year comparison 3 to 4, control totals 1 to 2. Right: model rebuild in about 15 seconds. Below: the rebuild can answer while a question is still open, and runtime says nothing about decision quality. Estimated manual cycle, measured rebuild Recurring time per analysis cycle, once the model is built. Build effort not included. MANUAL CYCLE, OUR ESTIMATE PER TASK Import and validation Monthly formulas VAT reconciliation Fulfillment and shipping split Margin per product, where priced Year comparison Control totals 54 to 68 hours MODEL REBUILD, MEASURED All steps, every month and year about 15 seconds What the comparison shows The rebuild can answer while a question is still open. It measures runtime, not the quality of a decision. Manual hours are our task-by-task estimate for this analysis, not a timed study. Rebuild runtime measured on the model. Time to a contribution view per recurring cycle: manual work versus model rebuild Recurring cycle only, building the model is not included. Left: manual analysis cycle estimated at 54 to 68 hours, broken into tasks: import and validation 2 to 3 hours, monthly formulas 30 hours or more, VAT reconciliation 4 to 6, fulfillment and shipping split 8 to 10, margin per product where purchase prices are known 6 to 8, year comparison 3 to 4, control totals 1 to 2. Right: model rebuild in about 15 seconds. Below: the rebuild can answer while a question is still open, and runtime says nothing about decision quality. Estimated manual cycle, measured rebuild Recurring time per analysis cycle, once the model is built. Build effort not included. MANUAL CYCLE, OUR ESTIMATE PER TASK Import and validation Monthly formulas VAT reconciliation Fulfillment and shipping split Margin per product, where priced Year comparison Control totals 54 to 68 hours MODEL REBUILD, MEASURED All steps, every month and year about 15 seconds What the comparison shows The rebuild can answer while a question is still open. It measures runtime, not the quality of a decision. Manual hours are our task-by-task estimate for this analysis, not a timed study. Rebuild runtime measured on the model.
Time to a full contribution view, manual cycle versus model rebuild. Manual effort is our task-by-task estimate. Runtime measured.
One referral fee, two VAT effects Per 100 euros of net revenue, sold at 119 euros including 19 percent VAT, with a 10 percent rate card. Reading the rate card on net revenue suggests 10 euros. The fee is charged on the gross price: 11.90 euros, 19 percent more. VAT of 2.26 euros on the fee invoice is also withheld, so 14.16 euros leave the payout. After the VAT return the cost in the profit and loss is 11.90 euros. The first effect is a cost, the second is cash timing. One fee, two VAT effects Per €100 of net revenue, sold at €119 including 19% VAT. 10% rate card. Rate card, read on net revenue A common assumption €10.00 Fee charged on the price incl. VAT Effect 1: a cost, 19% above the assumption €11.90 Withheld from the payout Effect 2: VAT on the fee, withheld VAT €14.16 Cost after the VAT return The VAT on the fee comes back €11.90 €0 rate card figure Marketplace fee charged on the VAT-inclusive price, fee invoice with 19% VAT. One referral fee, two VAT effects Per 100 euros of net revenue, sold at 119 euros including 19 percent VAT, with a 10 percent rate card. Reading the rate card on net revenue suggests 10 euros. The fee is charged on the gross price: 11.90 euros, 19 percent more. VAT of 2.26 euros on the fee invoice is also withheld, so 14.16 euros leave the payout. After the VAT return the cost in the profit and loss is 11.90 euros. The first effect is a cost, the second is cash timing. One fee, two VAT effects Per €100 of net revenue, sold at €119 including 19% VAT. 10% rate card. Rate card, read on net revenue A common assumption €10.00 Fee charged on the price incl. VAT Effect 1: a cost, 19% above the assumption €11.90 Withheld from the payout Effect 2: VAT on the fee, withheld VAT €14.16 Cost after the VAT return The VAT on the fee comes back €11.90 €0 rate card figure Marketplace fee charged on the VAT-inclusive price, fee invoice with 19% VAT.
Per €100 of net revenue, one referral fee becomes a larger cost and a larger deduction from the payout.

The commercial question

As the channel grew, the business needed to know which part of the growth made money. That decides which products get more stock and ad budget, which fulfillment route pays for which product, and which items should be fixed or dropped.

Every one of those decisions depends on contribution per product. If that number is wrong, budget and stock go in the wrong direction, and the error grows with the channel.

Why we started from documents

On the German marketplace a rate card applied to net revenue understates the fee, since Amazon charges it on the buyer’s total price. An analytics tool would read the same incomplete inputs and rarely show what it does not know. Primary documents are slower to start from, yet they are traceable, reusable and honest about coverage.

So we began with the few numbers that drive live decisions and recomputed them from the documents. A tool can sit on top later, once it has the same corrected inputs.

How we worked

We worked from the client’s own records. Our tool retrieves the seller account’s reports through the Amazon API and writes nothing back. We read the ERP without writing to it either. Supplier and carrier invoices arrived as PDFs and scans, which we first extracted into structured data.

The only buyer details in the transaction reports are order city, region and postcode. The parcel match uses just the postcode and the date.

Every model is built from formulas that point back to raw rows, and the team can trace a margin figure back to the transactions behind it. Each report states its coverage, and assumptions are labelled as assumptions.

The model is built for decisions on ads, fulfillment routes and reorders. The client decides, and we prepare the evidence and implement what is agreed.

The baseline

We started by listing the numbers the channel’s decisions relied on, then asked where each one came from.

  • The referral fee usually comes from the rate card.
  • Product cost is often missing from order data, so early models use a placeholder ratio.
  • In-house shipping under the company’s own carrier contract does not appear in Amazon’s payment data.
  • Monthly revenue often comes from a sales tool that counts by order date, while payments settle later.
  • Ad break-even is often a rule of thumb, not a calculation.
Five numbers, the document behind each, and what changed Table of five rows. Referral fee: rate card, replaced by Amazon payment reports, higher against net revenue. Product cost: placeholder ratio, replaced by supplier invoices and price lists, real cost where joined, coverage shown. In-house shipping: not in marketplace data, replaced by carrier invoices matched to orders, routes comparable. Monthly revenue: order date in a sales tool, compared with settlement date in payment reports, month differences explained. Ad break-even: rule of thumb, replaced by net price divided by contribution per unit before advertising, campaigns judged against it. The number in use, the document behind it NUMBER IN USE PRIMARY DOCUMENT WHAT CHANGED Referral fee Rate card percentage Amazon payment reports What was actually withheld Higher against net revenue Cost and cash effect separated Product cost Placeholder ratio Supplier invoices, price lists Extracted from PDFs and scans Real cost where prices are joined Coverage shown, gaps labelled In-house shipping Not in marketplace data Carrier invoices Matched by postcode and date Routes comparable per unit Service levels become visible Monthly revenue Sales tool, order date Payment reports Settlement date per transaction Month-end differences explained Each chart labels its date basis Ad break-even Rule of thumb Contribution per unit Net price ÷ contribution before ads Break-even per campaign Campaigns judged against it Five numbers, the document behind each, and what changed Table of five rows. Referral fee: rate card, replaced by Amazon payment reports, higher against net revenue. Product cost: placeholder ratio, replaced by supplier invoices and price lists, real cost where joined, coverage shown. In-house shipping: not in marketplace data, replaced by carrier invoices matched to orders, routes comparable. Monthly revenue: order date in a sales tool, compared with settlement date in payment reports, month differences explained. Ad break-even: rule of thumb, replaced by net price divided by contribution per unit before advertising, campaigns judged against it. The number in use, the document behind it NUMBER IN USE Referral fee Rate card percentage PRIMARY DOCUMENT Amazon payment reports What was actually withheld WHAT CHANGED Higher against net revenue Cost and cash effect separated Product cost Placeholder ratio Supplier invoices, price lists Extracted from PDFs and scans Real cost where prices are joined Coverage shown, gaps labelled In-house shipping Not in marketplace data Carrier invoices Matched by postcode and date Routes comparable per unit Service levels become visible Monthly revenue Sales tool, order date Payment reports Settlement date per transaction Month-end differences explained Each chart labels its date basis Ad break-even Rule of thumb Contribution per unit Net price ÷ contribution before ads Break-even per campaign Campaigns judged against it
Numbers in use, the primary document behind each, and what changed.

A number is a hypothesis until a document confirms it

The figure a business runs on is often an assumption that was never checked against its own records, and usually the corrected figure is already on file.

The referral fee is a good example. The rate card states a percentage, and Amazon’s fee page says it applies to the total the buyer pays. The payment reports show what was actually withheld, order by order. A model that applies the rate to net revenue carries a fee that is too low, and every break-even built on it inherits that gap.

The economics

Contribution per unit is net revenue minus fee, fulfillment, advertising, returns and product cost. Each of those lines can be taken from a rate card or from a document, and the difference compounds.

In the example sale below, the rate-card view keeps 15 euros per 100 of net revenue and the document view keeps about 10. Only 1.90 euros of that gap comes from the fee basis. The rest comes from a shipping service that costs more than assumed and slightly higher returns, both set by the example. Small differences in several lines add up, and the fee is only one of them.

Unit economics: the rate-card view versus the document view Sale with net revenue 100 euros. Two stacked views. Rate-card view: fee 10, fulfillment 8, ads 5, returns 2, product cost 60, contribution 15. Document view: fee 11.90 because the fee is charged on the price including VAT, fulfillment 10 because the shipping service costs more than assumed, ads 5, returns 3, product cost 60, contribution 10.10. Of the 4.90 difference, 1.90 comes from the fee basis and 3.00 from the assumed fulfillment and returns costs. Same sale, two answers Unit economics per €100 net revenue. Rate-card view per €100 net revenue 10 Fee 8 Fulfillment 5 Ads 2 Returns 60 Product cost 15 Contribution Document view per €100 net revenue 11.9 Fee 10 Fulfillment 5 Ads 3 Returns 60 Product cost 10.1 Contribution In this example, 1.90 of the 4.90 gap comes from the fee basis. The rest comes from the assumed fulfillment and returns costs. Small gaps in several lines add up. Unit economics: the rate-card view versus the document view Sale with net revenue 100 euros. Two stacked views. Rate-card view: fee 10, fulfillment 8, ads 5, returns 2, product cost 60, contribution 15. Document view: fee 11.90 because the fee is charged on the price including VAT, fulfillment 10 because the shipping service costs more than assumed, ads 5, returns 3, product cost 60, contribution 10.10. Of the 4.90 difference, 1.90 comes from the fee basis and 3.00 from the assumed fulfillment and returns costs. Same sale, two answers Unit economics per €100 net revenue. Rate-card view per €100 net revenue Document view per €100 net revenue Fee 10 11.9 Fulfillment 8 10 Ads 5 5 Returns 2 3 Product cost 60 60 Contribution 15 10.1 In this example, 1.90 of the 4.90 gap comes from the fee basis. The rest comes from the assumed fulfillment and returns costs. Small gaps in several lines add up.
The same sale in the rate-card view and in the document view, per €100 net revenue.

That gap changes decisions. A product that looked worth growing may belong in the fix column. One that looked like a loss may be worth keeping, because it carries orders that support the account. Advertising works the same way. A campaign breaks even when its return on ad spend equals the net price divided by contribution per unit before advertising. If the ad report counts sales including VAT, use the gross price.

Portfolio matrix: grow, fix, keep for the account, stop 2 by 2. Horizontal axis: sales volume. Vertical axis: contribution per unit from the document view. Top right: grow, put stock and ads behind it. Top left: build demand carefully. Bottom right: fix price, route or cost, or keep deliberately as an account builder if it carries orders. Bottom left: stop or replace. Dots show products moving between quadrants once the number is recomputed. What a recomputed number decides Portfolio view. Contribution per unit from documents, not the rate card. GROW stock and ads behind it BUILD DEMAND carefully, test first FIX OR KEEP ON PURPOSE price, route, cost, or account builder STOP OR REPLACE unless it carries orders Sales volume → Contribution per unit → Rate-card viewputs products higherthan they really are. rate-card position document position Some products drop aquadrant. The decisionchanges from grow to fix,or from build demandto stop. Arrows point from the rate-card view to the recomputed view. Portfolio matrix: grow, fix, keep for the account, stop 2 by 2. Horizontal axis: sales volume. Vertical axis: contribution per unit from the document view. Top right: grow, put stock and ads behind it. Top left: build demand carefully. Bottom right: fix price, route or cost, or keep deliberately as an account builder if it carries orders. Bottom left: stop or replace. Dots show products moving between quadrants once the number is recomputed. What a recomputed number decides Portfolio view. Contribution per unit from documents, not the rate card. BUILD DEMAND carefully, test first GROW stock and ads behind it STOP OR REPLACE unless it carries orders FIX OR KEEP ON PURPOSE price, route, cost, or account builder Sales volume → Contribution per unit → Rate-card view puts products higher than they really are. rate-card position document position Some products drop a quadrant. The decision changes from grow to fix, or from build demand to stop. Arrows point from the rate-card view to the recomputed view.
Products move between grow, fix and stop once contribution is recomputed.

One example

In-house shipping cost shows the method from end to end.

The problem. Contribution per product could not be compared across fulfillment routes. FBA orders carry Amazon’s fulfillment fee in the payment data, and so do labels bought through Amazon’s shipping service. Parcels shipped under the company’s own carrier contract do not. That cost sits in carrier invoices, outside Amazon’s reports.

The new measurement. We extracted the carrier’s invoices parcel by parcel. The carrier data and the orders share no common key, so we matched parcels to orders by postcode and date, within a window of a few days. Machine checks confirm that no parcel is counted twice and no order carries two shipping sources.

Those checks prevent double counting, but they cannot prove that every match found the right order. Two orders to the same postcode within the window can swap their parcels. That only moves single label amounts between orders. Our model reads shipping cost per product and route, where such swaps largely even out.

We then compared margins like for like, with only orders that carry a visible shipping cost in the comparison and the coverage share shown next to every margin.

What it changes. With the match in place, routes become comparable per unit, and that can show whether a service level was chosen by default or by need. Switching needs a check against the delivery promise first. An export with parcel numbers and order references would replace the postcode match with an exact key.

The whole calculation rests on one data model. Payment lines hang off orders, and fees and refunds hang off payment lines. Carrier parcels and purchase prices join from outside the marketplace.

Lineage of one contribution figure Four columns. Sources: Amazon transaction report, carrier invoices, supplier invoices and price lists, ERP read-only. Extracted records: payment lines by type, parcels with postcode and date, purchase price per product, order to SKU mapping. Calculation steps: net revenue, minus referral fee after fee VAT recovery, minus shipping cost with a check whether it is visible, minus refunds and returns, minus purchase cost. Orders without visible shipping cost are excluded and counted as missing. Output: contribution per unit with coverage share and labels for estimates. Lineage: where one contribution figure comes from Each step is a formula over the step before. SOURCE EXTRACTED CALCULATION REPORTED Amazon transaction report Payment lines by type Carrier invoices (PDF) Parcels: postcode, date, cost Supplier invoices, price lists Purchase price per product ERP, read-only Invoices, SKU mapping Net revenue gross minus VAT − Referral fee after fee VAT recovery Shipping costvisible? − Refunds, returns incl. refunded fees − Purchase cost price or placeholder yes no Excluded counted as missing Contribution per unit product, month, route coverage share shown estimates labelled Reported with its coverage The contribution view uses the fee after VAT recovery. The cash view uses the full deduction. Lineage of one contribution figure Four columns. Sources: Amazon transaction report, carrier invoices, supplier invoices and price lists, ERP read-only. Extracted records: payment lines by type, parcels with postcode and date, purchase price per product, order to SKU mapping. Calculation steps: net revenue, minus referral fee after fee VAT recovery, minus shipping cost with a check whether it is visible, minus refunds and returns, minus purchase cost. Orders without visible shipping cost are excluded and counted as missing. Output: contribution per unit with coverage share and labels for estimates. Lineage: where one contribution figure comes from Each step is a formula over the step before. SOURCE CALCULATION Amazon transaction report EXTRACTED Payment lines by type Net revenue gross minus VAT − Referral fee after fee VAT recovery Shipping cost visible? Carrier invoices (PDF) Parcels: postcode, date, cost Excluded counted as missing no yes − Refunds, returns incl. refunded fees Supplier invoices, price lists Purchase price per product ERP, read-only Invoices, SKU mapping − Purchase cost price or placeholder REPORTED Reported with its coverage Contribution per unit product, month, route coverage share shown estimates labelled The contribution view uses the fee after VAT recovery. The cash view uses the full deduction.
Lineage of one contribution figure, from source documents to the reported line with its coverage.

The fee has two VAT effects

Nothing here is hidden. Amazon publishes the rule, yet the fee line is easy to misread when a margin model starts from net revenue.

On the German marketplace the referral fee is charged on the buyer’s total price, including VAT and any shipping charged. The business earns only the net price. Measured against net revenue, the fee for standard-rate goods is 19 percent higher than the rate, so 10 percent becomes 11.9 percent. That part is a true cost, and reduced-rate goods show a smaller gap.

Some categories use tiered rates, and most have a minimum fee of €0.30 per item. On a refund Amazon keeps an administration fee, the lesser of €5 or 20 percent of the referral fee. The payment lines already reflect all of this, which is one more reason to start from them.

The second effect is different. Since August 2024, per the platform’s notice, Amazon has invoiced its fees to German sellers with German VAT added. That VAT is withheld from the payout too. A seller entitled to deduct input VAT recovers it through the next VAT return. It costs cash for a few weeks, not margin.

The payout data shows both effects together. The profit and loss should show only the first. Our model separates them. The contribution view uses the fee after the VAT recovery, and the cash view uses the full deduction.

working notes · thread

  1. Team

    The payout deduction per sale is higher than the rate card. Is the fee wrong?

  2. Capcelerate systemSystem

    No. Two effects stack. The rate applies to the price including VAT. And the fee invoice carries VAT, which is withheld from the payout.

  3. Team

    Which part is a cost?

  4. Capcelerate systemSystem

    The first. The VAT on the fee comes back with the VAT return. It costs cash, not margin.

  5. Team

    Then the contribution view takes the first effect, and the cash view takes both.

Recreated from our working notes. Details anonymised.

Reconciled is not complete

Agreement between two systems says nothing about what both are missing.

Two systems can agree to the cent while the field a margin needs is almost empty. Purchase prices often exist in supplier price lists but are never joined to the articles in the ERP, because names differ between the lists and the ERP. The result is a margin view that is precise and verified, but not yet trustworthy.

Nothing is broken in that case. Every component does what it was built to do, and the limit has moved from engineering to data supply. A system that goes live without a plan for its inputs reports accurate figures about incomplete data. People then experience that as the system being wrong.

We show coverage first: a margin figure always comes with the share of orders it covers. A placeholder stays labelled as a placeholder until real purchase prices replace it.

Guardrails

  • Source lines, not summaries. Every figure is a formula over raw transaction rows, and manual inputs such as purchase prices sit in marked cells.
  • Coverage beside every result. Missing costs are shown as missing, not as zero.
  • Payment date and order date kept apart. Month-end orders land in different months in the two views. Each chart says which one it uses.
  • Consistency checks on every build. Automated checks confirm that totals agree and nothing is counted twice. They catch errors in the build and do not replace a review of the inputs.
  • Estimates stay labelled. When a transaction report omits fees on some units, we estimate those conservatively and mark them for a check.

In 2026 Amazon added lines above the header of its transaction report. A parser that skips a fixed number of lines would have taken the wrong row as the header. Ours now finds the header row itself.

What it makes possible

A traceable contribution figure can feed several decisions at once. Ads can get a break-even per campaign, and stock can go to the fulfillment route that earns more per unit. As purchase prices are joined, the range can be sorted into grow, fix and stop, each time from a view that rebuilds in seconds.

The same model can also serve cash planning, as it already records what each order pays out and when. That payout timing is what a business needs to buy stock closer to demand and move budget to products that pay back faster. The next measurement is contribution per product, once every purchase price is joined.

Principles for your business

  1. Treat every operating number as a hypothesis. Start with the few that drive live decisions.
  2. Recompute from your own documents. Payment reports, invoices and the ERP usually hold the answer already.
  3. Show coverage beside every margin. A precise figure on thin data is worse than an honest range.
  4. Separate cost from cash. Some deductions come back. Plan them as cash, not margin.
  5. Fix inputs before dashboards. A tool on top of wrong inputs only makes the wrong number faster.

If your ad break-even still rests on the rate card, your own payment reports are the first document we would open with you.

Credits

Built by Capcelerate with the client’s management and operations team.

Tell us what you want to grow. The intro call is free.

Request a free intro callFree, up to 30 minutes. No obligation.