Meta Ads Spending But No Sales: How To Find the Leak
By Utsav Daga · Published 28 July 2026 · Updated 30 July 2026
When Meta reports sales that your bank account does not show, the cause is usually attribution inflation, duplicate event firing, or losses after the order — returns and RTO. Reconcile platform-reported revenue against your actual order data before changing anything in the ad account.
You are spending. Meta says it is working. Your bank account says otherwise. This gap has three usual causes.
Cause 1: Attribution is crediting sales you would have made anyway
Meta’s default 7-day click, 1-day view attribution is generous. Someone who was going to buy, saw your retargeting ad, then bought, gets counted as an ad-driven sale.
How to test it. Compare Meta’s reported revenue against your store’s total revenue for the same period. If Meta claims a large share of your total but your total has not grown since you started spending, you are paying to re-buy existing customers.
Better: check your store’s own attribution, or run a geo holdout test where you pause spend in one region and watch what happens to organic revenue there.
Cause 2: Events are firing twice
If both the Pixel and the Conversions API send a purchase event without a shared event_id, Meta counts one purchase as two. Reported ROAS doubles. Actual revenue does not.
How to test it. Events Manager, purchase event, look for the deduplication warning. Then compare total purchase events against your real order count for the same window.
Cause 3: The revenue is real, but it does not survive to your bank
This is the one nobody wants to look at. The sale happened. Then:
- The customer returned it
- Cash on delivery was refused and the parcel came back — you paid shipping both ways
- Payment gateway and platform fees took their cut
- Cost of goods was higher than you assumed
How to test it. Build one honest number: contribution margin per order = selling price − COGS − shipping − payment fees − (return rate × cost of a return). Then work out your break-even ROAS from it. If break-even is 2.5x and you are running at 2.2x, you are buying revenue at a loss no matter what the dashboard says.
Fix in this order
- Reconcile platform revenue against real order data
- Fix deduplication if events are double-counting
- Calculate true contribution margin and break-even ROAS
- Attack RTO and returns before touching campaign structure
- Only then optimise the ad account
Most of the money in ecommerce paid media is not won in Ads Manager. It is won in the three steps above it.
Related questions
Why does Meta report more sales than Shopify?
Three usual causes: Meta's default 7-day-click attribution window credits sales that would have happened anyway, duplicate Pixel and CAPI events count one purchase twice, and Meta counts the order at checkout while your store counts it after payment clears.
What is a realistic ROAS target?
ROAS is the wrong target on its own. Calculate your break-even ROAS from gross margin — if your margin is 40 percent, break-even is 2.5x, so anything below that loses money regardless of how healthy it looks in the dashboard.
How much does RTO affect profitability?
In cash-on-delivery markets it can be the single largest profit leak. A 30 percent return-to-origin rate on a campaign showing 3x ROAS can push the real figure close to break-even once shipping both ways and handling are counted.