Early access is opening soon. The waiting list gets in first, and locks the launch price.Join

Why your ROAS doesn't match your bank account

Two numbers claim to describe the same month and they do not agree. Before changing anything about your campaigns, it is worth knowing which of the four causes below is yours, because two of them mean nothing is wrong.

Reported ROAS and actual return disagree because they count different things. The ad platform counts only the sales it could attribute to its own ads, within a window it chooses, using revenue before any cost. Your bank account counts every sale, once, after everything has been deducted.

Is the platform counting sales it cannot see?

It is not, and that is the first gap. Any sale whose report never arrived is missing from the platform's numerator, so its ROAS is understated. This makes the reported figure pessimistic, and unevenly so: campaigns whose buyers block more are penalised more.

Is the same sale being counted twice?

It can be, and this one runs the other way. If a browser report and a server report of one sale carry different event identifiers, the platform sees two sales. Reported revenue then exceeds real revenue, and the campaign looks twice as good as it was.

Are you comparing different windows?

Almost certainly. The platform credits a sale to an ad clicked days earlier, so its month contains sales your bank recorded in a different month. Meta also removed the seven and twenty-eight day view windows in January 2026, which moved the totals again without any campaign changing.

Is ROAS the wrong measure for the question?

Often. ROAS compares revenue to ad spend and ignores cost of goods, shipping, payment fees and returns. A campaign can hold a healthy ROAS and lose money on every order, which is a real problem that no amount of better tracking will show you.

How to make the two comparable

  1. Compare one day at a time, in one time zone, before comparing a month. Most reported gaps are boundary effects.
  2. Fix double counting first, because it is the only cause that overstates. Check that the browser and server reports of one sale carry the same identifier.
  3. Then close the reporting loss, so the platform is judging campaigns on all the sales rather than the ones that got through.
  4. Keep ROAS for steering ad spend and a margin-based measure for deciding whether the business works. They answer different questions and neither replaces the other.

Sources

  • Meta removed the 7-day view and 28-day view attribution windows on 12 January 2026, including from the Ads Insights API, which reduced reported conversions on campaigns whose buyers converted without clicking.Meta Ads Insights API change, reported January 2026
  • Meta deduplicates a browser and a server report of the same sale on a shared `event_id`, and treats that identifier as case-sensitive.Meta for Developers

The terms on this page

What wesaw does about it

Last reviewed: