How to calculate TACoS on Amazon: the correct formula

TACoS — total advertising cost of sales — is one number with one honest definition: total ad spend divided by total sales, ad and organic together. Almost every argument about TACoS is really an argument about the denominator, and almost every wrong TACoS in circulation is a number that used the wrong one.

The consequence is worth stating up front, because it explains most of the confusion around this metric: TACoS is not computable from advertising reports alone. The numerator lives in the Amazon Ads console. The denominator lives in Seller Central or Vendor Central. No advertising report, API or dashboard that sees only advertising data can produce a real TACoS, and anything that claims to is either computing ACoS or estimating your total sales.

Last updated: September 2, 2026

Verified as of 2026-09-02.

What TACoS actually answers

ACoS answers a question about the advertising: of the sales my ads produced, what share did the ads cost? It is a self-contained efficiency measure, and it is genuinely useful for deciding whether a campaign, an ad group or a keyword is pulling its weight.

TACoS answers a question about the business: what share of everything I sold went to advertising? That includes the sales that would have happened anyway. It is deliberately unflattering to advertising, and that is the point — it is the only common metric that notices when your ads are buying sales you already had.

The reason practitioners watch it is the second-order read. Rank on Amazon compounds: ad-driven sales velocity feeds organic placement, and organic placement produces sales you do not pay for. If that loop is working, ad spend can stay flat while total sales grow, and TACoS falls without anyone touching a bid. If it is not, total sales track ad spend almost exactly and TACoS sits still no matter how efficient the campaigns look. TACoS measures how much of your revenue you have to keep renting.

That also tells you when it is the wrong tool. It is a brand-level metric with a long feedback loop, and a poor instrument for a keyword decision, a bid change, or anything you want to judge in a week.

The formula, and why the denominator is the whole point

TACoS = total ad spend / total sales (ad + organic). Three metrics, two denominators, one trap.

Metric Numerator Denominator Computable from ads data alone?
ACoS Ad spend Ad-attributed sales Yes
ROAS Ad-attributed sales Ad spend Yes
TACoS Ad spend Total sales, ad + organic No

A worked example, with round numbers. A brand spends $10,000 on ads in a week. Its advertising reports attribute $40,000 of sales to those ads. Seller Central says the brand sold $100,000 in total over the same dates.

  • ACoS = 10,000 / 40,000 = 0.25, i.e. 25%
  • ROAS = 40,000 / 10,000 = 4.0
  • TACoS = 10,000 / 100,000 = 0.10, i.e. 10%

Note the shape of that: because ad-attributed sales are always a subset of total sales, TACoS is always smaller than ACoS for the same period. That is precisely what makes the mislabel dangerous. A wrong TACoS does not look wrong. It looks like a slightly better week.

One more convention worth fixing early: treat these as ratios, not percentages, in anything automated. Our own metric definitions return 0.25 rather than 25, because a pipeline that sometimes multiplies by 100 and sometimes does not produces a 100x error that survives review. Format for humans at the very last step.

What is a good TACoS?

There is no universal answer, and anyone who gives you one without first asking about your margin is guessing.

We are not going to publish a house benchmark, because we do not have one that survives scrutiny. We measure TACoS across a large number of brands, but the spread across categories and lifecycle stages is wide enough that a median would be a number people misapply rather than a number people use. Third-party ranges circulate in market research, but they aggregate catalogs that look nothing like yours, and adopting one as a target is how profitable brands end up cutting spend that was working.

Three things move the correct answer:

  1. Contribution margin. TACoS is an expense as a share of revenue, so your ceiling is whatever is left after cost of goods, referral fees, fulfillment and returns. Two brands with the same TACoS and different margins are in completely different situations.
  2. Category and price point. Competitive density sets the clearing price for a click; average order value sets how many clicks a sale has to absorb.
  3. Lifecycle stage. A brand launching a product should want a high TACoS — it is buying velocity and rank it cannot get any other way, and a low TACoS at launch usually means the launch is not happening. A mature catalog milking established organic rank should want a low one. The same number is a success in one case and a failure in the other.

Set your own target from contribution margin

This takes about ten minutes and produces a number that is actually yours.

Step one: compute contribution margin per unit as a share of revenue. Take the selling price and subtract everything variable — landed cost of goods, Amazon's referral fee, fulfillment, and a realistic allowance for returns and storage. The arithmetic below is an illustration of the method, not a benchmark; substitute your own figures.

Line Per unit
Selling price $40.00
Landed cost of goods -$12.00
Referral fee -$6.00
Fulfillment -$6.50
Returns and storage allowance -$1.50
Contribution before advertising $14.00 (35% of revenue)

Step two: that share is your break-even TACoS. At a TACoS of 35% in this illustration, advertising consumes the entire contribution and the catalog contributes nothing toward fixed costs. It is a ceiling, not a target.

Step three: decide how much of that contribution you are deliberately spending. To bank 20 points of margin in this illustration, target roughly 15%. If you are launching and willing to run at zero contribution to buy rank, your target might sit near the ceiling — with an explicit end date and a condition for stopping, because "we are still in launch mode" has funded a lot of permanent losses.

Step four: watch the direction, not the level. Once you have a target, the trend matters more than the level, and the trend only means something read against total sales.

Total sales TACoS What it usually means
Rising Falling The organic flywheel is working. This is the outcome you are paying for.
Rising Rising You are buying growth. Fine if deliberate and time-boxed; check contribution.
Flat Rising You are paying more for the same demand. Look at CPC and competitive pressure.
Falling Falling Usually just a spend cut, not an efficiency gain. Do not celebrate this one.

That table is more useful than a benchmark, and it does not require you to believe anything about someone else's catalog.

Doing it by hand

Two consoles, two exports, and a date range you align yourself. Budget 30 to 60 minutes for a single marketplace, and two or more hours every week for a multi-marketplace brand or an agency running several accounts.

  1. Fix the window and the sales basis. Use whole weeks so weekday seasonality cancels. Write down the basis: sellers use ordered product sales on an ordered-date basis; vendors use ordered or shipped revenue, and it is not their choice which (see below). A TACoS with no stated basis cannot be compared to anything, including itself last month.

  2. End the window short of today. Do not run it to yesterday. Spend is complete immediately; sales are not. Ending roughly three days back removes the worst of the distortion. If you need the most recent days, treat the result as an undercount of sales, and therefore an overstatement of TACoS.

  3. Export ad spend for every profile. Campaign reports for Sponsored Products, Sponsored Brands and Sponsored Display, over the chosen dates, for every advertising profile the brand owns. The column you need is cost. If you also want the organic split, note that Sponsored Products reports ad-attributed sales as a 14-day column while Sponsored Brands and Sponsored Display report a plain sales column — they are not the same measure and the difference matters for step 2's reasoning.

  4. Export total sales. Sellers: the Detail Page Sales and Traffic business report, at day granularity and child-ASIN granularity, taking the ordered product sales amount. Vendors: the vendor sales report, noting the distributor view it came back on. Both have lived under a Reports or Business Reports area of their console for years, but navigate by report name, not by menu path — Amazon relabels and relocates menu items without notice, and a path is the fastest part of any guide to go stale.

  5. Align the ranges by hand. Trim both exports to identical start and end dates in the marketplace's own reporting calendar. Never divide a short sales window into a full spend window; it inflates TACoS and the error is invisible in the output.

  6. Sum across profiles, then across marketplaces. Add cost across every profile in the brand. Add total sales across every marketplace account in the brand, keeping each marketplace's amount in its own currency for now. Never add vendor ordered revenue to vendor shipped revenue.

  7. Convert currencies at the right month's rate. Convert spend and sales to one reporting currency using the rate for the month the activity occurred in. If you cannot get a rate for some currency and month, leave that amount out and report it separately.

  8. Divide, and record the assumptions. Store the window, the basis, the currency and the conversion month next to the number. Without them, next quarter you will have two TACoS figures and no way to tell whether they are comparable.

This breaks the moment a brand has more than one ad profile, more than one marketplace, or any mix of vendor and seller accounts. Which is most brands worth calculating TACoS for.

What breaks at scale: six failure modes

These are the six ways we have watched a TACoS calculation go wrong — including in our own code. They are observations from operating this at scale, not statements of documented Amazon behavior.

1. Dividing by ad-attributed sales instead of total sales

This is ACoS wearing a TACoS label, or the reverse, and it is the most common error by a wide margin.

It is not hypothetical, and we are not going to pretend it only happens to other people. Our own brand roll-up once computed ACoS by dividing ad spend by the brand's total sales for brands that had Seller Central connected — a correct TACoS displayed under an ACoS heading. Nothing looked broken: the number was smaller, entirely believable, and consistent from row to row. The fix was structural rather than arithmetic. The roll-up now carries ad-attributed sales and total sales as two separate fields, ACoS always divides by the ad-attributed one, and the total-sales column renders only for brands that genuinely have a Selling Partner source instead of quietly falling back to the ad figure.

The general lesson: a payload that carries two plausible denominators will eventually be divided by the wrong one. Name the fields so the mistake is impossible rather than merely discouraged, and never let a missing total-sales figure silently degrade into the ad-sales figure.

2. Comparing complete spend against still-accruing sales

Ad spend books at click time and is final immediately. Ad-attributed sales accrue over a 14-day attribution window, so a given day's sales figure keeps growing for up to two weeks after the click. Amazon's total-sales reporting has its own settling behavior; our ingestion re-requests the most recent 14 days of the sales and traffic report precisely because those days are not yet final when first retrieved.

Put a complete numerator over an incomplete denominator and you manufacture a decline.

We measured this across 500 enabled brands in our own production system on the day we corrected for it. Reading the freshest window against a fully settled prior week, the median ad-spend change was -6.8% while the median sales change was -15.7%, and 79% of all brands appeared to be declining. On one brand with flat spend, a reported -17.6% became -6.1% once the current window's attribution was extrapolated to maturity — the same as its spend change, meaning efficiency was actually flat and roughly two thirds of the "drop" was an artifact of the window.

The correction is unglamorous: hold the window end back a few days. Days one and two after a click are severely immature on every account we have measured; past that, accounts diverge enough that no single maturity curve fits all of them, which is why this is a tunable constant rather than a derived one. It reduces the bias without eliminating it — the current window still averages slightly less mature than the one before it.

There is a subtler version that catches sophisticated people. If you derive organic sales as total sales minus ad-attributed sales, that derived split keeps moving for two weeks even when total sales are already final, because only the subtrahend is still growing. Your organic number is therefore at its most wrong exactly when you are most likely to look at it.

3. Mixing seller ordered revenue with vendor shipped revenue

Vendor sales reporting is keyed by a distributor view, and this is the single most misunderstood thing in vendor reporting: it is a lens on one stream, not a second stream.

  • Manufacturing view reports ordered revenue — what Amazon ordered from you. This is the figure comparable to a seller's ordered product sales.
  • Sourcing view reports shipped revenue only. Amazon returns no ordered column at all on that shape, so shipped revenue is the revenue measure for those accounts, not a degraded substitute for one.

Three rules follow. Never add ordered and shipped together — you would be double counting one stream seen twice. Always disclose which basis produced a vendor TACoS. And label a brand whose marketplaces are configured differently as mixed basis, because it is exactly that.

Vendor data also arrives later than advertising data, independently of any attribution effect — ordered and shipped revenue do not attribute, they simply show up late. We carry a separate vendor window end for this reason, because dividing a short vendor sales window into a full ad-spend window inflates TACoS. These are two different lags and must not be compounded: correcting a vendor coverage gap with an attribution lag throws away a real day of revenue to fix a problem vendor does not have.

4. Computing per account instead of per brand

A brand is a business entity; an account or advertising profile is a login. Brands routinely span several of both.

The subtle part is not the summing, it is the window. Different accounts ingest on different schedules, so computing each account separately and adding them up produces a total made of different date ranges — one period for one account and a shorter one for another, presented as a single figure for a single week. We hit exactly this. The fix was to resolve one shared window across every selling account and advertising profile in the brand before computing anything, rather than resolving it inside the per-account loop. It silently understates total sales, and therefore overstates TACoS, in a way that no amount of checking the formula will find.

5. Summing multiple currencies, or converting at the wrong month's rate

Two rules, both learned the expensive way.

Convert before you sum, per marketplace, at the rate for the month the activity occurred in. Not today's rate. A strong or weak month distorts the ratio, and using a single current rate for a trailing quarter quietly rewrites history every time you recompute.

Never coalesce a missing rate to 1.0. Treating an unconvertible amount as already converted silently mixes currencies and moves the result by an unknown amount. Our own computation joins each marketplace's amounts to a rates table on currency and month with a strict null posture: unconvertible amounts surface as a separate unconverted total with the currency codes listed, rather than folded in. A visible gap is recoverable. A silently mixed total is not.

6. Reading the console's real-time figure instead of the settlement-aware export

The dashboard number in front of you and the exported report for the same dates are different artifacts. Console views lean toward freshness; exported reports lean toward being final and are re-stated as data settles. For a metric you will compare week over week, use the export, and use the same export every week. A TACoS series assembled from whatever number was on screen that morning is not a series.

Doing it with AI

Nothing above requires a product. It requires two datasets and the discipline to align them, and if you have that, a spreadsheet is a perfectly good place to compute TACoS.

What changes with an AI assistant is the marginal cost of doing it often, across many profiles, and of asking follow-up questions that would each be another export. Any MCP-connected assistant — Claude, ChatGPT, or anything else that speaks the protocol — can compute a correct TACoS if, and only if, four things are true of the data it can reach:

  1. It can see both halves. Advertising spend and Selling Partner or Vendor total sales. An assistant wired only to advertising data cannot compute TACoS; at best it will compute ACoS and call it TACoS, which is failure mode 1 with better grammar.
  2. History is stored, not just fetched live. Window alignment, the attribution hold-back and week-over-week comparison all need days that have already settled.
  3. Currency is handled explicitly, per marketplace and per month, with missing rates surfaced rather than assumed.
  4. The unit of aggregation is the brand, with one window resolved across every account and profile inside it.

Those are requirements to evaluate any tool against, ours included.

Ours is arranged this way: TACoS is defined once as a canonical metric — ad_spend / NULLIF(total_sales, 0), returned as a ratio — so every surface that reports it divides the same way, and the MCP server tells connected clients outright that the metric needs both halves. One practical wrinkle applies whichever vendor you use: MCP clients cache the tool list at connection time, and a Selling Partner tool only appears once that integration is connected. If you connect Seller Central and your assistant still insists it cannot see total sales, reconnect the connector in your client. That is a connector-refresh problem masquerading as a data problem, and it costs people an afternoon.

Frequently asked questions

Is TACoS the same as ACoS?

No, and the only difference is the denominator. ACoS is advertising spend divided by ad-attributed sales, so it measures the efficiency of the advertising alone and can be computed entirely from advertising reports. TACoS is advertising spend divided by total sales, ad plus organic, so it measures what advertising costs the whole business and cannot be computed from advertising reports at all. Because ad-attributed sales are a subset of total sales, TACoS is always the smaller number for the same period. That is exactly what makes the mistake dangerous: divide by the wrong denominator and you get a plausible, smaller figure that nobody downstream can identify as wrong.

What counts as total sales in the TACoS formula?

Everything the brand sold in the window through that Amazon account, whether or not an ad touched it. For a seller the usual source is the Detail Page Sales and Traffic business report, using ordered product sales on an ordered date basis at day granularity. It is not units, not shipped revenue, and not sessions. It also is not your ad sales plus an estimate of organic. The point of TACoS is that the denominator comes from a different system than the numerator, so if you can produce the figure from advertising data alone you have not produced TACoS.

Does TACoS work for Vendor Central?

Yes, but it is a different measurement rather than a variant, and the basis has to be disclosed. Vendor sales reporting is keyed by a distributor view. The manufacturing view reports ordered revenue, which is the figure comparable to a seller's ordered product sales. The sourcing view reports only shipped revenue, and Amazon returns no ordered column at all on it, so shipped revenue is the revenue measure for those accounts rather than a degraded substitute. A vendor TACoS must state which basis produced it, the two bases can never be added together, and a brand with marketplaces configured differently has a mixed basis that should be labelled as such.

Why does my TACoS change when I recalculate it?

Because the two halves settle on different clocks. Advertising spend books at click time and is final immediately, while ad-attributed sales keep accruing for up to fourteen days after the click and Amazon's own sales figures for recent days are still finalizing when you first pull them. Recomputing the same window a week later therefore moves the denominator and not the numerator. In our own production system, a naive week-over-week read of the freshest days showed 79 percent of 500 brands as declining, with a median sales change of -15.7 percent against a median spend change of -6.8 percent, which is an artifact of the window rather than a change in the business. Ending the window a few days short of today removes most of it.

Can I compute one TACoS for a whole account?

You can compute it per account, but on a brand with more than one advertising profile or more than one selling account it is the wrong unit. The brand is the unit, and the window has to be resolved once across every profile and account inside it. We learned this the hard way: computing per account let accounts with different ingestion lag contribute different periods to a single total, so the sum was not a sum over one window at all. If the accounts inside a brand cover different date ranges, either shorten every one of them to the shared window or do not aggregate them.

Do I need currency conversion for TACoS?

Yes, as soon as a brand sells in more than one currency, and it has to happen before you sum rather than after. Convert each marketplace's spend and sales using the rate for the month the activity happened in, not today's rate, or a strong or weak month distorts the ratio. The failure to avoid is substituting a rate of one when a rate is missing: that silently treats one currency's amounts as another's and moves the result by an unknown amount. Leave unconvertible amounts out of the total and report them separately, so the gap is visible instead of buried.

Related reading


If you got this far, you already know the hard part is not the division. It is that the numerator and the denominator live in different systems, settle on different clocks, arrive in different currencies, and belong to a brand that spans more accounts than either console wants to show you at once.

Marketplace Ad Pros keeps both halves in one place, computes TACoS from the same canonical definition everywhere it appears, and hands the whole thing to Claude or ChatGPT so you can ask follow-up questions instead of running another export. Connect your accounts and see your own number.