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.

Documents from several sources flowing into one open ledger book and splitting into two separate output streams

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:

ArrangementLikely treatmentWhat hits revenue
Client's card is on the ad account; agency never pays the platformAgent for media; principal for its servicesAgency fee only
Agency pays platform, rebills client at cost, client directs spend and bears riskUsually agent for mediaAgency 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 spendMay be principal for mediaGross 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.

GroupAccountsNotes
RevenueRetainer fees; Project fees; Media management fees or markupThe agency's own revenue
Pass-through (if agent)Media rebilled to clients; Media paid to platformsShould net to the markup, or to zero if rebilled at cost
Direct client costsContractors and freelancers; Client-specific software and licenses; Stock media and productionAttributed to a client via class or tag
Agency operating costsAgency software; Payroll; Rent; Professional fees; MarketingNot 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.

LineSource documentAmount
Google Ads media, September, account 123-456-7890Google Ads invoice (Billing, Documents)$8,460.00
Meta Ads media, September, ad account 9876Meta receipt (Billing)$3,625.00
Media subtotal (pass-through)$12,085.00
Media management fee, 12 percentAgency calculation$1,450.20
Retainer, SeptemberContract$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

CadenceTaskOutput
Once per accountSet billing contact to the shared billing inbox; set a capture rule that tags the sender to the clientInvoices arrive attributed
WeeklyReview newly captured invoices for missing attribution; confirm matches to card and bank transactionsNo unattributed media or direct costs
MonthlyDownload portal-only invoices; issue client rebills from platform invoices; reconcile pass-through; closeClient invoices with evidence; pass-through nets as expected
QuarterlyVendor list cleanup; subscription review; client margin reviewFewer 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.