Skip to main content
Meta × Invoicing SystemRun this yourself

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

  1. 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.

  2. 02

    Written-off invoices never reversed

    Work that was never paid for stays in the reported figure indefinitely because nobody wired the reversal.

  3. 03

    Payment terms longer than the reporting window

    A month judged at month-end is a month that has not finished being paid.

  4. 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. 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. 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. 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. 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. 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

15%+ platform higherUsually the wrong event entirely — invoices are being counted at issue rather than payment, or written-off invoices were never reversed.
20%+ platform lowerUsually 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

  1. 01

    Confirm both numbers cover the same period and channel

  2. 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.

  3. 03

    Written-off invoices never reversed

    Work that was never paid for stays in the reported figure indefinitely because nobody wired the reversal.

  4. 04

    Payment terms longer than the reporting window

    A month judged at month-end is a month that has not finished being paid.

  5. 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

    Get my free conversion tracking audit

    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.

    Free · 30 min

    Found a gap between Meta and your invoicing system?

    Free30 minutesNo obligation