Back to Blog

Primary vs Secondary Sales: Why Your Dispatch Numbers Look Nothing Like Demand

Your billing system knows exactly what you dispatched. It knows nothing about what got sold. That gap is where most distribution surprises come from.

FlowKartAI Team · Editorial
Published 18 August 2026
Primary Sales Secondary Sales Channel Loading FMCG India

Two numbers that sound like the same number

Primary sales are what you billed. Stock left your godown, an invoice was raised, the amount is in your books. Your billing system produces this number without anyone asking it to.

Secondary sales are what the retailer sold onward to the person who actually consumes the product. This happens in a shop you do not control, is recorded in a book you cannot see, and appears in none of your systems.

Everyone knows these are different. The problem is that only one of them is easy to measure, so the easy one quietly becomes the number everyone manages to.

Why the gap matters more than the numbers do

If secondary tracks primary closely, the channel is healthy: what you ship is roughly what gets sold, and each cycle looks like the last.

When primary runs ahead of secondary, stock accumulates at the retailer. Nothing in your system says so. Your dispatch numbers look fine — better than fine, because pushing stock is the fastest way to make them look good. The consequence arrives one or two cycles later as a soft patch nobody can explain, and it gets blamed on the market, on a competitor, or on the sales team.

This is channel loading, and it is not usually a scheme anyone deliberately runs. It is what happens by default when the only number under a target is the one you can measure.

The awkward part: loading and genuine growth look identical in primary sales for about a month. The difference only shows up when the orders stop.

A worked example

Numbers to re-run with your own, not a benchmark.

A retailer sells roughly 40 cartons a month. In a normal cycle you ship 40 and they hold about a week of cover — say 10 cartons — at any time.

March is target month, so you push 70 cartons on a scheme. Primary sales for March are up 75%. Everyone is pleased.

April demand is still 40 cartons. But the retailer opened April holding 40 in stock. They order nothing until the middle of May. Your April primary is zero for that outlet, and your May is partial.

MonthReal demandYou shippedRetailer closing stock
February404010
March407040
April4000
May405010

Across the four months you shipped 160 and they sold 160. The demand never changed. All the scheme bought was a redistribution of the same volume into the month you needed it, plus whatever the scheme discount cost you — the kind of arithmetic the Trade Discount Ladder makes visible before you commit to it rather than after.

And the cost is not only the discount. That extra 30 cartons sat in a retailer shop for six weeks, which is working capital you funded, and in a category with dated stock it is six weeks closer to a claim.

Capturing secondary without asking anyone to adopt software

The standard answers to this problem are a retailer app or a billing integration. Both give clean data. Both also require the retailer to change how they work, which is why most attempts stall — the retailers who most need to be visible are the ones least likely to install anything.

The practical route is to capture closing stock at the moment the retailer is already talking to you: when they place the next order. If the ordering conversation already happens on WhatsApp, asking what is left of the previous lot is one extra line in an exchange they were having anyway.

That gives you an approximation:

  • Opening stock (what you shipped last time, plus what they had)
  • Minus closing stock (what they tell you is left)
  • Equals sold in the period

It is rougher than a POS feed. It is also achievable this quarter, and a rough number that exists beats a precise one that does not. The same argument applies to demand data generally — a forecasting model needs sell-out, not sell-in, which is exactly the point made in reorder prediction vs the reorder point rule.

What to actually do with the number

Once you have even an approximate secondary figure, three things become possible that were not before.

Set order quantities against cover, not against a target. Knowing a retailer holds three weeks of cover changes the right order size this cycle. This is the same input the Reorder Point Calculator needs, applied one level down the chain.

Spot the outlets that are loaded before they go quiet. A retailer whose cover has been climbing for three cycles is going to stop ordering. Knowing that a month early turns a surprise into a plan.

Judge schemes on what they sold, not what they shipped. A scheme that lifts primary and leaves secondary flat moved stock forward in time and paid for the privilege. A scheme that lifts both found genuine demand. Only the second one is worth repeating, and distributor ROI is the frame for deciding which you got.

The honest limitation

Retailer-reported closing stock is self-reported, occasionally wrong, and sometimes optimistic when a scheme is running. Treat it as a signal, not as an audited figure.

The test is whether it is directionally right often enough to change a decision. A retailer who reports 30 cartons when they have 35 still tells you something worth knowing, because both numbers say the same thing: do not send more this cycle. Precision matters far less here than existing at all.

FAQ

The questions that come up when a distributor first tries to separate the two numbers.

What is the difference between primary and secondary sales?+

Primary sales are what you billed and dispatched — stock moving from the company to you, or from you to a retailer. Secondary sales are what that retailer actually sold onward to the end consumer. Primary is a billing event your system records automatically; secondary happens in someone else shop and is invisible unless you deliberately capture it.

Why do distributors track secondary sales at all if primary is what they get paid on?+

Because primary sales can be grown for a while simply by pushing more stock into the channel, and that growth reverses. If retailers are holding three weeks of cover instead of one, your next few order cycles will be weak no matter what your team does. Secondary sales tell you whether demand is real or whether you have just relocated inventory from your godown to theirs.

How can a distributor capture secondary sales without asking retailers to use an app?+

The practical route is to capture it at the moment the retailer is already talking to you — when they place the next order. Asking what is left of the previous lot, as part of an ordering conversation the retailer is having anyway, gets you a usable closing-stock figure without asking anyone to adopt new software. It is less precise than a billing integration and far more likely to actually happen.

What is channel loading and how do I know if I am doing it?+

Channel loading is pushing stock into retailers faster than they can sell it, usually to hit a monthly target. The tell is a strong month-end followed by an unexplained soft patch, repeated on a cycle. If you cannot explain a weak fortnight by anything happening in the market, the likeliest explanation is that the stock for it was already delivered.

FlowKartAI Team
Editorial

The FlowKartAI team builds WhatsApp-native ordering for Indian B2B distributors and the kirana stores they serve. We write about distribution economics, GST compliance, and the practical side of putting AI in front of retailers who have never opened an app.

🤖

Ready to Automate Your WhatsApp Orders?

FlowKartAI parses natural language WhatsApp messages into ERP-ready orders in seconds.

Try Free Demo

Related Articles