GST Billing, Udhaar, and Returns: How NodeDR POS Handles the Indian Retail Counter
On this page
Introduction
A lot of point-of-sale software treats tax, credit sales, and returns as add-ons bolted onto a generic checkout flow. NodeDR POS builds them into the core register instead, because for a small Indian retail shop they aren't edge cases — they're most of the day. Here's how each one actually works, and where to get the app (GitHub, MIT licensed).
GST that doesn't double-charge the customer
The price you type into NodeDR POS is the MRP — GST-inclusive, exactly as Indian law requires it to be labeled. The app never adds GST on top of that number. Instead, it works backward from the MRP to break out CGST and SGST on the receipt, alongside your GSTIN, purely for compliance and record-keeping.
That distinction matters more than it sounds. Two units of a product with an MRP of ₹118 at 18% GST should total ₹236 — the two MRPs added together, tax already included. A register that mistakenly treats the entered price as pre-tax and adds 18% on top would instead land on ₹278.48, overcharging every customer at every sale. NodeDR POS is built around getting this right by default, with GST toggled off entirely in settings for shops that don't need it.
Around that core calculation sit the supporting pieces: live GSTIN and PAN format validation as you type, GST state-code decoding, quick-select rate slabs, HSN/SAC codes per product, and a per-product unit (UQC) field. You can optionally import the official HSN/SAC/PIN/IFSC reference CSVs for autocomplete on product and address fields.
Udhaar: credit sales without a separate ledger
Cash sales in Indian retail are frequently partial — a regular customer pays what they have and settles the rest later. NodeDR POS models this directly: attach a customer to a sale, accept a payment short of the total, and the shortfall becomes a running udhaar due against that customer. Payments against the due are recorded over time with a full history, so there's no separate notebook to reconcile against the register.
Returns, exchanges, and store credit
Handling a return starts with looking up the original invoice by number, right from the register — no separate reports screen. From there you queue one or more line items to return and choose how to settle: as a standalone refund, or folded directly into a new sale as an exchange.
Two guardrails run underneath this: returned stock goes back into inventory automatically, and the app tracks returns at the unit level, so the same item can never be returned twice — even across several partial returns of the same invoice over time.
A refund doesn't have to go out as cash. It can instead be kept with the customer as store credit, tracked as its own running balance separate from any udhaar due, and spent on a future purchase with a tap of Use store credit at checkout.
Loyalty on top
Customers are tracked by phone number and accumulate loyalty points on every purchase at a configurable earn rate, redeemable as a discount at checkout. Combined with udhaar and store credit, a customer's full relationship with the shop — what they owe, what credit they're holding, and what points they've earned — lives in one place instead of three.
Where to get it
NodeDR POS installs natively on Windows and Debian/Ubuntu with no Docker required, or via Docker Compose on any OS — see the marketing site for install instructions and the GitHub repository for the source and full README.
FAQ
Does NodeDR POS add GST on top of the price I enter?
No. The entered price is treated as MRP, which is already GST-inclusive by law. The app breaks the tax out as CGST/SGST for the receipt rather than adding it a second time.
What happens if a customer pays less than the total?
If a customer is attached to the sale, the shortfall becomes an udhaar due you can track and record payments against later, with a full payment history per customer.
Can the same returned item be refunded twice?
No. NodeDR POS tracks returns at the unit level, so a given unit can never be returned more than once, even across multiple partial returns on the same invoice.
Is store credit the same as an udhaar due?
No — they're tracked as separate balances. Udhaar is money a customer owes the shop; store credit is money the shop owes the customer, usually from a refund kept on account instead of paid out.
Related service: AI Automation Agency — n8n Workflows, CRM Automation & Lead Routing
Related articles
- What NodeDR POS Actually Does: An Offline-First Register for Small RetailA tour of NodeDR POS's barcode checkout, GST billing, loyalty, and returns handling — plus where to download it for Windows, Debian, or Docker.
- No Docker Required: Installing NodeDR POS Natively on Windows and DebianNodeDR POS now installs as a native Windows or Debian service with no Docker and no terminal — here's what each installer actually sets up.
- Grocery and Specialty Food Store E-Commerce GuideLocal delivery logistics, freshness expectations, and clear substitution policies make specialty food e-commerce a different build than typical retail.
Planning a new website?
Let's talk about how a fast, SEO-ready Next.js site can help your business grow.
Start Your Project