Sign in

Blog · Board and management reporting · Industrial distributors

Industrial distribution revenue analysis

Explain changes in industrial distributor sales by customer, product family and recurring versus project demand. Build a price and quantity bridge from sales exports, then prove it against reported revenue.

The short answerIndustrial distribution revenue analysis explains sales changes through quantities, realized prices, customer movements and project timing. Compare the same customer and SKU across matched periods, calculate the movements, and total them by product family and demand pattern. Keep new customers separate from retained accounts, and reconcile the complete bridge to net sales before deciding what caused growth or decline.

Industrial distribution revenue analysis separates sales movements into quantity, realized price, customer changes and project timing. Calculate at the customer and SKU level first, then roll the results into product families and recurring versus project demand so a changing product mix does not masquerade as a price increase.

Start with a comparable sales export

Use posted invoice lines and credit memos for two matched periods. Keep invoice date, customer ID, SKU, product family, demand pattern, project ID, selling quantity, selling unit and net revenue in USD. Include branch when responsibility differs by location.

Define the revenue boundary before calculating. Product sales and agency commissions have different bases: the Census Bureau's wholesale definitions distinguish merchant wholesalers selling on their own account from agents and brokers that do not take title. Separate those activities if both appear in the export.

Tie each period's net revenue to the ledger. Keep returns, discounts and credits visible, and document whether freight charges are included. The broader distribution revenue analysis covers the distributor reconciliation workflow; this comparison concentrates on industrial product families and demand patterns.

Assign recurring, project or unclassified demand from order records. A large maintenance replenishment order is not automatically a project. A project ID should also survive changes in customer name, branch or invoice description.

Aggregate the same customer and SKU

In a worksheet named Sales, put date in A, customer ID in B, SKU in C, family in D, demand pattern in E, project ID in F, quantity in G, net revenue in H and period label in I. Normalize cases and individual pieces into a consistent selling unit before summing quantities.

On a comparison worksheet, K2 contains the customer ID, L2 the SKU and M1 the period label. Net revenue is:

=SUMIFS(Sales!$H:$H,Sales!$B:$B,$K2,Sales!$C:$C,$L2,Sales!$I:$I,M$1)

Use the same formula with Sales!$G:$G as the first argument for quantity. Microsoft documents SUMIFS as adding values that meet multiple criteria, which lets the comparison hold the customer, item and period constant.

Divide net revenue by quantity for the realized unit price. Add project and demand-pattern criteria when a customer buys the same item for different purposes. Keep every customer present in either period, including accounts appearing on only one side.

Covirage is not affiliated with Microsoft.

Work the revenue bridge

This illustrative US distributor compares two equal reporting periods. Each row represents a stable customer and SKU combination; the family labels make the eventual roll-up readable. Prices are realized prices after discounts. All quantities are positive, and the new customer genuinely has no prior-period sales.

Customer and family Prior quantity B Prior price C (USD) Current quantity D Current price E (USD) Prior revenue F (USD) Current revenue G (USD)
Millco, bearings, recurring 1,000 20 1,100 22 20,000 24,200
Millco, safety, recurring 500 30 450 30 15,000 13,500
Forgeco, project equipment 200 100 100 110 20,000 11,000
Aster, safety, new customer 0 0 100 40 0 4,000
Total 55,000 52,700

For retained combinations, apply quantity first at the old price, then price at the current quantity:

Quantity effect = (Current quantity - Prior quantity) × Prior price

Price effect = Current quantity × (Current price - Prior price)

With the table columns shown above, calculate prior revenue as =B2*C2 and current revenue as =D2*E2. For this example, H, I and J hold quantity, price and new-customer effects:

H2 =IF(B2=0,0,(D2-B2)*C2)
I2 =IF(B2=0,0,D2*(E2-C2))
J2 =IF(B2=0,G2,0)

The zero test is valid for these illustrative rows. In an actual export, classify new customers from their presence across periods, since returns can reduce an existing customer's net quantity to zero.

Customer and family Quantity effect (USD) Price effect (USD) New customer (USD) Total change (USD)
Millco, bearings 2,000 2,200 0 4,200
Millco, safety -1,500 0 0 -1,500
Forgeco, project equipment -10,000 1,000 0 -9,000
Aster, safety 0 0 4,000 4,000
Total -9,500 3,200 4,000 -2,300

The proof is $55,000 - $9,500 + $3,200 + $4,000 = $52,700. The residual is zero. Revenue declined $2,300 / $55,000 = 4.2%, rounded to one decimal place.

Separate demand timing from account weakness

Retained recurring sales rose from $35,000 to $37,700, an increase of $2,700. The project row fell $9,000, while the new account added $4,000. The total decline therefore does not support a claim that routine replenishment demand weakened across the business.

Ask the project owner whether the equipment schedule moved, the installation finished or the account switched suppliers. The bridge identifies the contributing rows; it does not establish the commercial cause without that follow-up.

For a larger book, classify new and inactive customers first, then explain retained customers through matched items and separately identified added or dropped items. Do not add a customer movement on top of the same sales already counted in price and quantity. Customer revenue analysis covers the account comparison, while category penetration and dormant accounts helps direct the sales follow-up.

Where it goes wrong

  • Mix called price. Family averages combine different SKUs. Calculate matched-item effects before grouping them.
  • Cases compared with pieces. Convert both periods to the same selling unit or quantities and prices become incomparable.
  • Projects labeled lost accounts. An installation ending reduces demand without necessarily ending the relationship.
  • Credits without quantities. Put standalone commercial credits in a separate adjustment movement; do not invent units to force a unit price.
  • Double-counted growth. New-customer sales belong in their own movement, outside retained-customer price and quantity calculations.

Analyze your own distribution sales in Covirage

Bring a sample of your own invoice and credit-memo export with customer, SKU, family and project fields. Covirage maps the columns, its tools compute and check the revenue comparisons, and the external AI model explains the result with every figure traced to its rows. Create a free Covirage account, then set up your business and bring your file.

See revenue driver analysis for the supporting approach to a revenue bridge that adds up.

Questions people ask

How do you distinguish project demand from recurring sales?

Use a project or job identifier from the order record, supported by the account manager's knowledge. Replenishment orders belong in recurring demand when that classification fits the buying pattern. Keep unclassified orders visible instead of assuming every large invoice is a project.

Can average selling price measure a price increase?

Only when the comparison holds the product and selling unit constant. A product family's average selling price can rise because customers bought a different mix of items. Calculate realized price changes on matched customer and SKU rows before adding the results together.

Does a customer with no sales count as lost?

It counts as inactive for the comparison window, but that does not prove the relationship ended. Check its normal reorder interval, open projects and account status. A customer that buys once a year can disappear from a monthly comparison without being lost.