How to reconcile Meta Ads against your invoicing system
This is the check we run first on every account, written out so you can run it without us. It takes about thirty minutes and needs two numbers: what Meta says it produced, and what your invoicing system actually shows. The gap between them is the only honest measure of whether your tracking works — and if it comes back small, you do not need us.
Free30 minutesNo obligation
Specific to Meta × Invoicing System
Meta vs paid invoices: billing emails rarely match the lead
Meta has no field that survives into an invoice, so match on the hashed email or phone of the person who submitted the lead and compare paid invoices by payment date. Meta's 7-day click and 1-day view default sits far inside most sales cycles plus payment terms, so Meta under-crediting invoiced revenue is normal for services.
The fbclid and _fbc cookie live in the browser and are gone long before anyone raises an invoice. The usable join is the hashed email or phone sent through the Conversions API, and here it breaks in a specific way: the lead is often a marketing manager while the invoice goes to finance@ or a bookkeeper. Store the original lead email on the client record so you can send that address, not the billing contact, when the invoice is paid.
With a 7-day click window, an invoice paid sixty days after the first click is outside attribution entirely unless you send an earlier event. View-through also inflates the other direction: Meta credits people who saw an ad and later filled in a form for reasons that had nothing to do with it. In Ads Manager, switch the attribution setting comparison so you can see click-only results next to the default before comparing anything with your paid invoices.
If you run Meta lead ads, the form data sits on Meta's side and the client record in your invoicing tool may never have been linked back to it. Meta reporting far more leads than you have paying clients is normal; Meta reporting purchase value that exceeds your received payments usually means a pixel event is firing on a proposal or quote page rather than on payment.
Meta × Invoicing System · what breaks
Why Meta and your invoicing system disagree
- 01
Invoices sent counted as revenue earned
On thirty-day terms, issue date and payment date are different months. Reporting at issue books income you have not received.
- 02
Written-off invoices never reversed
Work that was never paid for stays in the reported figure indefinitely because nobody wired the reversal.
- 03
Payment terms longer than the reporting window
A month judged at month-end is a month that has not finished being paid.
- 04
Delivery cost absent
In services, revenue without the hours that produced it is half the picture. A large low-margin client can look like your best campaign result.
Meta × Invoicing System · the fix
What you get from this — Meta × Invoicing System
A number instead of a suspicion
The likely cause, narrowed
A basis for deciding
Meta × Invoicing System · architecture
What each side is actually counting — Meta × Invoicing System
- 1
What Meta counts
event_name from the standard set with exact casing, event_time in seconds, a shared event_id, an action_source, and hashed user_data that was normalized before hashing. Purchase additionally requires value and currency.
- 2
How Meta attributes it
fbclid arrives on the landing URL and is normally written into the _fbc cookie. If it isn't captured on landing, _fbc never exists — and _fbc is the strongest click signal Meta has, so its absence caps your match quality regardless of what else you send. Forward _fbp too, from the browser rather than regenerating it server-side.
- 3
The window it uses
Meta's default attribution is a 7-day click and 1-day view. View-through is included by default, which is a large part of why Meta claims more conversions than your other platforms — that overlap is expected rather than a fault.
- 4
What your invoicing system counts
Invoices actually paid, by payment date rather than issue date, found in QuickBooks, Xero, FreshBooks, Zoho Books or whatever raises your invoices.
- 5
The filter that makes them comparable
Status is paid — not sent, not overdue, not written off.
Meta × Invoicing System · events
Reading the gap — Meta × Invoicing System
| What you see | What it usually means |
|---|---|
| 15%+ platform higher | Usually the wrong event entirely — invoices are being counted at issue rather than payment, or written-off invoices were never reversed. |
| 20%+ platform lower | Usually structural — the platform is missing work it produced — usually a sales cycle plus payment terms exceeding the attribution window. |
Meta × Invoicing System · diagnose
Diagnostic order — Meta × Invoicing System
- 01
Confirm both numbers cover the same period and channel
- 02
Invoices sent counted as revenue earned
On thirty-day terms, issue date and payment date are different months. Reporting at issue books income you have not received.
- 03
Written-off invoices never reversed
Work that was never paid for stays in the reported figure indefinitely because nobody wired the reversal.
- 04
Payment terms longer than the reporting window
A month judged at month-end is a month that has not finished being paid.
- 05
Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Match quality is where most Meta accounts lose attribution, and it's almost always normalization rather than coverage. An email hashed with a capital letter, or a phone hashed with brackets, produces a perfectly valid hash that matches nobody and errors nowhere. Normalize first, then hash, and read the score per event rather than overall.
Meta × Invoicing System · prove
How to know you did it right — Meta × Invoicing System
Source of truth
your invoicing system — paid invoices for a fully closed month
Meta × Invoicing System · free audit
What we check in the free audit
- Confirm both numbers cover the same period and channel
- Invoices sent counted as revenue earned
- Written-off invoices never reversed
- Payment terms longer than the reporting window
- Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Checked against
your invoicing system — paid invoices for a fully closed month
Free30 minutesNo obligation
Meta × Invoicing System · when not to buy
When the answer is that you do not need us — Meta × Invoicing System
- If almost all of your paid invoices come from a channel with no click behind it, no tracking work will reach them — and knowing that is worth more than a build.
- If you're advertising a business type Meta restricts data collection for — health being the obvious one — the parameters you can legitimately send are narrower, and that constraint should shape the build rather than be worked around.
Meta × Invoicing System · what we deliver
The method, step by step — Meta × Invoicing System
Pull what Meta reports
The deduplicated indicator and the per-event match quality score, both read over seven days.
Pull what your invoicing system shows
Export invoices by payment date for a window longer than your payment terms, at the amount received after processing fees.
Filter both to the same thing
Status is paid — not sent, not overdue, not written off.
Compare per record, not on totals
FAQ
Meta × Invoicing System questions, answered
Check Meta's current limit on how old a server event can be before relying on it. For long cycles, send a qualified-lead event early and treat the paid invoice as a value signal rather than the primary optimization event.
View-through attribution credits anyone who saw an ad before converting, including referrals. Compare click-only numbers and tag the source when the client is created.
Because you should know the size of the problem before anyone quotes you for it. If the gap is small, you have saved yourself a purchase. If it is large, you now know what you are buying rather than taking our word for it.
No. Both numbers come from systems you already own and neither leaves them. There is no tool to sign up for and nothing to upload.
Then compare totals for a closed period and treat the result as directional rather than exact. The deduplicated indicator and the per-event match quality score, both read over seven days is still the right place to read the platform's side.
Under five percent is working. Five to fifteen usually means reversals are missing. Above twenty is normally the wrong event being counted, not a broken tag — which is why debugging tags first wastes so much time.
Then fix the filter before drawing any conclusion. Status is paid — not sent, not overdue, not written off. A mismatch in scope produces a gap that looks like a tracking fault and is not one.
Book the free thirty-minute call and bring both numbers. We will tell you which of the causes above it is, and whether it is something you can fix yourself — which it sometimes is.
More on Meta × Invoicing System
- Google Ads × Invoicing SystemHow to reconcile Google Ads against your invoicing system
- Meta × Appointment SystemHow to reconcile Meta Ads against your practice or scheduling system
- Meta × Booking SystemHow to reconcile Meta Ads against your booking or reservation system
RELATED GUIDES
Systems of record beside invoicing system, and the funnels it settles
- Meta × Enrolment SystemHow to reconcile Meta Ads against your application or enrolment system
- Meta × Job SystemHow to reconcile Meta Ads against your job management system
- Meta · RFP → awardHow to track RFP submission to contract award for Meta Ads
- Meta · Quote → closed jobHow to track quote request to closed job for Meta Ads
- Meta · FencingMeta Ads conversion tracking for fencing contractors
- Meta · Home securityMeta Ads conversion tracking for home security companies
- Filevine → MetaConnecting Filevine to Meta Conversions API
- Jobber → MetaConnecting Jobber to Meta Conversions API
Free · 30 min
Found a gap between Meta and your invoicing system?
Free30 minutesNo obligation
