Agency ad accounts for media buying: balance and fees
How teams work through agency ad accounts for Meta and TikTok: top-ups, fee rates by date, matching the agency balance to spend, bans and replacements.
CRMGuidesFinance9 min read

How a media buying team closes the month: income, ad spend, agency fees, salaries and bonuses in one journal, profit vs cash flow, and USDT wallets.

The P&L of a media buying team is one table for a month: what the partners owe you for the traffic you sent, minus ad spend, agency fees, tools, salaries and bonuses, which leaves net profit. To close the month, put every one of those lines into a single journal with a date, an amount and a category, read the P&L from that journal, and then read cash flow separately, because profit is what you earned and cash is what moved. Teams that keep this in spreadsheets spend days matching files. Teams with one journal spend an hour checking it.
A buying team is closer to a small trading business than to an agency: it buys traffic and sells results to advertisers. The lines are few, but each one comes from a different place.
| Line | Where the number lives | Common trap |
|---|---|---|
| Income from partners | Advertiser or affiliate network statements, the tracker | Counting pending conversions as income |
| Ad spend | Meta and TikTok cabinets, or agency statements | Spend from several currencies, time zones or accounts |
| Agency fees | The agency contract and its top-up history | A fee rate that changed mid-month |
| Other direct costs | Proxies, anti-detect browsers, creatives, tools | Paid once a year, so forgotten in a month |
| Salaries | The compensation plan | Paid in a different currency or period than earned |
| Bonuses | The bonus rule of the team | Calculated on revenue before the month is final |
Two choices need to be made once, in writing. First, income is booked either when the advertiser confirms it or when the money arrives. The first shows the real month, the second shows cash. Second, the team’s own costs and any client money are kept apart. Agency accountants advise leaving pass-through budgets out of revenue, since otherwise the margin looks distorted. A buying team spending its own money has no pass-through, but a team that buys traffic for another company does.
Keep the P&L and the per-buyer view consistent. If the profit per media buyer report shows a higher team profit than the P&L, the difference should be explainable by lines that only exist in the P&L: salaries, bonuses, tools and fees outside the cabinet.
The usual setup is one file for partner income, one for spend and top-ups, and one for payroll. Closing the month means matching them by hand: which top-up paid for which spend, which payout belongs to which partner, which bonus was calculated on which revenue. The work is not hard but it is error-prone, and the errors are quiet.
A journal replaces the three files with one list of entries. Each entry has a date, an amount, a currency, a category (income, spend, agency fee, salary, bonus, tools), a partner or counterparty and an account or wallet. Everything else is a view:
Closing steps that work with a journal:
The order matters. Reconcile balances before you look at profit, because a wrong balance means a missing entry, and a missing entry changes profit.
A P&L records what was earned and spent in substance, regardless of when the money moved. As one agency finance guide puts it, fees paid in advance can make an account look full without adding to this month’s income, and work completed but not yet paid counts as income before the money arrives. The movement of money is a separate story, and cash flow shows it.
For a buying team there are two standing gaps: money partners owe you, and money you have paid to an agency or an ad account that has not been spent yet. Here is an example with invented figures, in one currency.
| P&L for the month | Amount |
|---|---|
| Income from partners, confirmed | 118,000 |
| Ad spend | -71,000 |
| Agency fees | -4,260 |
| Tools and proxies | -3,000 |
| Salaries | -14,000 |
| Bonuses | -6,500 |
| Net profit | 19,240 |
That is a net margin of about 16 percent. Now the same month as cash.
| Cash for the month | Amount |
|---|---|
| Received from partners | 92,000 |
| Top-ups sent to agencies | -80,000 |
| Tools, salaries, bonuses | -23,500 |
| Net cash | -11,500 |
The team made 19,240 and its cash fell by 11,500. The gap of 30,740 has two parts: 26,000 that partners confirmed but have not paid yet, and 4,740 sitting on the agency balance as an unspent top-up. Neither is a loss. But if the team spends the bonuses from the profit line while the cash is negative, it will be short the next week. This is why you keep both views and look at both before paying anyone.
Many teams receive from partners and pay agencies in USDT, so the team holds wallets, not only bank accounts. A wallet needs the same discipline as an account: every movement is an entry, and the balance of the journal must equal the balance of the wallet.
Practical rules:
None of this needs a special tool, but the check is the part people skip when the month is busy. A gap that is found on the 3rd is a question. A gap that is found three months later is an investigation.
DarkCore CRM keeps the money of the team in one journal: what partners pay, what traffic and agents cost, what people earn. P&L and cash flow are read from it, grouped by category, partner or account, for a month or any period, so they are not rebuilt each month. Ad spend in the P&L comes from the same synced Meta and TikTok spend and agency costs that the reports use, so the profit of the buyers and the profit of the team agree. Agency deposits, fee rates by date and the balance of each agent are kept in the journal, together with a reconciliation of what partners owe and what they paid. Salaries are counted by compensation plans and land in the same journal. Wallets are checked on-chain: the USD entries of a wallet are compared with its USDT balance on the chain, so a gap shows before the close.
The limits are plain. Finance is a pack that is turned on for the teams that need it, not part of every CRM. The pages of the site do not describe tax returns or bank statement imports, so keep your accountant’s tools for those. The site shows no prices, and a demo is booked in Telegram.
It is a profit and loss statement for a period, usually a month: income from partners minus ad spend, agency fees, tools, salaries and bonuses. It shows whether the team earned money, and which lines took it.
Because profit and cash are different. Money that partners confirmed but have not paid, and money you have topped up to an agency but not yet spent, sit between the two. Read cash flow next to the P&L and explain the gap before paying out bonuses.
Check the wallets and ad balances weekly, and close the P&L once a month, as soon as partner statements for the month are final. A short weekly check keeps the real close from turning into a search for old mistakes.
How teams work through agency ad accounts for Meta and TikTok: top-ups, fee rates by date, matching the agency balance to spend, bans and replacements.
CRMGuidesFinance9 min read

How to manage offer caps per GEO and per buyer: what to count (installs, registrations, FTD, budget), which period, and what to do when a cap fills.
CRMGuides8 min read

What a CRM for media buying and affiliate teams must do, how spreadsheets, Notion, in-house builds and specialised tools compare, and how to choose.
CRMGuidesComparisons8 min read
