Skip to content

For agencies

The payment gap check

Clients rarely open Ads Manager. They do open Stripe.

So when a client says "we spent €100k with you, which ads made the €300k that hit our bank?", the platform reports don't settle it. Meta and Google can both claim the same sale, and the bank only counted it once. (€100k and €300k are a framing example, not a client result.)

The payment gap check is a small way to answer that on one client before you answer it for the whole book. Here's how we'd run it.

Before you start

Pick a client whose checkout runs through Stripe, Lemon Squeezy, Polar, Dodo or Yolfi. Thexly matches payments from those processors. If the sale happens somewhere else, like a lead form or a call, there's nothing to match yet.

Get the client's OK. You'll be adding a script to their site and connecting their payment processor with a key they create. For a prospect, that conversation is part of the pitch.

Agree the date range up front. You'll use the same dates in Meta, in Google, and in Thexly.

The steps

  1. Add the client as a website in your Thexly account. On the Agency plan each client is its own site, and they all sit under one login.
  2. Install that client's script on their site, before the closing head tag. It's the same snippet with that client's site ID.
  3. Connect their Stripe with a restricted read-only key. The docs list the exact permissions (Checkout Sessions: Read, Webhooks: Write so Thexly can register its own webhook). Other processors have their own connect guides.
  4. Check the ad links. The script picks up fbclid, gclid and UTM tags from the URL on its own, with no Meta or Google account to connect. If Google Ads auto-tagging is off, gclid won't be on the URL, so turn it on or use UTM tags.
  5. Let the window run. Ad clicks are only recorded from the day the script goes live, so start your date range after install.
  6. Pull the platform side yourself. From the client's Ads Manager and Google Ads, export spend and the revenue (conversion value) each platform reports for the window. Same dates, same currency.
  7. Read the Thexly side for the same window: payments collected, how much was matched to Meta clicks, how much to Google clicks, how much to other channels, and what's Unattributed. Revenue diagnostics shows why a payment didn't match.
  8. Build the one table below and create a read-only share link for the client.

What you end up with

One table and one live link.

The payment gap check table, and where each number comes from
LineWhere the number comes from
Meta spendClient's Meta Ads Manager (you export it)
Google spendClient's Google Ads (you export it)
Total ad spendMeta spend + Google spend (adding spend is safe)
Meta reported revenueClient's Meta Ads Manager
Google reported revenueClient's Google Ads
Meta + Google reported, added upShown so the client sees it. Not the total
Payments collectedClient's Stripe, through Thexly
Matched to Meta clicksThexly
Matched to Google clicksThexly
Other channels and UnattributedThexly
GapMeta + Google reported, minus payments collected

Want to size the gap before you install anything? The free platform vs payment gap calculator does the last line from three numbers you type in.

The share link is read-only, needs no login, and shows only that client's numbers. If the client wants to log in, you can invite them as a Viewer on their own site instead.

Using it in a pitch

The prospect isn't your client yet, so the check is about their current setup, not your work.

Something like: "Your Ads Manager and Google Ads add up to more than Stripe collected this month. Here's the part each platform claimed, and here's what the payments say. This is the report we'd give you every week."

Keep it about their numbers. Don't promise a result.

Using it in a renewal

Open the share link in the meeting instead of a deck.

Lead with spend, then the money that hit the bank, then which channel the payments matched to. The two platform reports can sit lower down, each one next to its own spend.

If the gap is big, say so. The client can check every line against their own Stripe, and that's what makes the rest of the meeting easier.

What the check does not do

  • It doesn't pull spend or revenue from Meta or Google. You bring those from the client's ad accounts. Thexly has no Ads API pull and no spend or ROAS sync.
  • It doesn't send anything back to the ad platforms. No CAPI, conversion upload, or passback.
  • It doesn't look back before the script went live. Earlier payments have no ad click to match to.
  • It doesn't change either platform's attribution window or reporting.
  • It doesn't fit lead-gen funnels, or checkouts outside the processors listed above.
  • It isn't a promise about results. It shows the numbers for the dates you picked.

Have you tried putting a client's Stripe next to their ad reports before? We'd like to hear how that meeting went. hello@thexly.com