Counter sales from a manufacturing ERP: POS without a second system
Plenty of manufacturers also sell at a counter: the factory outlet, the sweet shop in front of the kitchen, the showroom. The usual fix is a separate billing app, and then a monthly argument about whose stock figure is right. Here is what a counter bill actually is, and why it should be an ordinary invoice.
In short
- A counter bill is a GST invoice plus one receipt per payment mode. Treat it that way and stock, ledgers and GSTR-1 need no reconciliation.
- Counter prices are tax-inclusive. Back the GST out per line at the item's rate: taxable value = inclusive price ÷ (1 + rate), the method Rule 35 of the CGST Rules prescribes for tax-inclusive values.
- Round the bill, not the lines, to the rupee and show the difference as round-off.
- No line may be billed above MRP for packaged goods. The system should refuse, not warn.
- Make the submit idempotent: a double tap or a flaky network must return the same bill, never a second invoice.
A counter sale is not a different kind of sale; it is a fast one. The goods leave stock, GST is charged, money is received and the customer is usually anonymous. Every one of those is something the ERP already does for a normal invoice. The problems start when a separate POS app does them again, in its own database, with its own idea of what is in stock.
What goes wrong with a separate POS
- Two stock figures. The POS sells from its own count; the ERP finds out at the end of the day, or the month, when someone imports a CSV.
- Two sales registers. GSTR-1 needs every B2C sale. If the POS summary is keyed into the ERP as one line a day, the HSN summary and the rate-wise split are already wrong.
- Two cash books. The cashier's drawer reconciles to the POS; the accountant's cash ledger reconciles to the ERP; they meet in a spreadsheet.
What a counter bill is made of
| Piece | On a normal sale | At the counter |
|---|---|---|
| Customer | A named party with a ledger | A walk-in 'Cash Sale' party, or a named customer if they want it on their statement |
| Prices | Rate before tax, from the price list | MRP-inclusive, tax backed out per line |
| Document | Sales invoice | The same sales invoice |
| Payment | Receipt, often days later | One receipt per tender, at the moment of sale |
| A4 invoice | 80 mm or 58 mm receipt with GSTIN, HSN-wise tax and a UPI QR |
The only genuinely different pieces are the inclusive pricing and the print. Everything else should be the normal invoice and the normal receipt, created through the same code path. That one decision removes the reconciliation entirely: there is nothing to reconcile because there is only one record.
Backing GST out of an inclusive price
When a price includes tax, the taxable value is the price divided by one plus the rate, and the tax is the remainder. Rule 35 of the CGST Rules, 2017 gives the same arithmetic for any value that is inclusive of tax: tax = (value × rate) ÷ (100 + rate).
Worked example: a 500 g box of sweets at an inclusive counter price of ₹290, GST 5%.
- Taxable value = 290 ÷ 1.05 = ₹276.19
- GST = 290 − 276.19 = ₹13.81, split ₹6.905 CGST and ₹6.905 SGST for an intra-state counter sale
Do this per line, at each item's own rate, because a basket mixes items at different GST rates. Then add the lines up. A counter sale is to a consumer standing in your shop, so it is intra-state: CGST and SGST, never IGST.
Rounding
Round the bill to the rupee, not each line, and show the difference as round-off. If three lines add up to ₹1,194.62, the customer pays ₹1,195 and ₹0.38 appears as round-off on the invoice. Rounding lines first and then adding produces totals that do not match the tax arithmetic, which is the kind of thing a GST audit picks up.
MRP is a hard stop
For packaged consumer goods the Legal Metrology (Packaged Commodities) Rules, 2011 prohibit selling above the printed MRP. At a counter this should be a refusal, not a warning: the cashier cannot override it, and the item master cannot save a selling price above MRP either. Selling below MRP is fine and common.
Tenders
One bill, several tenders: ₹500 in cash, the rest by UPI. Each tender is a receipt against the invoice, posted to the cash ledger or the bank. Cash may be over-tendered, with change given and recorded; UPI and card may not. Showing a UPI QR for your own UPI ID on the receipt and on screen is the cheapest card machine there is.
The double-tap problem
Counters are busy and networks are not always reliable. If the submit is retried, the system must return the same bill, not raise a second invoice for the same basket. The clean way is a client key on each bill: the first submit claims it, a retry with the same key gets the saved result. If the invoice was saved but a payment failed, keep the invoice and let the cashier retry the tender; do not create a second invoice.
Labels and scanning
Speed at the counter comes from scanning, and scanning needs a barcode on the pack. Print labels from the item master with MRP, net quantity, manufacturing month, batch and expiry where they apply, and the barcode. EAN-13 or UPC codes print as such when their check digit is valid; anything else prints as Code 128. The scanner reads the same code back into the bill. A USB or Bluetooth scanner works with the browser; a phone's camera does the same job in a mobile app.
How Dravyaa does it
Dravyaa's point of sale is a screen on the same system, switched on in Settings. A counter bill is saved as an ordinary invoice plus one receipt per tender through the same services as every other sale: stock reduces from the chosen warehouse, receipts post to cash or bank, and the invoice appears in Sales and in GSTR-1 like any other. Prices are MRP-inclusive with GST backed out per line, the bill is rounded to the rupee, a line above MRP is refused, and a retried submit returns the same bill. Receipts print at 80 mm or 58 mm, and MRP labels print from the item list.
Frequently asked questions
How do you calculate GST from an MRP-inclusive price?
Divide the inclusive price by one plus the GST rate to get the taxable value; the tax is the remainder. For ₹290 at 5%, the taxable value is ₹276.19 and the GST is ₹13.81. Rule 35 of the CGST Rules gives the same formula: tax = value × rate ÷ (100 + rate).
Should a POS bill be a separate document from a GST invoice?
No. A counter bill is a GST invoice with the payment taken at once. Saving it as an ordinary invoice plus receipts means stock, ledgers and GSTR-1 are updated the same way as every other sale, with nothing to reconcile later.
Is a counter sale CGST + SGST or IGST?
A sale to a consumer standing at your counter is an intra-state supply, so it carries CGST and SGST. IGST applies only when the place of supply is in another state.
Can a shop sell above MRP?
No. For pre-packaged consumer goods the Legal Metrology (Packaged Commodities) Rules, 2011 prohibit selling above the printed maximum retail price. Selling below MRP is allowed.
How should a POS handle a double-tapped submit?
Each bill should carry a client key. The first submit saves the bill; a retry with the same key returns the same bill instead of creating a second invoice. If the invoice saved but a payment failed, the invoice is kept and only the payment is retried.
Sources
Facts checked as of October 23, 2026. Rules change: confirm current requirements with the official source or your tax adviser.
Open a counter on the books you already keep
See a basket scanned, priced at MRP, paid by cash and UPI, and land in Sales and GSTR-1 as one invoice, in a 20-minute walkthrough.