GRN (Goods Receipt Note)
Receive against a PO to post warehouse stock and update qtyReceived — without double-counting bill-posted qty.
Business Suite · Purchases
पथ: Store → Purchases → [PO] → Receive
परिभाषा
Store → Purchases → [PO] → Receive(acceptedQty[])
A GRN (Goods Receipt Note) records goods accepted from a supplier against an open PO (Purchase Order). When the GRN posts, stock increases (warehouse / inventory movement + sellable quantity) and PO line qtyReceived increases. Accepted quantity cannot exceed remaining receivable quantity.
Compatibility
- Starter+ with purchases / inventory capability.
- Requires an existing PO that still has remaining receivable quantity (PO approved/sent or already partially received — not draft/submitted/cancelled/closed).
- Professional+ records the receive on the active / default warehouse ledger.
- Double-stock rule: quantity already posted via bill-without-GRN must not be GRN’d again.
Prefer GRN before billing when the warehouse confirms physical receipt. That keeps stock, payables, and PO receive progress aligned with Flow A on Purchases and inventory.
Path, fields, and terminology
Store → Purchases → open PO → Receive
lines[]: { poLine, acceptedQty }
// business rule: acceptedQty ≤ remainingQty
Effect on post:
stock +acceptedQty
PO line qtyReceived += acceptedQty
PO.status → partially_received | received acceptedQty — quantity accepted on this GRN.
qtyReceived — cumulative received quantity on the PO line (prior GRNs + bill-posted receive).
remainingQty — orderedQty − qtyReceived (what you may still accept).
Business rule: acceptedQty ≤ remainingQty.
When stock posts (current BonikBiz UI)
- On Store → Purchases → [PO] → Receive, the GRN is created and posted immediately (status completed, stockPosted true).
- There is no separate “Save draft GRN” step in the current Purchases UI — Receive posts stock in the same action.
- Default Receive (no custom lines) accepts all remaining receivable qty on the PO.
- Partial receive: pass acceptedQty per line (≤ remainingQty) so leftover qty stays open for a later GRN.
Important: bill-without-GRN vs GRN (double-stock rule)
If a supplier bill already posted stock for a quantity (Flow B) and increased qtyReceived, that quantity is already received for stock purposes.
Do not create a GRN for the same quantity again — this is a hard double-stock prevention rule, not only a tip.
Receive goods (GRN)
- Open Store → Purchases and select an approved / sent / partially_received PO with remaining qty.
- Choose Receive (GRN).
- Confirm receive — stock increases and qtyReceived updates (default: all remaining qty).
- Optionally create the supplier bill from the same PO page (Store → Purchases → [PO] → bill). Prefer billing after receive so you bill received qty. The API can also create a bill from grnId; the store UI bills from the open PO.
- Verify sellable quantity under Store → Inventory (and Warehouse balances on Professional+).
Examples
Full receive Ordered 20 → GRN accepted 20 → qtyReceived 20 → remaining 0 → PO.status received → stock +20 Partial then complete Ordered 20 → GRN-1 accepted 18 → qtyReceived 18 → remaining 2 → PO.status partially_received → stock +18 → GRN-2 accepted 2 → qtyReceived 20 → remaining 0 → PO.status received → stock +2 Bill without GRN (do not GRN again) Ordered 20 → Bill posts stock for 20 → qtyReceived 20 → remaining 0 → no GRN for those 20
PO receive progress uses status values partially_received and received (same PO.status field as document workflow — see Purchases and inventory).
Corrections: do not delete posted GRNs
- Do not delete posted GRN history to “fix” a mistake.
- Correct wrong receives with void / reverse / inventory adjustment paths your store supports, so the audit trail stays intact.
- Cancel on the PO stays blocked while any qtyReceived > 0 — unwind stock first.
Common errors
- Accepted qty too high — reduce to remainingQty (orderedQty − qtyReceived).
- Stock looks doubled — same qty may have been billed without GRN and also GRN’d; check qtyReceived on the PO.
- PO still not received after a bill — receive progress follows GRN or bill-posted stock receive, not a bill that did not post stock.
- Cannot cancel PO after GRN — reverse/adjust stock before cancel is allowed.
Where GRN sits in the purchase flow
Normal: Supplier → PO → GRN → Stock → Bill → Payment Exception: Supplier → PO → Bill → Stock/Received → Payment (no second GRN for that qty)
This page is the operational GRN article. Use PO and Purchases and inventory for the wider map.