Ads Manager had been reporting 4.1× blended ROAS on this account for six straight weeks. Steady, boring, the kind of number that lets you stop looking. So I stopped looking, until the client's finance lead sent over the Shopify payout report for the same window and asked why it didn't match the revenue in our reporting deck.
It didn't match. Reconciled line by line against what actually landed in the bank, the same six weeks of spend produced 2.6×. Not a rounding difference: the gap between a campaign comfortably funding a second hire and one barely clearing its own costs.
Reconciled against Shopify payouts net of refunds, chargebacks and the processor's rolling reserve, not the order total at checkout.
Where the 1.58× came from
About half of it was the attribution window doing what a 7-day click window always does: crediting orders that would have happened anyway, and crediting some that were later refunded before the payout ever arrived. The other half was returns: a return doesn't just erase the revenue, it erases it a week or two after the campaign already got credit for it, so the two numbers are never looking at the same set of orders in the first place.
The dashboard wasn't lying. It was just answering a different question than the one I was asking.
The one report I open first now
Every account I run gets a standing monthly reconciliation: ad spend against the actual bank payout for the matching window, not the platform's same-day attribution. It takes twenty minutes and it's the only way to catch an over-reporting multiplier drifting before it's cost a quarter of decisions.
If you want to build your own multiplier into a target ROAS rather than discover it by accident, that's exactly what the attribution field in the break-even ROAS calculator is for.