Your Daily Broker P&L Isn’t “Missing”—It’s Unreconciled: A Practical Fees-to-Revenue Playbook
Daily P&L at a forex broker often “breaks” in the same place: fees and revenue lines don’t reconcile across the trading platform, liquidity provider (LP), CRM/IB module, and finance ledger. The result is a daily report nobody trusts—dealing blames finance, finance blames “platform math,” and management flies blind.
This post lays out a practical fees & revenue reconciliation workflow to tie spreads, commissions, swaps, and IB costs back to a daily broker P&L—plus the control checks that catch mismatches early.
1) Define the daily P&L model (before you reconcile anything)
Start by agreeing on the P&L “shape” you’re reconciling to. Most disputes come from mixing cash vs. accrual, realized vs. unrealized, and client-level vs. book-level views.
A workable daily model for brokers is:
- Trading revenue (client-facing):
- Spread revenue
- Commission revenue
- Swap/financing revenue (net)
- Trading costs (execution-facing):
- LP spreads/markups (if applicable)
- LP commissions
- LP swaps/financing
- Bridge/venue fees (where relevant)
- Distribution costs:
- IB/affiliate commissions (CPA, revenue share, hybrid)
- Adjustments & other:
- Negative balance protection / write-offs
- Promotions/rebates
- Manual corrections
Two practical rules that reduce daily chaos:
Pick one “P&L day boundary” (e.g., server time 00:00–23:59) and use it everywhere. If your LP invoices on UTC but your MT server is GMT+2/+3, you need an explicit mapping.
Separate “what clients paid” from “what it cost to execute.” Even if you’re mostly B-book, you still need a consistent framework for when flow is hedged, partially hedged, or routed differently by symbol.
2) Build a single “trade economics” dataset (the reconciliation spine)
Reconciliation gets simpler when you create one daily dataset where each closed trade (and each open position’s swap accrual) has a complete economics record.
At minimum, your dataset should include:
- Trade identifiers: login, ticket/order ID, symbol, side, volume, open/close time
- Price & P/L: open/close price, client profit, points/pips
- Client charges: commission charged, swap charged, any rebates
- Execution context: A-book/B-book flag, LP/venue, bridge route, markup profile
- Expected broker economics fields (computed): expected spread revenue, expected commission revenue, expected swap revenue, expected IB cost
Why this matters: if you try to reconcile using only daily totals, you’ll spend hours arguing about rounding, time windows, and “one-off” adjustments. With trade-level economics, you can explain the delta in minutes.
Implementation note: if you’re pulling from MT4/MT5 (or cTrader/MatchTrader), confirm whether your commission and swap fields are stored as separate ledger entries or embedded in deal records. The extraction method changes the reconciliation logic.
3) Reconcile spreads: from “it should be X” to a provable daily number
Spread revenue is the most misunderstood line because it can mean different things:
- Markup spread (your added markup on top of LP)
- Internalization spread (B-book gain/loss from client execution vs. reference price)
- Hybrid (some flow hedged, some internalized)
A practical daily spread reconciliation approach:
For A-booked trades: define spread revenue as configured markup × volume (or explicit markup rules per symbol/account group). Then reconcile:
- Expected markup revenue (from configuration + trade volume)
- Versus realized revenue in your platform/bridge reporting
- Versus LP execution costs (LP spread/commission) for the same trades
For B-booked trades: avoid calling it “spread revenue” if what you’re really measuring is dealing P&L. In B-book, the broker’s economics are driven by client trading outcomes plus any internal pricing model. Reconcile B-book P&L separately as:
- Client trading P/L (opposite sign)
- Minus client swaps/commissions (depending on how you present P&L)
- Plus/minus any risk adjustments (NDM, re-quotes, slippage policies)
Control checks that catch spread issues fast:
- Markup revenue by symbol vs. expected markup profile
- Markup revenue by account group (Standard/ECN/VIP)
- “Zero markup” accounts accidentally assigned to markup group (or vice versa)
4) Reconcile commissions: align platform postings, rebates, and finance rules
Commission reconciliation fails when different teams use different definitions:
- Ops/dealing uses commission charged per trade
- Finance uses net commission after rebates/discounts
- Sales uses commission-based rebates as marketing cost
A daily commission reconciliation workflow:
- Step 1: Sum client commissions from trade/deal records (closed trades for the day).
- Step 2: Subtract commission rebates (if you run rebates) and classify them explicitly:
- Rebate as reduction of revenue (netting)
- Or rebate as marketing expense (grossing)
- Step 3: Reconcile to cash ledger postings (if commissions are posted immediately) or accrual (if posted on close only).
Common failure points:
- Commission currency conversion (account currency vs. base currency)
- Partial closes creating multiple deal records
- Commission charged on open vs. close (varies by setup)
A simple control that works: track commission per million (or per lot) by symbol/account group daily. Sudden shifts usually indicate configuration drift or a reporting extraction change.
5) Reconcile swaps/financing: the “slow leak” that ruins monthly close
Swaps are where daily P&L quietly diverges from LP reality. Even if the daily delta is small, it compounds.
A robust daily swap reconciliation uses three layers:
- Client swap accrual: what you charged/paid clients for overnight financing (including triple-swap rules).
- LP swap accrual: what your LP charged/paid you for hedged exposure (for A-book flow).
- Residual swap exposure: what remains unhedged (B-book or partial hedge) and should be treated as part of dealing P&L or internal funding cost.
Practical checks:
- Swap totals by symbol and direction (long vs. short)
- Triple-swap day alignment (your server day vs. LP day)
- Symbol contract spec changes (swap rates updated, day count, holidays)
If you operate in multiple jurisdictions or client types, document how swaps are disclosed and applied, and check local regulations on financing/rollover disclosures. When in doubt, align your operational logic with your compliance team’s guidance.
6) Reconcile IB costs: convert “promised payouts” into daily, auditable expense
IB costs are often the biggest reconciliation gap because the “truth” lives in multiple places:
- CRM/IB module (agreements, tiers, eligibility rules)
- Trading platform (trade volume and commission base)
- Finance (payout timing, holds, chargebacks)
To tie IB costs back to daily P&L, treat IB as a daily accrual, not just a payout event:
- Step 1: Calculate IB earned for the day based on:
- Eligible volume / commission base
- Tier rules (multi-level, symbol-specific, account group rules)
- Exclusions (bonus accounts, internal accounts, restricted countries)
- Step 2: Split into:
- Accrued payable (earned but not yet paid)
- Paid (cash out today)
- Reversed/adjusted (chargebacks, fraud reversals, negative carry)
- Step 3: Reconcile daily accrual totals to:
- CRM-calculated commissions
- Finance ledger movement in IB payable
- Actual payout transactions
Controls that prevent end-of-month surprises:
- IB cost as % of net trading revenue (daily trend)
- Top 20 IBs daily accrual vs. expected tier rate
- Multi-tier “leak” check (downline credited twice, or wrong upline mapping)
7) The daily close checklist (what to run every day in under 30 minutes)
Once the logic is defined, daily close becomes a repeatable routine. Here’s a practical checklist you can standardize across ops and finance:
- Data completeness
- All deals for the day extracted (including partial closes)
- All swap postings captured for positions held overnight
- FX rates snapshot used for conversion is stored and consistent
- Revenue lines
- Spread/markup revenue matches expected configuration totals
- Commission revenue (gross and net) matches platform postings
- Swap revenue matches client postings and day boundary rules
- Cost lines
- LP commissions/swaps aligned to hedged trades (A-book set)
- IB accrual posted (earned today), with reversals tracked separately
- Exception handling
- Manual adjustments logged with reason + approver
- Large outliers (symbol/account/IB) explained in notes
If you want one metric to rule them all: track a daily “reconciliation delta” (absolute and % of revenue). Your goal isn’t perfection on day one—it’s making deltas small, explainable, and trending down.
The Bottom Line
Daily fees & revenue reconciliation is less about “better reporting” and more about having one defensible source of truth for spreads, commissions, swaps, and IB costs.
Define the P&L model, build trade-level economics, reconcile each fee line with clear boundaries, and treat IB as a daily accrual—not just a payout.
When your daily close is consistent, month-end becomes a formality. If you want to operationalize this workflow across CRM, trading platforms, and risk/backoffice reporting, start here: /get-started.