Marketing Agency Bookkeeping: Ad Platform Invoices, Client Rebilling, and Pass-Through Spend
How a marketing agency should keep its books: collecting ad-platform and SaaS invoices, separating pass-through media from fee revenue, rebilling clients with evidence, and closing cleanly.

Marketing agency bookkeeping is the discipline of attributing every invoice to a client or to the agency itself, separating pass-through media spend from the agency's own revenue and costs, and rebilling clients with the platform invoice as evidence. It is hard for two structural reasons: much of the money moving through the bank account is not the agency's, and its vendors are dozens of ad platforms and SaaS tools that each deliver invoices their own way.
Why do agency books get messy?
A twelve-person agency might run Google Ads, Meta, LinkedIn, and TikTok campaigns for fifteen clients, bill retainers and project fees, pay a dozen freelancers, and subscribe to thirty tools: design, analytics, SEO, project management, reporting, stock media, and the ad platforms' own paid features. Each platform bills per ad account or per seat. Google Ads issues a document per account; unless consolidated billing is set up, an agency with fifteen client accounts under a manager account gets fifteen sets of invoices. Meta issues receipts per ad account. The SaaS tools bill monthly to whichever card was handy when someone signed up.
Three problems follow:
- Attribution. An invoice from a platform says which ad account it covers, not which client, and the person entering it may not know. Agency software invoices often cover seats used across clients.
- Pass-through confusion. Media paid by the agency on a client's behalf runs through the agency's bank account and looks like an expense, then the rebill looks like revenue. If both are recorded gross without a clear structure, the agency's revenue is inflated by money that was never its own, and margin analysis is meaningless.
- Quarter-end scramble. Nobody collects the platform invoices until a client asks for them, the CPA asks for them, or a payment does not match the bank. By then there are three months of documents across twenty portals to find.
The remedy is a bookkeeping structure that makes attribution a one-time decision per vendor and client, plus a capture process that gets the invoices into one place as they arrive.
Pass-through spend: gross or net?
This is the accounting question agency owners most often get wrong, and it changes the top line of the P&L.
Under US GAAP, revenue from contracts with customers (ASC 606) requires an entity to decide for each promised good or service whether it is a principal, which controls the good or service before transferring it to the customer and records revenue at the gross amount, or an agent, which arranges for another party to provide it and records only its fee or commission. The FASB's ASU 2016-08 clarified that the assessment turns on control, is made per specified good or service, and that a single contract can contain both principal and agent elements. The update notes that the indicators (who is primarily responsible, who bears inventory risk, who has discretion over the price) support the control assessment and may be more or less relevant or persuasive depending on the contract.
What this means for an agency, in practical terms:
| Arrangement | Likely treatment | What hits revenue |
|---|---|---|
| Client's card is on the ad account; agency never pays the platform | Agent for media; principal for its services | Agency fee only |
| Agency pays platform, rebills client at cost, client directs spend and bears risk | Usually agent for media | Agency fee or markup only; media in and out net to zero |
| Agency buys media on its own account, sets the price to the client, bears the risk of unused or wasted spend | May be principal for media | Gross media plus fee, with media cost as cost of sales |
The assessment requires judgment and depends on contract terms, so confirm the treatment with your CPA before setting up the books. The bookkeeping consequence is the same either way: pass-through media needs its own accounts so it can be presented gross or net as the treatment requires, and every platform invoice needs to be captured because it is the evidence for both the client rebill and the agency's own records.
A chart of accounts that keeps pass-through separate
Keep the structure simple and let a class, tracking category, or tag carry client attribution rather than creating an account per client.
| Group | Accounts | Notes |
|---|---|---|
| Revenue | Retainer fees; Project fees; Media management fees or markup | The agency's own revenue |
| Pass-through (if agent) | Media rebilled to clients; Media paid to platforms | Should net to the markup, or to zero if rebilled at cost |
| Direct client costs | Contractors and freelancers; Client-specific software and licenses; Stock media and production | Attributed to a client via class or tag |
| Agency operating costs | Agency software; Payroll; Rent; Professional fees; Marketing | Not attributed to a client |
In QuickBooks Online, use Classes (available on Plus and Advanced) or Customers on expense lines for attribution. In Xero, use a tracking category called Client. The rule for the bookkeeper is: no media or direct-cost transaction posts without a client attribution, and no agency overhead posts with one.
Collecting ad-platform invoices without the scramble
The invoices exist; the problem is that they are in twenty places. The fix is to make them arrive in one.
Step 1: Route every billing email to one inbox. For each ad account and each SaaS tool, set the billing contact or notification email to a dedicated address the bookkeeper controls (for example, billing@ on the agency domain). Google Ads lets you add billing contacts per payments profile; Meta lets you set a business email for receipts. Doing this once per account ends the "it went to the account manager who left" problem.
Step 2: Connect that inbox read-only to a capture tool. Inbox Ledger connects to Gmail, Outlook, or IMAP with read-only access, finds invoices and receipts, extracts the data with AI, matches them to bank statement transactions, and pushes bills to QuickBooks Online or Xero. For an agency, the relevant details: it reads invoices that arrive as PDF attachments and, on paid plans, invoices embedded in the email body with no attachment, which is how many platforms and SaaS vendors send receipts. Rules let you tag documents by sender or by subject (an invoice whose subject contains a client's account ID gets that client's tag automatically), set a consistent vendor name for a sender whose invoices vary, and exclude senders that should never enter the books. The same invoice forwarded twice is flagged as a duplicate rather than entered twice.
Step 3: Handle the portal-only platforms on a schedule. Some documents are only in the portal and the email is just a notification. Google Ads invoices live under Billing, then Documents, per account (as of October 2026); our guide on how to download Google Ads invoices gives the path, and the Meta Ads guide covers Business settings billing. Download monthly, on the same day, and forward the PDFs into the billing inbox so they land in the same stream. The portal guides for Google Ads, Meta Ads, and LinkedIn Ads are kept current for the menu paths; agency tool invoices such as HubSpot, Canva, and Adobe Creative Cloud have their own pages.
Step 4: Match every platform payment to its invoice. Ad platforms charge the card in thresholds and on dates that do not line up with invoice periods. A reconciliation that matches each bank or card transaction to the invoice it settled, with a date window and a confidence score, is what turns "Google charged us $4,217.33 on the 14th" into "that was client X's August media, invoice number so-and-so." The reconciliation feature page describes how that match works; our bank reconciliation guide covers the monthly procedure.
Rebilling clients with evidence
Rebill from the platform invoice, at the invoiced amount, in the period the platform invoiced, with your fee or markup as a separate line. Attach the platform invoice or reference its number and the ad account ID.
Why not from the dashboard? Dashboard spend is a near-real-time estimate. Invoiced spend is what the platform actually charged, after credits, adjustments, and tax. The two differ by timing (a campaign that ran on the 31st appears in next month's invoice), by credits (promotional credits and refunds for invalid traffic), and by tax treatment. When an agency rebills $12,400 from the dashboard and the client's own finance team sees $12,085 on the platform invoice they can download, the agency has a dispute and a trust problem.
A worked example, illustrative only. An agency manages Google Ads and Meta for a client at a 12 percent management fee on media.
| Line | Source document | Amount |
|---|---|---|
| Google Ads media, September, account 123-456-7890 | Google Ads invoice (Billing, Documents) | $8,460.00 |
| Meta Ads media, September, ad account 9876 | Meta receipt (Billing) | $3,625.00 |
| Media subtotal (pass-through) | $12,085.00 | |
| Media management fee, 12 percent | Agency calculation | $1,450.20 |
| Retainer, September | Contract | $3,000.00 |
| Total | $16,535.20 |
The two platform invoices are attached. If the client questions the $8,460.00, the evidence is the platform's own document, not an export. If the agency is an agent for the media, $12,085.00 runs through the pass-through accounts and nets against the platform payments; the agency's revenue for the month on this client is $4,450.20.
Monthly close for an agency
The agency close follows the standard month-end close checklist with two additions.
Pass-through reconciliation. Media paid to platforms in the month should equal media rebilled to clients in the month, with the difference listed and explained: a platform invoice that arrived after the client invoice went out, a credit the platform issued that has not been passed through, a client account where the client pays the platform directly. If the pass-through accounts do not net to the expected markup, an invoice is missing or a rebill is wrong.
Client-level margin. With attribution in place, run a P&L by class or tracking category. Fee revenue minus direct client costs, by client. This is the report that tells you which retainers are underwater once contractor hours and client-specific tools are counted. It is only as accurate as the attribution on every invoice, which is why the capture rules that tag by client matter.
Quarterly, review the vendor list for duplicates and name variants (the same SaaS tool appears under two names when two people signed up), and check subscriptions nobody uses. The Money Found alerts in Inbox Ledger flag a recurring vendor whose latest invoice is at least 10 percent and at least $5 higher than the previous one, which catches a seat count that grew or a plan that was upgraded without anyone deciding to.
Start for free and extract your first 10 invoices without a credit card.
The agency bookkeeping routine, on one page
| Cadence | Task | Output |
|---|---|---|
| Once per account | Set billing contact to the shared billing inbox; set a capture rule that tags the sender to the client | Invoices arrive attributed |
| Weekly | Review newly captured invoices for missing attribution; confirm matches to card and bank transactions | No unattributed media or direct costs |
| Monthly | Download portal-only invoices; issue client rebills from platform invoices; reconcile pass-through; close | Client invoices with evidence; pass-through nets as expected |
| Quarterly | Vendor list cleanup; subscription review; client margin review | Fewer tools, truer margins |
Agencies that run e-commerce clients will recognize the same pattern on the client side: a chaotic vendor stack of platforms, marketplaces, and apps where reconciliation at quarter end is the pain. Our e-commerce bookkeeping guide covers that side, and the capture-and-match approach is the same. For how the capture layer sits in front of QuickBooks Online or Xero without replacing them, see AP automation for QuickBooks and Xero.
Marketing agency bookkeeping comes down to one question asked of every invoice: whose is this, and is it ours? Build the accounts so the answer has a place to go, route the invoices so the question is asked once at capture rather than at quarter end, and rebill from the documents the platform wrote rather than the numbers it displayed.