Answers
Meta says 4x ROAS but the bank account says otherwise: where the gap comes from
The short answer
Two different gaps hide between Meta's ROAS and your bank balance. First, Meta's figure is purchase value it attributes to your ads under its attribution setting, and its help pages say modeling may be used. That isn't the same as payments that cleared. Second, even revenue that did clear isn't profit: a campaign only covers its product costs above 1 ÷ your gross margin. On top of both, money reaches the bank days after the sale. Check each one before you scale or cut a campaign.
Want to check this on your own numbers?
Thexly matches each payment to the campaign visit that led to it.
No card required.
Gap 1: what Meta counts vs what cleared
Purchase ROAS is Meta's purchase value divided by Amount spent. Meta says the purchase value comes from sales on its own surfaces "as well as information received from one or more of your connected Meta Business Tools and attributed to your ads" (Meta help: Purchase ROAS). The same page says modeling can fill in events Meta can't count directly, and that for some iOS 14+ results the number may not be calculated at all.
Which purchases count depends on the window. Meta's Results page gives the default as "7-day click, 1-day view and 1-day engagement conversion" (Meta help: Results). So a sale can be credited to an ad the buyer only saw the day before. Meta applies the setting chosen on each ad set (Meta help: actions attributed to your ad), so two ad sets in one account can count differently.
None of that is wrong by Meta's rules. It just isn't a count of money that arrived. One reply on the r/ecommerce thread asked the right question: "Are you taking whatever modeled ROAS Meta is giving you as is, and make business decisions based on that?" (r/ecommerce, March 2026)
Gap 2: revenue vs margin
The thread was mostly about this one. The original post has since been deleted, but the replies are still up, and several of them come back to costs. One put it plainly: "Once you factor in real costs, the picture can look very different."
Break-even ROAS is 1 ÷ gross margin (break-even ROAS calculator). When margin moves, the break-even line moves with it, and a campaign can cross from profit to loss without its ROAS changing at all.
Illustrative example. Round numbers for a made-up store, not the poster's and not a benchmark.
A product sells for €60 and costs €30 to make and ship. Gross margin is 50%, so break-even ROAS is 1 ÷ 0.50 = 2.0. A campaign at 2.5 is making money.
Then the supplier puts the price up and shipping creeps, and each order now costs €42. Margin falls to 30%. Break-even becomes 1 ÷ 0.30, about 3.33. A campaign running at 3.2 now loses money on every sale, even though nothing in Ads Manager changed.
That's why another reply, from someone on the fulfilment side, warned that small cost drift adds up: "Across a few hundred orders it shows up in the bank account and they're blaming the ads."
Want this live for every client?
Thexly reports ad performance against payment revenue in Stripe, Lemon Squeezy, Polar, Dodo, and Yolfi, per client, without the spreadsheet.
Gap 3: timing between Stripe and the bank
Even payments that cleared don't land in the bank the same day. Stripe says settlement timing "varies per country and is typically expressed as “T+X” days". In Ireland, for example, it's 7 calendar days for the first payout and 3 business days after that. Stripe also notes "your bank might take additional time to make the funds available after receiving them." Refunds come out of the same balance, and can push it negative (Stripe docs: payouts).
So for a given week, compare Meta's figure with payments in Stripe, not with deposits in the bank. One more detail: Stripe says payments and payouts are "processed according to UTC time, except for Asia-Pacific (APAC) markets." Use the same dates on both sides.
A short check you can run this week
1. Export last month's Amount spent and Purchases conversion value from Ads Manager, and write down the attribution setting.
2. Pull payments that cleared for the same dates from Stripe, and take out refunds.
3. Divide those payments by Amount spent. That's your ROAS in payments.
4. Work out your break-even ROAS from your current margin.
5. Put the three numbers side by side: Meta's ROAS, ROAS in payments, and break-even.
If Meta's number is above break-even and the payments number is below it, the gap is the problem, not the campaign. The platform vs payment gap calculator sizes it for you.
What the replies got right
They didn't argue about a magic ROAS number. They pointed at the store's own costs, and at whether the reported figure was modeled. Both are things you can check with your own data in an afternoon.
Put last month's payments next to what each platform claimed.
Match ad clicks to Stripe payments and see which campaigns paid for themselves this month.
No card required.
FAQ