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_qtyReceived and accepted into stock or as assetn/a
normal_loss_qtyPermissible transit loss within toleranceAbsorbed or written off (ITC pairing enforced)
rejected_qtyMaterial rejected at receiptRecover from vendor (basic + optionally duty) or write off
damaged_qtyMaterial damaged in transitRecover from insurer or from vendor
short_landed_qtyQuantity 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 a VENDOR_PICKUP event 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 a SCRAP event with a 10–2,000 character scrap_reason and an authorized_by user 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.

3
Quantity buckets
4
Delivery modes
0
Manual asset creation
100%
Gate-to-register traceability

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.

Book a Consultation