Acumatica · Reports

Acumatica Customer Profitability Report — Building It Right

Acumatica Customer Profitability Report — Building It Right is one of those reports every business needs and almost no business has a clean implementation of.

John Kihiu12 min read

Customer profitability reporting sounds like a straightforward join of revenue to cost per customer, and it is, right up until someone asks whether the report should include allocated overhead, freight paid on their behalf, or the cost of the returns and credit memos that never made it back into the margin calculation. The report is easy to build wrong and quietly wrong — it will run fast and produce a confident, plausible, incorrect number.

Revenue side: which documents actually count

Revenue per customer is not just "sum of invoices" — credit memos and returns need to net against the period they're being measured in, and freight or handling charges billed separately need a decision on whether they're revenue (they inflate top-line without matching COGS) or a pass-through that should be excluded from a profitability view entirely. I default to including everything invoiced (line items, freight, and credit memos as negative revenue) and let the report show a "product revenue only" toggle as a parameter, because clients disagree on this constantly and it's cheaper to build both views once than to rebuild the report every time someone asks "but what about freight."

Cost side: actual cost, not standard cost, or you'll be arguing with Sales

The report's cost figure should come from the actual issued cost on the shipment (SOShipLine / cost layers per the item's actual costing method — FIFO, average, or specific), not the item's standard cost. If your instance runs standard costing for inventory valuation, the standard cost is fine for inventory value on the balance sheet, but for a customer profitability report specifically, a variance between standard and actual (a supplier price increase mid-quarter, a rush freight-in charge) belongs somewhere, and burying it inside "cost" without a variance line is how a profitability report and a variance report end up telling two different stories about the same customer.

SCHEMA — REVENUE AND ACTUAL-COST JOIN PER CUSTOMER
Base:  ARInvoice (Released=True) JOIN ARTran
Join:  SOShipLine ON matching order/line reference for actual issued cost
Group: by CustomerID, FinPeriodID
Sum:   Revenue = SUM(ARTran.CuryTranAmt)
       COGS    = SUM(SOShipLine.TranCost) -- actual issue cost, not std cost

Allocated overhead is a policy decision — don't bury it in the report

Some clients want "fully loaded" profitability including a share of warehouse, sales, and support overhead allocated per customer by some driver (revenue share, order count, whatever finance has agreed on). That allocation logic belongs in a maintained rule — a GI or a small allocation table finance can adjust — not hardcoded as a percentage inside the report's expression layer where only a developer can change it when the allocation basis changes next year. Keep the report itself to reading a pre-computed allocated-overhead figure per customer per period, sourced from wherever that allocation actually runs.

Show margin percentage, not just margin amount

A customer with $500K revenue and $50K margin looks better than one with $80K revenue and $20K margin until you look at margin percentage — 10% versus 25%. Every profitability report I've shipped ends up with both the absolute margin and the percentage as separate columns, sorted by whichever the client cares about that quarter (usually percentage when they're doing account review, absolute dollars when they're doing sales comp).

Wrapping up

Decide explicitly what counts as revenue (freight, credit memos), price cost from actual issued cost rather than standard cost so you're not silently hiding cost variance, and keep any overhead allocation as an externally maintained, finance-owned rule rather than a hardcoded report expression. Show both margin dollars and margin percentage — different audiences read this report for different reasons.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.