Home / Help Center / pos-app / Sell / Billing / Quick Bill
⚡ Sell / Billing

Quick Bill

Quick Bill is the fast, no-frills billing till — the same product-search-and-cart engine used on Sales → New Sale — with an extra shortcut bar across the top that lets you pop open Customers, Advance Booking, Repairs, Stock tools and dozens of other pages in a floating window without ever losing your cart.

📍 Menu path: Sell / Billing → Quick Bill
👤 Who uses it: All roles with Billing access (some shortcut tiles are locked below the Advanced plan tier)

Overview

Quick Bill embeds the exact same billing engine (POSBilling) used by the "New Sale" tab on the Sales & Bills page, so anything you can do there — search or scan products, apply discounts, pick a customer, split a payment, print an invoice — works identically here.

What makes Quick Bill different is the Quick Action bar running across the top: it groups shortcuts under Customer, Billing, Service, Documents, Items, Stock, Purchase, Money and Reports, plus a whole extra group of shop-type tools if you run a Restaurant or Grocery layout. Clicking a tile opens that page in a full-screen modal layered on top of the till — your in-progress cart underneath is never lost.

The screen automatically adapts to your business type (posLayout): Restaurant adds a Service/Tables/Kitchen/Orders/Guests/Reports group at the front of the bar, Grocery adds a Bulk Prices/Scale PLUs/Khata Dues/Expiry/Clearance/Home Delivery group.

A low-stock alert card appears automatically about 30 seconds after you open the screen (and again every 5 minutes) whenever any product's quantity has dropped to or below its minimum stock level, so you don't have to remember to check Inventory yourself.

Before You Start

Step-by-Step Guide

1 Bill a walk-in customer fast

  1. Type into the product search box or scan a barcode — matching products appear as you type (search is debounced ~300ms) and scanned barcodes are added instantly, including weight-embedded scale barcodes.
  2. Adjust quantity inline with +/- or by typing a number directly into the line; edit the price, discount or tax rate on a line if you have permission to override it.
  3. Optionally search and attach a Customer, apply a coupon/promo code, or let an automatic discount (membership, customer group, birthday offer, wholesale price, time-based markdown) apply itself.
  4. Choose a payment method — Cash, Card, UPI, Wallet, Credit, Cheque, Advance Booking (Layby) or Split across several methods — and press F12 or click Complete Sale.
  5. Print or share the invoice via WhatsApp from the confirmation screen that follows.
💡 Serial-tracked and batch-tracked products automatically open a Serial Number or Batch picker before they can be added — you cannot skip this for those products.

2 Jump to a related tool with the Quick Action bar

  1. Click the Menu pill on the far left of the bar to show or hide the shortcut groups (useful for reclaiming screen space on smaller displays).
  2. Click any tile, e.g. Customers, Advance Booking, Repairs, or Suppliers — the page opens as a full-screen overlay on top of Quick Bill.
  3. Use the Close button in the overlay's header (or press Esc) to dismiss it and return straight to your in-progress bill exactly as you left it.
  4. The Sales List tile behaves differently — instead of opening an overlay it switches the page to the "All Bills" view of the Sales & Bills screen.

3 Run multiple bills at once (hold, recall, duplicate, split)

  1. Open up to 8 concurrent "Bill" tabs and switch between them freely — each keeps its own cart, customer and discounts.
  2. Click Hold (or press F8) to park the current cart and free up the till for another customer; click Recall to bring a held bill back.
  3. Use Duplicate Bill to clone the current cart into a new tab, or Split Bill to move selected items/quantities into a fresh tab (handy when one group of customers wants separate invoices).
  4. Press F9 to clear the current cart, or close a bill tab entirely — you will be asked to confirm if it still has items in it.

4 Respond to a low-stock alert

  1. When the amber Low Stock card appears in the bottom-right corner, read how many products are affected.
  2. Click View Stock to open the Inventory low-stock filter directly, or Dismiss (or the ✕ in the corner) to hide it for this session.

Every Field & Button, Explained

Field / ButtonWhat it does
Menu toggleShows or hides the whole Quick Action bar to free up vertical space for the cart/product panel.
Customer group"Customers" (open the Customers page) and "Sales List" (switch to the All Bills view of Sales & Bills).
Billing groupAdvance Booking (Layby), Gift Cards, E-Invoice, Birthday Offers, Reminders — all require Advanced tier.
Service groupRepairs, Repair Prices, Spare Parts, Rentals, Special Orders — all require Advanced tier.
Documents groupChallan (Delivery Challan list), Quotation (Estimates list), Promotions — all require Advanced tier.
Items groupProducts (no tier requirement), Barcodes, Scan, Print Labels, Serial Nos. — the latter four require Advanced tier.
Stock groupImport, Transfer, Stock Take, Adjust, Low Stock, Out of Stock, Stock Count, Godowns, Expiring Soon — all open the Inventory page pre-filtered and all require Advanced tier.
Purchase groupSuppliers and Purchase Orders — both require Advanced tier.
Money groupExpenses, Udhaar / Dues (Ledger), Customer Advance, Rent, Rent Agreements, Rent Payments — all require Advanced tier.
Reports groupOpens the Reports page; requires Advanced tier.
Low Stock Alert cardAuto-popup listing how many products are at or below their minimum stock level, with "View Stock" and "Dismiss" actions; suppressed entirely if Settings → "Show low stock alert" is turned off.
Locked tile (🔒)A shortcut you can see but not click because it needs the Advanced plan tier — hovering shows "Upgrade to Advanced to unlock this feature".

Tips & Best Practices

Keyboard Shortcuts

ShortcutAction
F1Show or hide the keyboard-shortcuts help overlay
F2Focus the product search box
F3Toggle touch-screen mode (Advanced tier)
F4Focus the customer field
F5Toggle fast checkout mode (Advanced tier)
F6Focus the barcode scanner field
F8Hold the current sale
F9Clear the cart
F10Save the current cart as a Quotation (Estimate)
F12Complete the sale
EscClose the shortcuts help overlay, or clear the search box

Troubleshooting & FAQ

Why are some Quick Action tiles greyed out with a lock icon?
Those shortcuts need the Advanced plan tier or above. They still render so you know they exist, but they are not clickable until you upgrade.
A tile I use daily is missing entirely, not even locked.
Quick Bill only shows shortcuts your role already has menu access to elsewhere in the app. Ask your Admin to check Settings → Staff Permissions.
The low-stock alert keeps coming back after I dismiss it.
Dismiss only hides it for the current session; it is re-evaluated every 5 minutes. To stop it appearing at all, turn off "Show low stock alert" in Settings.
I opened a shortcut and now I can't find my cart.
Shortcuts open as an overlay on top of Quick Bill, not a new page — click Close (or press Esc) in the overlay header to return to your cart exactly as you left it.

🧑‍💻 Developer Notes

Source component(s):

  • frontend-app/packages/pos-react-lib/src/pages/QuickBillingPage.jsx
  • frontend-app/packages/pos-react-lib/src/pages/sales/POSBilling.jsx

Backend endpoints used:

  • GET /settings
  • GET /inventory?filter=low&limit=1
  • GET /products (search)
  • GET /inventory/barcode/:code
  • POST /sales
  • POST /quotations
  • POST /salesorders
  • POST /layby
  • GET /promotions/apply
  • GET /giftcards/check

Related tables (db-core repositories):

  • Product
  • Sale
  • SaleItem
  • Customer

Redux slices:

  • navAccess
  • auth
  • license (planInfo.features)

Feature flag key: billing

Access is computed by an internal useQuickBillAccess() hook that mirrors the exact role + plan-feature gating used by the Sidebar and Dashboard (canSee / isFeatureOn / isTierAtLeast), so a tile can never appear here that the sidebar itself would hide. Restaurant and Grocery variant groups are prepended to the standard groups only when settings.posLayout matches; every shortcut renders through a single MODAL_MAP that maps a button key to the actual page component mounted inside the overlay.