You're running Meta Ads. ROAS says 3x. Your ad manager says the campaigns are crushing it. But your bank account tells a different story—it's flat, or worse, it's going down. You're not imagining things. A "good" ROAS and actual money loss can absolutely coexist, and it's more common than most operators think. The gap between attributed ROAS and real profitability has specific, diagnosable causes. Here's where to look.
For the foundational explanation of why ROAS doesn't equal profitability, see why ROAS lies and what to use instead. This post focuses on diagnosing the specific leaks that make a "good" ROAS unprofitable.
The five places your margin disappears
1. Processing fees
Stripe charges 2.9% + 30¢ per transaction. On a $97 course sale, that's $3.11. Doesn't sound like much—until you do the math across volume:
| Daily sales | Revenue | Stripe fees | % of revenue |
|---|---|---|---|
| 10 sales × $97 | $970 | $31.13 | 3.2% |
| 30 sales × $97 | $2,910 | $93.39 | 3.2% |
| 50 sales × $47 | $2,350 | $83.50 | 3.6% |
At lower price points, fees take a bigger percentage. If your ROAS calculation uses gross revenue (what Meta attributes), it doesn't subtract these fees. Your real revenue is 3-4% lower than ROAS thinks.
2. Refunds
If you sell courses or coaching with a 14-30 day refund policy, some of those "conversions" in Meta come back as refunds. A 5% refund rate on $3,000/day in revenue is $150/day in lost cash. But ROAS still counted those sales when they happened.
Worse: refunds don't hit on the same day as the original sale. They reduce future Stripe payouts, so the cash flow impact is delayed and hard to spot. For more on this, see how refunds are secretly killing your daily profit.
3. Payout timing
ROAS treats revenue as instant. Your bank account doesn't. A sale on Monday might not land in your bank until Wednesday or Thursday (Stripe's standard payout schedule). Meanwhile, Meta charged your ad spend in real time. So you're spending cash today against revenue you won't see for days.
This creates a gap where ROAS looks great but your bank balance is declining because cash out (ad spend) is immediate and cash in (payouts) is delayed. See Stripe payout timing and why daily numbers look wrong for a deeper explanation.
4. Overhead costs
ROAS = Revenue / Ad Spend. That's it. It doesn't include:
- Your $149/month platform fee ($5/day)
- Your $500/month VA ($17/day)
- Your $99/month email tool ($3/day)
- Software, hosting, insurance, and everything else
A 3x ROAS means you make $3 in attributed revenue for every $1 in ad spend. But if $0.80 of that $3 goes to fees, refunds, and overhead, your actual return is $2.20—not $3. At lower ROAS, overhead alone can push you negative. See turning monthly expenses into a daily number for how to quantify this.
5. Attribution inflation
Meta's attribution model credits conversions to your ads based on click and view windows (default: 7-day click, 1-day view). Some of those attributed conversions would have happened anyway—organic traffic, returning customers, brand searches. So "3x ROAS" might really be 2x or 2.5x in actual incremental revenue. Combine attribution inflation with the other four leaks, and a 3x ROAS can easily mean break-even or worse.
ROAS looks great — but did you actually make money?
Try NetDay freeFree 7-day trial · No credit card required
How to diagnose your situation
Instead of guessing which leak is biggest, use cash in minus cash out by calendar day:
- Cash in: What actually landed in your bank that day (Stripe payouts by settlement date, PayPal transfers)
- Cash out: Ad spend charged that day + refunds + chargebacks + fees + daily overhead
- Daily net: Cash in minus cash out
If your ROAS is 3x but your daily net is consistently red or break-even, the leaks above are the reason. The daily net tells you the truth—no attribution, no modeling, just money in vs money out.
Quick diagnostic: If your ROAS is 3x and you're not profitable, work backwards. $1 in ad spend → $3 attributed revenue → minus ~$0.10 fees → minus ~$0.15 refunds → minus ~$0.25 overhead per dollar → $2.50 real revenue per $1 spent. At 2.5x, some days will be negative depending on volume and timing.
What a healthy margin actually looks like
For ad-dependent businesses, here's a rough guide:
- ROAS 2x or below: Almost certainly losing money after fees, refunds, and overhead
- ROAS 2.5–3x: Break-even territory once all costs are included—some days green, some red
- ROAS 3.5x+: Likely profitable, but confirm with daily cash-day net
These ranges shift based on your overhead, refund rate, and price point. The only way to know for sure is to measure actual cash flow, not attributed revenue.
How NetDay shows you the real number
NetDay connects to Stripe, Meta Ads, and PayPal (read-only) and shows you:
- Daily cash in: Stripe payouts + PayPal transfers by settlement date
- Daily cash out: Meta ad spend + refunds + fees + your overhead costs
- Daily verdict: Green (profitable), red (loss), or break-even—after all costs
So instead of looking at ROAS in Meta and wondering why your bank account doesn't agree, you see the actual daily net. The number that tells you if yesterday's ads made real money—or just looked like they did.
Common questions
Why am I losing money with a good ROAS?
ROAS only measures attributed revenue per dollar of ad spend. It ignores refunds, chargebacks, processing fees, payout timing, and overhead costs. A 3x ROAS means Meta attributes $3 in revenue for every $1 spent—but after fees, refunds, and overhead, the actual cash left can be negative.
What costs does ROAS miss?
ROAS misses processing fees (2.9% + 30¢ per transaction on Stripe), refunds and chargebacks, payout timing delays, overhead costs (software, contractors, tools), and the difference between attributed revenue and actual cash received.
How do I find out if I'm actually profitable?
Use cash in minus cash out by calendar day instead of ROAS. Cash in = Stripe payouts that landed that day. Cash out = ad spend + refunds + fees + overhead. If the result is positive, you made money. NetDay calculates this automatically.
A "good" ROAS doesn't mean you're making money. Fees, refunds, timing, and overhead can erase your margin. Try NetDay free for 7 days to see your real daily profit—not just what Meta's attribution model tells you.

Written by
MalikFounder
Founder of NetDay. Builds tools for operators who run paid traffic and need to know if they made money yesterday.
Related Articles

Why ROAS Lies (And What to Look At Instead for Real Profitability)
Your ROAS says 3x but your bank account disagrees. Here's exactly why ROAS misleads ad-dependent businesses—and the metric that actually shows daily profit.

How to Track Profit for Your Whop Products
Whop shows your sales. It doesn't tell you if your ads are profitable. Here's how to track daily P&L for Whop sellers running paid traffic.


Running Meta Ads and Stripe? How to Avoid Month-End Surprises
Your Meta Ads and Stripe numbers look great all month—then the bank tells a different story. Here's why it happens and how to catch it before day 30.

Generate clarity from your cash — automatically.
Stop guessing if ads made money. NetDay shows your real cash in and out by day.
- 30-day money-back guarantee
- Real cash movements by day
- Cancel anytime