Landed Cost — Freight, CHA, Insurance & Customs Duty to the Asset
Build the depreciable base of an asset from every cost head with a per-component ledger, document linkage to source, and a basic / GST / cess split per component that keeps Input Tax Credit traceable.
The Challenge
An imported asset's invoice value is rarely its true cost. By the time it reaches the user, the cost has picked up freight (a separate vendor invoice), CHA charges (a third vendor), in-transit insurance (a fourth), customs duty (a Bill of Entry payment to customs), and installation (a fifth invoice).
Entering a single "asset cost" number on the fixed asset register and capturing the cost components in a spreadsheet or in narrative notes leaves no audit trail. The accounting treatment differs by component — capitalise, expense, recover as ITC — and that treatment cannot be reconstructed from a single number.
Auditors flag this under CARO 2020 Clause 3(i) (proper records of fixed assets including quantitative details and situation) and under Schedule II of the Companies Act 2013 — depreciable amount must be based on actual cost, evidenced not asserted.
How ProcureTrail Addresses This
Landed Cost Categories — Governance-Enforced
Every cost head — Freight, CHA, Insurance, Installation, Customs Brokerage — is a LandedCostCategory master record, scoped to the organisation, with a unique name. Reserved-name guard rejects categories that resemble customs duty heads ("customs duty", "BCD", "SWS", "compensation cess", "IGST on import") with HTTP 422 CUSTOMS_DUTY_PATTERN_RESERVED — duties are captured on the Bill of Entry, never as a category, so double-capitalisation is impossible. Categories referenced by any PO line cannot be hard-deleted — soft-delete only, preserves the historical linkage.
capitalize_to_asset — Expense or Capital, Decided at PO
Every PO line carries a Boolean capitalize_to_asset. When set, the line is paired with a landed cost category and at GRN posting linked to one or more goods GRN lines via a GRNLandedCostLink record with an explicit allocated amount. The line does not enter the period expense register — it writes an AssetCostComponent row to the asset receiving the cost. Allocation guards: cumulative allocations cannot exceed the source line's basic value × ordered quantity; self-referential links rejected at validation; soft-reversible on GRN reversal.
AssetCostComponent Ledger — The Audit Trail
Every contribution to the asset's landed cost is its own row. The ledger carries category, vendor invoice (number, date, amount), source documents (PO, SA, GRN with line references), basic / GST / cess split for ITC traceability, per-component ITC posture (itc_eligible, itc_blocked_reason, cess_itc_eligible) mirroring the parent line, and a reversed flag. GET /asset-register/{id}/cost-breakdown returns the full component ledger for any asset — when an auditor asks "what is the freight component of this asset's book value?", the answer is one query.
Total Landed Cost — Always Derived, Never Edited
After every GRN post and every GRN reversal, recalculate_landed_cost(asset_id) re-sums the active (non-reversed) components and writes the total back to AssetRegister.total_landed_cost. The total is never edited manually — it is always derived from the component ledger. Drift between the components and the headline total is structurally impossible. Reversal cascades through automatically: a soft-reversed component is excluded from the next recompute.
SA D6 Routing Override — The Goods Receiver Signs Off
When every line of a Service Acceptance belongs to expense POs marked capitalize_to_asset=true AND at least one GRNLandedCostLink exists, the SA approval routes to the final approver of the linked GRN — not to the expense PO's normal approval matrix. The person who received the asset (and is on the hook for its book value) approves the cost that gets added to its base. If multiple GRNs are linked, the GRN with the highest cumulative linked amount wins. Mixed SAs (any non-capitalise line) fall through to standard routing.
Imports — Bill of Entry as the Source of Duty
For imports under the v2 Import Accounting flow, customs duty (BCD, SWS, IGST, Cess) is capitalised directly from the Bill of Entry line — not from header-level proportional allocation across landed cost categories. The customs duty journal voucher and the asset capitalisation read the same per-HSN-line BoE figures, so the total landed cost on the asset matches the Fixed Assets debit total in Tally byte for byte. See Import Accounting for the recovery-path matrix and per-bucket duty routing.
Three Source Documents Per Cost Component
Every AssetCostComponent row carries up to three source-document references — the PO line that authorised the cost, the SA line that accepted the service (where applicable), and the GRN line that received the underlying goods. The triple-linkage answers three audit questions in one query: who authorised the spend, who accepted delivery of the cost head, and which physical receipt did it attach to. The basic / GST / cess split keeps the capitalised portion and the ITC-claimable portion independently reconstructable per component.
Cost Composition Behind Each Asset
Every cost head reaches the asset through one of two paths — domestic landed cost categories or the imports Bill of Entry. Both write the same AssetCostComponent ledger.
Basic Asset Cost
The primary goods PO line — unit basic rate × ordered quantity, written to AssetCostComponent at GRN post with the GRN as source. The first row in every asset's cost breakdown.
Domestic Landed Costs
Freight, CHA, Insurance, Installation, Customs Brokerage — every category that the org defines. Each captured on its own expense PO (capitalize_to_asset=true), allocated at GRN to one or more goods GRN lines.
Customs Duty (Imports Only)
BCD, SWS, IGST on import, Compensation Cess — captured per-HSN-line on the Bill of Entry. Capitalised portion written directly to AssetCostComponent; ITC-eligible portion routed to Input IGST. No category needed.
Reversals
GRN reversal soft-flags every AssetCostComponent it wrote. The recompute excludes soft-reversed rows. The total landed cost on the asset moves back to its prior value automatically — no manual adjustment.
Auditors asking "show me how this asset reached its book value" get a chronological component ledger — basic + every landed cost head + every customs duty head — each row linked to its source document and vendor invoice. The cost-breakdown endpoint is the working evidence behind Schedule II depreciable amount.
Compliance Mapping
Companies Act 2013
Schedule II
Depreciable amount based on actual cost. Component ledger captures every contribution; total_landed_cost derived, not entered. The depreciable base is reconstructable per asset on demand.
CARO 2020
Clause 3(i)
Proper records of fixed assets including quantitative details and situation. Per-asset cost-breakdown endpoint surfaces every cost component with PO, SA, GRN and vendor invoice linkage.
Ind AS 16 / AS 10
Cost of Acquisition
Directly attributable costs at cost of acquisition. The capitalize_to_asset flag pairs each cost head with its target asset; GRNLandedCostLink records the allocation amount and source line.
CGST Act 2017
Section 17
ITC on capital goods. Basic / GST / cess split on each component; per-component ITC fields (itc_eligible, cess_itc_eligible) preserve eligibility through capitalisation to the asset cost component level.
Further Reading
Import Accounting — Bill of Entry & Five-Bucket ReceiptsHow customs duty heads (BCD, SWS, IGST, Cess) reach the asset cost component on imports without going through landed cost categories.
Per-Line GST ITC — Block One Item, Not the Whole InvoiceWhy the GST and cess portions of each landed cost component carry their own ITC posture all the way to the asset cost ledger.
Tally Asset Integration — From PO to Asset MasterHow the AssetCostComponent ledger maps to the Tally Fixed Assets debit at goods receipt posting.
Assess How This Applies to Your Organisation
Share a brief overview of your typical landed cost composition — domestic freight versus imports, single-vendor versus multi-vendor — and we will evaluate how the per-component asset cost ledger fits your books.