Reporting
P&L by Customer: Why You Need It and How to Build It
How to build a P&L by customer: the data you need, three ways to allocate shared costs, common pitfalls, and what to do once you see who makes you money.
MYGrowth Solutions5 min read

Your total gross margin can look healthy while some customers lose you money. The average hides the spread. A P&L by customer shows it.
A customer P&L takes revenue for each customer and subtracts the costs of serving them. The result is contribution, or profit, per customer. Done well, it changes how you price, sell and service accounts.
Why it matters
Customers with similar revenue can differ widely on cost. Common drivers include:
- Discounts, rebates and special pricing
- Order size and frequency
- Custom work, rush orders and change requests
- Returns, credits and disputes
- Support tickets and account management time
- Freight terms and delivery requirements
- Payment behavior and the cost of carrying receivables
None of these show up when you only look at revenue. All of them affect profit.
The data you need
Start with what you already have. Most of it sits in your accounting system, CRM and operations tools.
| Data | Typical source | Used for |
|---|---|---|
| Revenue by customer, net of discounts and credits | Accounting system, invoicing | Top line |
| Cost of goods or direct labor by job | Inventory, timesheets, job costing | Gross margin |
| Freight and shipping by order | Shipping system, AP | Cost to serve |
| Count of orders, shipments or invoices | ERP, invoicing | Allocation driver |
| Support tickets or hours | Help desk, timesheets | Allocation driver |
| Sales and account management time | CRM, team estimate | Allocation driver |
| Average days to pay | AR aging | Cost of capital |
Clean your customer master data first. One customer recorded under three names will distort the result. Merge duplicates. Roll subsidiaries up to the parent if that is how you manage the account.
Build it in layers
Build the customer P&L in layers, from most certain to least certain. Readers can then see where hard numbers end and estimates begin.
- Net revenue: gross sales minus discounts, rebates, returns and credits.
- Direct costs: materials, direct labor and subcontractors tied to that customer’s orders.
- Gross margin: net revenue minus direct costs.
- Cost to serve: freight, packaging, support, account management and payment processing.
- Customer contribution: gross margin minus cost to serve.
- Allocated overhead (optional): a share of rent, systems and admin.
Stop at contribution for most decisions. Overhead allocation adds noise and rarely changes a pricing decision.
Three ways to allocate shared costs
Direct costs are easy to assign. Shared costs need an allocation method. Pick the simplest one that reflects how your costs actually behave.
Revenue-based allocation
Spread shared costs by each customer’s share of revenue. It is quick and easy to explain. It also hides the problem you are trying to find. Small, demanding customers look cheaper to serve than they are.
Activity-based allocation
Activity-based costing (ABC) assigns costs using the drivers that cause them. Examples include orders, shipments, invoices, support tickets or service hours.
For example, divide warehouse handling cost by total orders to get a cost per order. Then multiply by each customer’s order count. This takes more work, but it gives a much fairer picture.
Time-based allocation
For services firms, time is the main cost. Use timesheet hours by customer for delivery staff. Some account managers and support staff don’t log time. Ask them to estimate their split for one month. An honest estimate beats revenue-based allocation.
A hypothetical illustration
The figures below are invented to show the mechanics. Two customers each bring in $500,000 a year.
| Line | Customer A | Customer B |
|---|---|---|
| Net revenue | $500,000 | $500,000 |
| Direct costs | $300,000 | $300,000 |
| Gross margin | $200,000 (40%) | $200,000 (40%) |
| Orders per year | 24 | 300 |
| Order handling at $150 per order | $3,600 | $45,000 |
| Freight absorbed | $5,000 | $30,000 |
| Support at $60 per hour | 50 hours, $3,000 | 600 hours, $36,000 |
| Contribution | $188,400 (38%) | $89,000 (18%) |
Both customers look identical at gross margin. Customer B costs far more to serve. The reasons are order frequency, freight terms and support load.
Pitfalls to avoid
- Allocating everything. Fully loading every overhead dollar makes many customers look unprofitable. Some of that cost would not go away if they left.
- False precision. Reporting contribution to the cent implies accuracy you don’t have. Round, and label estimates.
- One period only. A single month can mislead. Use 12 months, or at least two quarters.
- Ignoring strategic value. A low-margin anchor customer may bring volume, referrals or a foothold in a new market.
- Building it once. Customer economics change. Refresh the analysis at least quarterly.
- Mixing cash and accrual figures. Use accrual revenue and costs, so payment timing does not distort margins.
What to do with the answer
Sort customers into a simple grid: high or low revenue, and high or low contribution margin. Then act on each group.
- High revenue, high margin: protect them. Review service levels and renewals early.
- Low revenue, high margin: grow them. They are often your best targets for upselling.
- High revenue, low margin: fix the economics. Revisit pricing, minimum order sizes, freight terms or service scope.
- Low revenue, low margin: change the terms or let them go. Try a lower-cost service model first.
A customer P&L is a tool for better conversations, not a list of customers to drop.
Share the results with sales and operations, not just finance. They often know why a customer costs more to serve. They also own most of the fixes.
Then set a review rhythm. Look at your top 20 customers each quarter. Track how their contribution moves after each change you make.
Where to start
- Pull 12 months of net revenue and direct costs by customer for your top 20 accounts.
- Pick two or three cost drivers you can measure today, such as orders, shipments or support hours.
- Build a contribution view for those 20 customers and review it with your sales lead.
If you want a second view on your profitability data, MYGrowth offers a free 30-minute finance health check.
