Scan a supplier bill
Photograph a printed supplier bill, let the browser read the line items, correct them in a review grid, and receive the stock through a purchase order and GRN in one go.
Scan bill turns a photo of a supplier's printed invoice into received stock. The bill is read on your phone — the photo is never uploaded — and every line lands in an editable grid. Nothing is saved until you press Receive stock and confirm.
Scanning needs the Manager role or above, with write access to both Inventory and Suppliers & POs.
Scan a bill#
- In Inventory, click 📷 Scan bill.
- Take photo (opens the rear camera) or Choose file. The first time, Preparing scanner… downloads the reader (about 6 MB, kept for next time).
- Wait for Reading bill… to finish. The grid opens with the supplier, invoice number, date, tax lines and every line item it could read.
- Check the supplier — matched by GSTIN when the bill prints one, otherwise by name (shown amber so you look twice). Pick another, or Add supplier with a name and phone.
- Check every row. Amber cells were read with low confidence; a red row means qty × rate does not equal the amount printed. Fix the number, delete the row, or add one.
- For each row choose the product: the suggested match, another from search, or Create as new product (shows a NEW badge and asks for a selling price, defaulting to rate × 1.3).
- Compare Computed total with Bill total in the footer. A difference is shown in red — usually freight, discount or a misread digit — but does not block receiving.
- Press Receive stock, read the summary, and Confirm.
Bills longer than one page: press 📷 Add another photo on the grid. Lines are appended; header fields already filled are never overwritten.
What happens on Receive stock#
- New rows become products (SKU auto-generated as
NAMEPREFIX-NNNNwhen left blank, supplier set to this bill's supplier, cost = the bill rate). - A purchase order is created in Confirmed and a goods received note receives every line at full quantity, so stock and the moving-average cost update exactly as a normal GRN.
- The supplier ledger is credited with the bill total you confirmed. If a row was skipped, it is credited with the received lines plus GST instead, and the summary says so.
- The invoice number and date are kept on the purchase order. Receiving the same supplier + invoice number again is refused unless you choose Receive anyway.
All of this is one transaction: if anything fails, nothing is saved.
Partial success#
Rows the server rejects (unknown HSN, a product deleted meanwhile, a SKU already in use) are skipped and listed under Skipped rows with the row number and reason; the other rows are received. Fix and add the missing products from + Add product.
What scans well / what doesn't#
| Scans well | Type it in the grid instead |
|---|---|
| Printed GST tax invoices with columns (Description / HSN / Qty / Rate / Amount) | Handwritten kachha bills |
Thermal slips with qty x rate = amount lines | Bills in Urdu, Hindi or Kashmiri script (English only for now) |
| Flat, well-lit photos of the whole page | Blurry, angled or shadowed photos — retake, or add another photo of the missed part |
| Amounts with ₹, Rs, commas and decimals | Columns that run together without spaces (the row is kept, marked amber) |
Quantities are whole numbers. Fabric billed as 12.5 m is flagged amber — round it, or receive it as a ROLL.
Row errors#
| Reason shown | Fix |
|---|---|
| Choose a product | Pick a match or Create as new product. |
| Qty must be a whole number ≥ 1 | Round the quantity. |
| HSN must be 4–8 digits / Unknown HSN code … — not in the textile range | Use a 4-digit code from 5001 to 6310. |
| SKU used twice in this bill / SKU … already exists | Change or clear the SKU (it is generated when blank). |
| Creating N products would exceed your plan's limit of N | Upgrade, or match more rows to existing products. |
| This bill was already received as PO-… | It is a duplicate; press Receive anyway only if it really is a second delivery. |
Related#
Last updated 22/09/2026