Goods Receipt & Gate Entry
From security gate to asset register — structured goods receipt with inspection, 3-bucket quantity tracking, multi-level approval, and automatic asset creation on posting.
The Challenge
Goods arrive at the gate and are accepted without inspection. Damaged items enter the store. Rejected quantities are not recorded. When the invoice arrives, there is no evidence of what was actually received.
GRN and gate entry are disconnected processes — often in different systems or spreadsheets. Quantities accepted at the gate don't match GRN records. Short receipts are discovered during audit, not at receipt.
Assets are created manually after goods receipt — often weeks later. The delay means the asset register is always behind reality. New assets miss tagging cycles and verification campaigns.
How We Address This
Gate Entry Inspection
Security records what arrives: challan number, vehicle, supplier, and per-line 3-bucket breakdown (accepted, rejected, damaged). Rejection and damage documented with reason and informed user. Optional — off by default.
3-Bucket Quantity Tracking
Every receipt line tracks three quantities: accepted, rejected, and damaged. The equation must balance: received = accepted + rejected + damaged. Over-receipt is blocked — cumulative accepted cannot exceed ordered.
Delivery Mode Enforcement
Four modes control how goods are received: INDEPENDENT (any quantity, any time), PIECEMEAL (multiple partial GRNs), SINGLE (all-or-nothing), TOGETHER (all lines complete in one receipt). Set per PO.
Multi-Level GRN Approval
Snapshot-driven approval with level-by-level progression. Submitter cannot self-approve. The approval chain is frozen at submission and unaffected by later configuration changes.
Automatic Asset Creation
When a GRN is posted, asset register entries are created automatically with generated asset IDs, linked to the PO line, GRN line, and vendor. No manual asset creation step.
Condition Tracking
Per-line condition on receipt (Good, Partial, Damaged), rejection reason, damage remarks, material disposition, and informed user. Creates a complete receiving record for audit.
Withdraw a goods receipt back to DRAFT
POST /grn/{id}/withdraw is the receipt-side mirror of the requisition withdraw flow. The GRN creator can walk a SUBMITTED, PARTIALLY_APPROVED or APPROVED goods receipt back to DRAFT for re-edit, provided a 1–500 character withdraw_reason is supplied. The endpoint is blocked once the goods receipt is POSTED. Every withdraw event is audit-logged with before/after state.
Import goods receipts — five-bucket model
For import POs (where the org has opted into Import Accounting v2), the receipt model expands beyond the domestic three-bucket layout. Each GRN line carries five quantity buckets:
| Bucket | Meaning | Typical recovery path |
|---|---|---|
accepted_qty | Received and accepted into stock or as asset | n/a |
normal_loss_qty | Permissible transit loss within tolerance | Absorbed or written off (ITC pairing enforced) |
rejected_qty | Material rejected at receipt | Recover from vendor (basic + optionally duty) or write off |
damaged_qty | Material damaged in transit | Recover from insurer or from vendor |
short_landed_qty | Quantity invoiced but never landed (port shortage) | Recover from customs (drawback) or from insurer |
At post, Σ buckets ≤ received_qty is enforced — over-allocation is rejected with a structured 422. Each non-accepted bucket carries its own *_recovery_path, and the recovery path drives where customs duty and basic value route in Tally. Customs duties (BCD, SWS, IGST, Cess) are read from the linked Bill of Entry line — not allocated proportionally from a header total. See Import accounting for the full flow.
Pickup and scrap — who collected the rejected items?
When goods are rejected at receipt or at the gate, the question of physical disposition (who collected them, when, against what challan and vehicle) lives outside the GRN quantity book. ProcureTrail tracks this in an append-only pickup log with two complementary endpoints:
POST /gate-entry/lines/{id}/record-pickup(when gate entry is enabled) — records aVENDOR_PICKUPevent with seven structured capture fields: collected-by person and company, collector type (vendor / transporter / other), phone, challan number, vehicle number, and remarks.POST /gate-entry/lines/{id}/scrap(or the GRN-line fallback for orgs without gate workflow) — records aSCRAPevent with a 10–2,000 characterscrap_reasonand anauthorized_byuser reference. Only PO approvers and admins may authorise a scrap.
Every pickup or scrap is one row. Corrections flow through a soft-delete void (admin-only, with reason captured) that re-aggregates the denormalised collected totals on the source line — never an edit-in-place. The audit trail is forensic.
A unified /collections/pending register lists every receipt that still has rejected or damaged quantity uncollected, with days_pending ageing and a deep-link back to the originating gate entry or GRN line. See the gate entry and quality inspection guide for the operational walkthrough.
Landed cost capitalisation at posting
When a goods GRN is posted, ProcureTrail allocates the appropriate share of any linked expense PO lines (freight, CHA, insurance, customs handling, etc.) to the goods lines and writes an AssetCostComponent row per allocation. The component carries the source PO/SA/GRN reference, the vendor invoice, and a basic / GST / cess split so each cost head's ITC posture is independently traceable. The asset's total_landed_cost field is recomputed from the surviving (non-reversed) components. See Landed cost.
Compliance Mapping
Companies Act 2013
Section 143(3)(i)
Internal controls over goods receipt. Gate entry with security inspection, multi-level GRN approval, and posting controls.
CARO 2020
Clause 3(i)
Asset register entries match actual receipt. GRN posting creates assets with verifiable quantities and values.
GST Act
Invoice Matching
Invoice matching at receipt. Quantity, price, and GST discrepancies detected before posting. Vendor debit notes generated with correct tax treatment.
What Happens When a GRN Is Posted
When a goods receipt is posted, two things happen simultaneously. First, assets are created in the fixed asset register — with classification, department, location, cost, and depreciation class inherited from the purchase order. Each asset gets a unique system-generated ID and is ready for QR tagging. Second, when Tally integration is enabled, a purchase voucher is generated in Tally with the correct ledger mapping, GST split, and narration — no manual accounting entry required.
Assess How This Applies to Your Organisation
Share a brief overview of your goods receipt volumes and we will evaluate how structured gate entry and GRN controls may apply to your setup.