Goods Receipts Built
A Goods Receipt (GRN) is the record of goods actually arriving from a Vendor. Receiving a GRN is the step that adds the quantity into stock — it's the answer to the earlier "how do I add quantity to a product" gap. It is the third piece of the Purchasing area of the console, and it builds directly on Purchase Orders.
What a GRN is
A Purchase Order only commits AIR to buy something — it doesn't move stock or money. A Goods Receipt is what happens when the goods physically turn up: it records the vendor, the warehouse, which physical location within that warehouse the goods land in, and the quantity of each product received. Posting (receiving) a GRN is the operation that increases on-hand stock.
Where to find it & who can see it
Open Purchasing › Goods Receipts in the left navigation, next to Purchase Orders. A GRN can also be started directly from a Purchase Order that is Approved or Partially received via its Receive goods row action.
Two ways to receive
- Against a purchase order — pick an approved (or already partially-received) PO in the
purchase_order_idfield. Its vendor and warehouse pre-fill automatically, and its lines pre-fill with the outstanding quantity of each product still owed — editable down if only part of the order has actually arrived. - Standalone, with no PO — leave the purchase order field empty, pick the vendor directly, and add product lines yourself. This is the way to load opening stock for a new product, or to receive goods that were never raised as a PO.
Creating a GRN
Select New goods receipt from the list, or use Receive goods on an approved PO's page (which pre-selects that PO).
| Field | Type | Required | Notes |
|---|---|---|---|
purchase_order_id | Select | No | Searchable dropdown, limited to POs in the Approved or Partially received state. Choosing one auto-fills vendor and warehouse below and pre-fills the outstanding lines. |
vendor_id | Select | Yes | Searchable dropdown over Vendors. |
warehouse_id | Select | Yes | Searchable dropdown over Warehouses. |
dest_location_id | Select | Yes | Labelled Receive into — which physical stock location inside the chosen warehouse the goods land in (e.g. Main Stock, Attached, Loose). Options are limited to active, physical locations in that warehouse. |
receipt_date | Date | Yes | Defaults to today. |
notes | Textarea | No | Free text, full width. |
On save, the console assigns a grn_number automatically in the form GRN-YYYY-##### (e.g. GRN-2026-00001) and the GRN starts life in the Draft state.
Lines
Open the GRN and switch to its Lines tab to see or adjust what's being received.
| Field | Type | Required | Notes |
|---|---|---|---|
product_id | Select | Yes | Searchable dropdown over Products. |
quantity_received | Number | Yes | Minimum 0.01. For a line linked to a PO line, cannot exceed that PO line's outstanding (ordered minus already-received) quantity. |
Lines can only be added, edited or removed while the GRN is a Draft. Once the GRN is received, each line becomes read-only and shows the stock move that posted it, alongside the PO line it fulfilled (if any).
Draft → Receive
Build the GRN as a Draft — header first, then lines — and use the Receive row action when it's ready. Receiving does three things in one step:
- Posts a stock move for each line, taking stock from a supplier/production source into the chosen Receive into location — on-hand quantity for that product in that location goes up immediately. The source is picked for you: if this warehouse has its own Supplier or Production location, that one is used; otherwise the receipt falls back to the shared, portal-wide Suppliers/Production endpoint. A warehouse therefore no longer needs a source location of its own to receive goods — see Warehouses & Carriers for what those shared endpoints are.
- If the GRN is linked to a PO, records how much of each ordered line has now arrived and advances the PO's state to Partially received (some lines still outstanding) or Received (every line fully received).
- Stamps
received_byandreceived_at, and moves the GRN itself to Completed — final; there is no way back to Draft.
A GRN can be Cancelled only while it is still a Draft — once received, it's final and cannot be cancelled or reversed from this screen.
You cannot receive more of a PO line than was actually ordered on it. Both adding/editing a line and the final Receive action check the line's outstanding quantity (ordered minus already received) and reject anything over that.
Lifecycle
A GRN moves through a small state machine, shown as a coloured badge on the list and on the GRN's own page:
| State | Badge colour | Meaning |
|---|---|---|
| Draft | Gray | Being built — header and lines are both still editable; nothing has posted to stock yet. |
| Completed | Success (green) | Received. Stock has posted into the chosen location, the linked PO's received quantities are updated, and the GRN is final. |
| Cancelled | Danger (red) | Abandoned while still a Draft — no stock or PO effect. |
Goods Receipts are step three of Purchasing, and the two steps after them are live too: raise a Vendor Bill to apply GST to what actually arrived and record what is owed, then settle it with a Vendor Payment.
Related pages
See Purchase Orders for the commitment a GRN can be received against, Vendors for the supplier master, Warehouses for the physical locations goods are received into, Stock on Hand for how the resulting stock is tracked, and Vendor Bills and Vendor Payments for the steps that follow.