Answers
Did my campaign make money? What ROAS leaves out
The short answer
ROAS in Ads Manager tells you how much purchase value Meta credits to a campaign for each euro you spent. It doesn't tell you whether the campaign made money. For that you need three more numbers per campaign: the payments that cleared, the refunds that came back out, and what those orders cost you to deliver. If what's left is more than you spent, the campaign made money, before fixed costs.
Want to check this on your own numbers?
Thexly matches each payment to the campaign visit that led to it, so you can see which campaigns brought in money that cleared.
No card required.
The question
In October 2026, someone asked this on r/FacebookAds: "Ads Manager says the ROAS looks fine, but then refunds, discounts, shipping, and product costs come out, and it's a different picture." (r/FacebookAds thread).
They wanted to know whether people check profit per campaign or treat ROAS as close enough, and where that profit number comes from. The poster said they work on software for online stores.
It's a fair question, and most of the work to answer it sits outside Ads Manager.
Why ROAS can look fine while the money doesn't
Meta calculates Purchase ROAS as "purchase conversion value divided by amount spent" (Meta help: Purchase ROAS). The purchase value on top of that fraction is "based on approximate Shop sales" on Meta's own surfaces plus data from your connected tools, "attributed to your ads". The same page says that when events can't be counted directly, "statistical modeling may be used".
So the number you're looking at is Meta's estimate of sales it credits to the campaign. Nothing has come off it yet. Three gaps sit between that and money you kept.
Gap 1: what Meta credits vs what cleared
Start with payments, not purchase value. For each campaign, the question is which payments cleared from buyers who came through that campaign's ads. That figure can be lower than Meta's, because Meta's includes estimates and sales credited under its attribution setting. If two platforms both credit the same sale, both figures count it, while your payments count it once.
Gap 2: what comes off before it's yours
Next, take off what the post listed: refunds, discounts, shipping and product costs. Discounts usually show up already, as a smaller payment. Refunds arrive later and need taking out by hand. Shipping and product costs live in your own books.
A quick way to see where the line sits is break-even ROAS, which is 1 ÷ your gross margin (break-even ROAS calculator). At a 40% margin, a campaign has to bring back 2.5 in payments for every euro spent just to cover the cost of what it sold.
Gap 3: per campaign, not the whole store
The last gap is the hardest one. A store-wide profit report tells you whether the month made money. It doesn't tell you which campaigns did. To get there, each order has to be tied to the campaign visit that led to it, for example with UTM tags on your ad links, and then its payment, refunds and costs added up under that campaign. That was the poster's own follow-up in the thread: is the match done per campaign, or for the whole account each week?
An illustrative example
Illustrative example. Made-up figures for one campaign, not a benchmark.
A campaign spends €1,000 in a month, and Ads Manager credits it with €3,000 of purchase value. That's a ROAS of 3.0.
- Payments that cleared from orders tied to the campaign: €2,600.
- Refunds on those orders: €200, leaving €2,400.
- Product and shipping costs on those orders: €1,200, leaving €1,200.
Against €1,000 of spend, that's €200 left before fixed costs. The campaign made a little money. At 3.0 in Ads Manager, it looked like one to scale.
Running into this across several clients?
Thexly shows each client which campaigns brought in payments that cleared, next to what each platform claimed.
A short check you can run this week
1. List last month's campaigns with spend and the purchase value Ads Manager credits to each.
2. For each campaign, add up the payments that cleared from orders tied to its visits.
3. Take out refunds on those orders.
4. Take out product and shipping costs, or multiply by your gross margin if you don't track costs per order.
5. Compare what's left with spend. Above spend means the campaign made money before fixed costs.
If the payments in step 2 are well below what Ads Manager credited, the platform vs payment gap calculator shows how big that gap is.
What the replies got right
The first reply put it simply: "roas is like looking at your speedometer but you forgot about the fuel gauge. it tells you something but not the whole trip"
The same person checks profit per campaign every week, and gave real numbers: "ads manager says 3x roas but after all the deductions you mentioned i end up with maybe 1.2x and that changes everything". The poster's answer was that this is the difference between scaling a campaign and switching it off.
They didn't argue about a good ROAS number. They pointed at the deductions, and at doing the check often enough that a campaign can't drift for months.
Where Thexly fits
Thexly covers step 2. It matches each payment from your payment provider to the campaign visit that led to it, so you can see which campaigns brought in money that cleared. It doesn't know your product or shipping costs, so steps 4 and 5 still need your own margin.
Do you check this every week, or only when something looks off?
Put last month's payments next to what each platform claimed.
See which campaigns brought in payments that cleared, then add your own margin.
No card required.
FAQ