Advisory Fee Statements: Showing How the Fee Was Calculated
Summary
A fee statement that shows only a total invites a phone call. Clients need the fee basis, the tiers that applied, any mid-period adjustment and the charge per account, and the figures have to add up to the cent. The calculation belongs in the billing system; the document presents it consistently. For operations and technology leaders at advisory firms.
A client with three accounts and $3.42 million in total assets opens her quarterly statement and finds one line: Advisory fee, $7,130.00. She remembers the agreement as 1%. One percent of $3.42 million is $34,200 a year, or $8,550 a quarter, so the number looks $1,420 too low. That is in her favour, but she calls her advisor anyway, because a figure she cannot reproduce is a figure she does not trust. The advisor asks operations. Operations pulls the calculation out of the billing system by hand and finds that the fee was correct all along. The statement simply did not show the work.
A fee statement is often questioned for what it leaves out, not for being wrong. The inputs are few, but each one hides a rule, and the client sees none of them unless the document says so. Three problems tend to recur: the client cannot trace the number back to a balance and a schedule, the figures across accounts do not quite add up, and something changed during the period that the statement does not mention.
A Fee Statement Is Not an Invoice
An invoice describes what was bought: quantities, unit prices, a total. An advisory fee bills a service whose price depends on a balance on a particular date, a schedule agreed at onboarding, and cash that moved during the period. The client never chose a quantity. What she needs from the statement is the ability to rebuild the number herself.
That takes a handful of inputs shown together, near the amount: the balance the fee was based on and the date of that balance, the schedule and the tier each slice of the balance fell into, the billing period and whether it was billed in advance or in arrears, any adjustment for deposits or withdrawals, and the account the fee was taken from. Take any of them away and the client has to call.
Here is the same quarterly fee as a calculation a client could follow. The household has three accounts, billed quarterly in advance on the value at the end of the previous quarter, with a tiered schedule applied to the household total.
| Step | Basis | Rate (annual) | Amount |
|---|---|---|---|
| Household value at 31 March | $3,420,000 | ||
| Tier 1: first $1,000,000 | $1,000,000 | 1.00% | $10,000.00 |
| Tier 2: next $2,000,000 | $2,000,000 | 0.80% | $16,000.00 |
| Tier 3: remaining balance | $420,000 | 0.60% | $2,520.00 |
| Annual fee | $28,520.00 | ||
| Quarterly fee (annual fee divided by 4) | $7,130.00 | ||
| Adjustment: $250,000 deposited on 1 May, 61 of 365 days at the Tier 3 rate | $250,000 | 0.60% | $250.68 |
| Total charged for the quarter | $7,380.68 |
The effective annual rate on the opening balance is about 0.83%, which is the answer to the client's question. Her agreement says 1% because 1% is the rate on the first slice. The statement that prints the whole table answers the question before she asks it. The statement that prints one line leaves her to find the answer on her own.
The deposit line deserves the same attention as the tiers. The day count (61 of 365 here) is one convention among several, and which one applies is a matter for the advisory agreement. What the statement has to do is print the convention it used, so the number can be rebuilt.
One Schedule, Several Accounts: Where the Cents Go
Two decisions sit behind the table above, and the statement has to expose both.
The first is the level at which the schedule applies. In the example, the tiers run against the household total of $3,420,000. If the same schedule were applied to each account on its own, the first million of each account would be charged at 1.00% and the fee would be higher. With balances of $1,800,000, $1,011,900 and $608,100, the account-level annual fees would be $16,400.00, $10,095.20 and $6,081.00, a total of $32,576.20, or $8,144.05 a quarter against $7,130.00 for the household calculation. That is $1,014.05 a quarter, and a client who assumed the other method will reasonably ask why. A line such as "tiers applied to combined household value across 3 accounts" is cheap to print and answers the question in advance.
The second is how the fee is split across accounts. Each account is charged separately, usually from the account itself, so the statement shows a charge per account as well as the household total. Splitting $7,130.00 in proportion to account value gives $3,752.63, $2,109.60 and $1,267.76. Those three figures add up to $7,129.99. One cent is missing, because each share was rounded on its own. Add the $250.68 adjustment to the account that received the deposit and the three account charges sum to $7,380.67, while the total at the top of the page reads $7,380.68.
One cent will rarely trigger a complaint by itself. A statement whose parts do not add up to its total suggests the document is approximate, and a careful client may apply that doubt to every other page. The same page may also be read by whoever reconciles the debits that left each account, and they will want the account figures to match.
The remedy is a rule, decided once and applied before the document is built. One approach is to assign the rounding remainder to the largest account; another is to assign it to the first account in a fixed order. The choice is a policy decision for the firm, and the statement should not be where it gets made. What matters is that the billing system stores the final per-account amounts and the household total together, so that the amounts on the page are the same amounts the debits were raised from. A template that receives them can print them. A template asked to work out the split from the household total may place the missing cent differently each time the balances change.
That is also why the calculation does not belong in the layout. Tier logic, day counts and rounding rules already exist in the billing or fee engine, where they are tested. A second copy of the logic inside a document layout is a second place where the printed fee can differ from the one that was charged, and the difference may only surface when a client points it out.
When the Period Changes Under the Fee
A fee based on a balance is exposed to everything that moves the balance. Deposits and withdrawals during the period are the common case, and they generate their own small calculation, like the $250.68 above. They should appear as separate lines with a date, an amount and a basis, not folded into the total. A refund or credit works the same way and should read as a credit, with a negative amount that is visibly negative.
Corrections need a rule of their own. If a fee was calculated on the wrong balance and has to be reissued, the corrected statement should say that it replaces an earlier one, name the original, and show what changed. A client who receives two statements for the same quarter with different numbers and no explanation will call about both.
The last category is the wording around the numbers. Fee statements typically carry explanatory text: how fees are calculated, when they are billed, what the schedule is, where to find the full agreement. When a firm changes its billing frequency or introduces a new tier, that text changes everywhere at once. If the wording was typed into each template separately, some documents will carry the new text and some the old, and the firm will find out which from client mail. Standard explanatory wording should live in one place and be referenced from every template that needs it. The part of the statement that varies by client, such as balances, rates and amounts, comes from the data. Which parts of the wording a firm is required to include depends on its jurisdiction and its compliance function, and that determination is outside what a template can decide.
How This Maps to CxReports
The problems above are structural, and the structure maps onto a few CxReports components. The boundary is the one drawn earlier: the billing system calculates and stores, CxReports presents. The statement can sit inside the wider quarterly client statement or be generated on its own; the construction below is the same in both cases.
One section per account, built once. The statement is a parent report that holds the household header and the household total. Each account is a subreport that repeats once for every entry returned by the accounts data source. A subreport is an independent unit with its own parameters and data source, and the parent maps its parameters into it, so a household with two accounts and one with eleven use the same structure. The same pattern appears in consolidated family office reporting, where each entity is a repeated section under one parent.
The calculation shown step by step. The tier table is a Data Table bound to the tier rows your billing system supplies: band, basis, rate and amount. Column formats control how each value is displayed, for example currency;USD;2 for amounts and p;2 for rates, as described in the text formats reference. Currency formats also accept an accounting flag, so credits and refunds can show as negative amounts in parentheses. The format changes how a number looks, not what number it is, which is why the amounts should arrive already rounded the way the billing system rounded them. Where a cell uses the Text renderer instead of a plain field, the documentation notes that nothing is formatted automatically, so the format has to be written into the template text.
Totals, and the temptation they create. A Data Table can compute a derived column from a Value Expression, such as adding two fields, and a footer or group caption can aggregate a column with Sum, Count or Average. That is enough to show a household total beneath the account lines. It also means the printed total is whatever the supplied lines add up to. If the billing system's total is $7,380.68 and the lines sum to $7,380.67, the footer will faithfully print a number the billing system never produced. The remainder has to be resolved before the data reaches the report, and a pre-generation check that compares the supplied total with the sum of the supplied lines is a cheap way to catch the cases where it was not.
Optional rows for adjustments. Rows that only some clients have, such as the mid-period adjustment or a credit, can sit in a Key-Value Table, where each row has a Hide Condition that removes it when the expression is true. A client with no deposits during the quarter then sees a shorter table, not a row of zeros. For wider variation by client type or product, the approach is covered in conditional sections in financial documents.
One copy of the fee-schedule wording. Explanatory text belongs in a dictionary. A public dictionary is reusable across reports, and a report resolves $dict.key only after the dictionary has been attached to it. Authors place the shared wording in dictionary entries deliberately; nothing moves text there on its own. Once that is done, every report that attaches the dictionary and references the entry shows the updated wording the next time it is generated, so a change in billing frequency is edited once. The same mechanism provides the translated versions for clients who receive statements in another language.
Selecting the household and the period. The household identifier, the billing period and the basis date are report parameters, which filter the data source at generation time. A parameter marked as required has to be set before the report can be displayed, so a statement cannot be produced without a period.
What stays with your systems. CxReports does not know the fee schedule, the day-count convention or the rounding rule, and it does not decide how a deposit changes the fee. The billing or fee engine calculates and rounds, assigns the remainder, stores the per-account amounts and total, and supplies them. The firm's compliance function decides which disclosures must accompany a fee statement. CxReports lays out what it is given, formats it, and repeats the structure for every household.
Getting Started
| Fee statement need | CxReports mechanism |
|---|---|
| One section per account under a household | Subreport repeated from an accounts list, parameters mapped from the parent |
| Tier-by-tier calculation table | Data Table with column formats such as currency;USD;2 and p;2 |
| Household total beneath the account lines | Data Table footer aggregate over supplied amounts |
| Rows that only some clients have | Key-Value Table with a Hide Condition per row |
| Fee-schedule wording maintained once | Dictionary attached to each report that uses it |
| Household and period selection | Report parameters, set as required where needed |
| Credits and refunds shown clearly | Accounting flag in currency and number formats |
Documentation:
For the wider context, see wealth management reporting and, for the billing run behind a fee statement, invoice generation at scale. To see a household fee statement built from your own fee schedule, request a demo.
This article covers reporting and document design. The fee figures are illustrative and do not constitute investment, tax, or legal advice.