Freight GL Coding: Mapping Invoices to the Right Accounts
For logistics finance controllers, cfos and ap/ar leads · Compare approaches

Freight GL Coding: Mapping Invoices to the Right Accounts: Illustrative side-by-side paper form review at a freight payables desk; not a client facility.
Quick answer: freight gl coding
Freight GL coding assigns every audited freight invoice line to an account using three facts: direction, charge type and who controls the goods. Inbound freight that brings stock to its location joins inventory cost under ASC 330-10-30-1 and Ind AS 2 paragraph 11; outbound delivery is a fulfilment or selling cost; abnormal charges and recoverable GST stay out of inventory.
TL;DR — what you’ll learn
- Three fields decide most freight postings: direction (inbound or outbound), charge code and the point where control or title passes. Missing any one should block auto-posting.
- Inbound linehaul, fuel and unloading join inventory; abnormal freight goes to the period under ASC 330-10-30-7, and Ind AS 2 paragraph 16 keeps selling costs out of inventory.
- Allocate a shared inbound bill by receipt weight, cube or value, and require the SKU split to tie back to the invoice within $0.50 or ₹50.
- In India, recoverable GST on a transporter bill goes to an input tax credit account, not stock, and needs the four Section 16(2) conditions plus 180-day payment tracking.
Topics: freight gl coding · freight audit general ledger coding · inbound freight inventory cost · accessorial charge mapping · freight cost allocation
All quantities, amounts, product codes and events are illustrative teaching examples.
The freight audit passed every invoice, accounts payable paid on time, and the controller still spends the third working day of close writing reclass journals. Detention on a late inbound truck sits inside a SKU's standard cost. A customer delivery charge was booked to the inventory clearing account because the buyer's PO number appeared on the bill. On an Indian transporter invoice, the GST went to freight expense, so the input credit was never claimed.
None of those errors is a pricing error, which is why an audit does not catch them. They are coding errors: the line was valid, but the account, the allocation key or the tax split was wrong. A written coding matrix that turns each approved line into one predictable journal, with its evidence attached, removes most of that rework and gives auditors a rule to test rather than a judgement to recreate.
- What this guide covers: the facts that decide each posting, a coding rule table, accessorial treatment, mode and lane segments, allocation keys, month-end accruals and the GST credit split for India.
- What it adds: worked US ($) and India (₹) journals for one inbound and one outbound bill, a JSON coding rule, and a rollout checklist for finance and logistics teams.
What an approved freight invoice still leaves undecided
An approved freight line answers "should we pay this amount?" It does not answer "which account, which cost object and which period?" Those three answers come from facts the audit often never stored: the direction of the move, the point at which the buyer took control of the goods, and whether the charge was normal for that lane.
Our freight audit checklist covers the earlier question of whether a charge is valid, priced correctly and supported by proof of service. This article starts where that one stops: the audited line is accepted, and finance now needs to place it in the general ledger so that inventory, cost of sales and tax balances are right at month-end.
Treat coding as a separate control with its own owner. Logistics knows the move; accounts payable knows the bill; cost accounting knows the inventory valuation; the indirect tax team knows which credit is available. The table below sets out who holds each fact and who approves the rule that uses it.
Scroll horizontally to see all columns.
| Coding decision | Where the fact is held | Owner of the fact | Who approves the coding rule |
|---|---|---|---|
| Direction: inbound, outbound, inter-facility or return | TMS shipment record and purchase or sales order | Transport planning | Financial controller |
| Control or title transfer point | PO or sales contract terms, Incoterms field | Procurement and sales operations | Revenue and inventory accounting lead |
| Charge code (linehaul, fuel, detention, liftgate) | Carrier invoice line and audit result | Freight audit analyst | AP manager |
| Allocation key (weight, cube, value) | Goods receipt note and item master | Warehouse receiving and master data | Cost accounting manager |
| Recoverable tax and credit eligibility | Tax invoice fields and supplier filing status | Indirect tax team | Tax manager |
| Accrual for moves not yet billed | Delivered shipments without a matched invoice | Logistics finance analyst | Financial controller |
Direction and control decide inventory cost versus fulfilment cost
Inbound freight that is needed to bring purchased goods to the receiving location is part of their cost; outbound freight to a customer never is. That single split drives most of the money. The accounting basis is short and close to identical in both markets, so the coding rule can be written once and applied to every entity.
Under US GAAP, ASC 330-10-30-1 defines inventory cost as the expenditures and charges incurred in bringing an article to its existing condition and location. KPMG's inventory handbook reads that as including inbound delivery costs from seller to buyer. ASC 330-10-30-8 adds that selling expenses are no part of inventory cost, and ASC 330-10-30-7 sends abnormal freight and handling costs to the current period.
Freight GL coding for inbound purchases capitalises normal linehaul, fuel surcharge and unloading into inventory under ASC 330-10-30-1 and Ind AS 2 paragraph 11, while abnormal freight is expensed under ASC 330-10-30-7; the weight-based SKU split should equal the invoice line within $0.50 or ₹50 per bill.
Ind AS 2 reaches the same answer in India. Paragraph 10 includes costs incurred in bringing inventories to their present location and condition; paragraph 11 lists transport and handling directly attributable to acquisition as costs of purchase. Paragraph 16 excludes abnormal amounts, storage that is not part of production, and selling costs. ICAI's educational material on Ind AS 2 confirms that distribution costs stay out of inventory.
Who pays the carrier does not settle direction. A supplier may prepay inbound freight and add it to the goods invoice, or a customer may collect a delivery on its own account. Code from the commercial terms: if the goods are yours while they travel to your dock, the freight is an acquisition cost; once a customer controls them, the freight is a cost of fulfilling that sale. The Incoterms ownership questions are covered in our Incoterms freight and customs ownership guide.
- Inbound, buyer-paid freight: capitalise to an inventory freight clearing account, then absorb into item cost at receipt or through the landed-cost run.
- Inbound, supplier-prepaid and invoiced: the freight line on the supplier invoice is still a cost of purchase; code it to the same clearing account, not to freight expense.
- Inter-facility transfers: moving stock between your own sites to a selling location can be inventoriable; moving it back because of a planning error is a candidate for abnormal treatment.
- Customer returns: code return freight to a returns cost account, not to inventory, unless policy explicitly adds it to restocked items.
Outbound freight is a cost of fulfilling a sale, so for outbound lines the main US question is presentation under the ASC 606 shipping and handling election, not capitalisation. ASC 606-10-25-18A says shipping and handling performed before the customer obtains control are activities to fulfil the promise to transfer the good, not a separate promised service.
When shipping happens after control passes, as with many FOB shipping point sales, ASC 606-10-25-18B lets the entity elect to treat it as a fulfilment activity too. The election must be applied consistently to similar transactions, and if revenue is recognised before the shipment occurs, the related shipping costs must be accrued. Without the election, the entity would assess whether shipping is a separate performance obligation that receives part of the price.
For the income statement line, SEC staff said in December 2017 that they would not object to classifying these fulfilment costs within cost of sales, and would also accept a consistently applied earlier policy that placed them elsewhere, with disclosure of significant amounts. In practice, choose one outbound account family, document it in the accounting policy manual, and stop the coding engine from posting outbound freight anywhere else.
A coding matrix for linehaul, fuel and accessorial charges
Every charge code on a freight bill needs one default account for each direction, plus a named exception route. Accessorials cause most miscoding because the same code, detention for example, can be a normal cost of receiving one week and an abnormal cost caused by your own dock the next.
Scroll horizontally to see all columns.
| Charge code on the bill | Inbound default | Outbound default | Exception that changes the account |
|---|---|---|---|
| Linehaul or base rate | Inventory freight clearing | Outbound freight in cost of sales | Expedite caused by an internal planning error goes to abnormal freight expense |
| Fuel surcharge | Follows the linehaul account | Follows the linehaul account | None; fuel never gets its own capitalisation decision |
| Loading, unloading, lumper | Inventory freight clearing | Outbound handling in cost of sales | Re-handling after a receiving error goes to period expense |
| Detention or waiting time | Inventory freight clearing if within contract norms | Outbound freight in cost of sales | Waiting caused by the receiver's own dock congestion goes to abnormal freight expense |
| Liftgate, inside delivery, appointment | Inventory freight clearing | Outbound freight in cost of sales | Billed back to the customer: credit the recovery account, not freight |
| Re-delivery or reconsignment | Abnormal freight expense | Outbound freight exceptions account | Carrier fault: hold for a credit note instead of posting |
| Storage or demurrage at a terminal | Period expense | Period expense | Storage needed in a production process before a further stage, per Ind AS 2 paragraph 16(b) |
The "abnormal" label is a policy decision, not something the carrier tells you. Write the test into the rule: for example, detention counts as abnormal when the receiving appointment was missed by the warehouse, as shown by the yard log, rather than by the carrier. Without a written test, two analysts will code the same charge in different ways and the variance analysis becomes meaningless.
Recoveries deserve their own account. When a customer is rebilled for a liftgate or a supplier is charged back for a missed pickup window, the recovery should not net against the original freight line. Keeping gross charges and recoveries apart lets the logistics team see the true cost per lane and lets finance show the recovery rate as its own figure.
Mode and lane segments that make freight reports usable
Natural accounts tell you what kind of cost a line is; segments tell you where it came from. A freight ledger without mode and lane segments can be correct and still useless, because no one can tell whether a rise in freight cost came from parcel volumes, a new truckload lane or a fuel spike.
- Mode segment: truckload, LTL or part-load, parcel or express, ocean, air, rail and intermodal; keep the list short enough that analysts pick the right value every time.
- Lane or region code: origin and destination region pairs, or a lane ID from the TMS, so cost per lane can be tied to the rate contract.
- Cost centre: the receiving plant, distribution centre or selling business unit that benefits from the move.
- Carrier or transporter ID: held in the AP subledger already; carry it into the GL line so freight spend can be analysed by carrier without joining tables.
Resist adding a segment for every attribute the TMS holds. Segment values that are mandatory but meaningless, such as a dummy lane code entered to get past a validation, are worse than no segment. A practical test: if nobody has used a segment in a monthly report for two quarters, move it to the subledger and drop it from the GL string.
Allocation keys for spreading one freight bill across items
One inbound freight line often covers many SKUs, POs or cost centres. The allocation key should mirror what the carrier priced: weight for dense goods, cube for light and bulky goods, and value only where the charge itself was value-based, such as declared-value insurance.
{
"rule_id": "FRT-IN-TL-01",
"match": { "direction": "INBOUND", "title_passes": "ORIGIN", "charge_code": ["LH", "FSC", "UNL"] },
"debit": "1410-INV-FREIGHT-CLEARING",
"allocate_by": "receipt_weight_kg",
"share_i": "driver_i / sum(driver)",
"rounding_line": "largest_share",
"tie_out_tolerance": { "USD": 0.50, "INR": 50 },
"abnormal_route": { "charge_code": ["DET-INT", "RDL"], "debit": "6120-ABNORMAL-FREIGHT" },
"tax_split": { "IN_GST_recoverable": "1820-ITC-LEDGER", "otherwise": "add_to_line_cost" },
"evidence": ["audit_approval_id", "GRN", "BOL_or_LR"]
}
The formula is the same for every key; only the driver changes. Store the driver on the coding rule rather than letting each analyst choose. Rounding must land on one named line so the split always equals the invoice line exactly, and any receipt quantity change after posting should trigger a re-split, not a manual journal.
In the rule, share_i is the fraction of the freight line assigned to item i, driver_i is that item's received weight, cube or value, and the tolerance is the largest gap allowed between the allocated total and the invoice line before the posting is held. A cube key uses received cubic metres from the item master multiplied by received units.
Accruing freight that has moved but has not been invoiced
Freight cost belongs to the period in which the move happened, not the period in which the bill arrived. Carriers often invoice weeks after delivery, so the coding rules must also run on delivered shipments without a matched invoice and produce an accrual coded exactly as the final bill would be.
Build the accrual from shipment records, not from a percentage of sales. Each delivered, unbilled shipment gets an estimate from the contracted rate, the same direction and charge logic, and the same allocation key. Inbound accruals therefore land in the inventory freight clearing account, not in expense, and outbound accruals follow the ASC 606-10-25-18B requirement to accrue shipping costs when revenue is recognised first.
- Cut-off evidence: proof of delivery or goods receipt dated on or before the period end, held against the shipment ID.
- Estimate basis: contracted rate plus the current fuel table; add accessorials only when the TMS recorded the event, such as a logged detention period.
- Reversal: reverse the accrual at the start of the next period, or match it line by line when the invoice posts, but never both.
- Accrual ageing: review any accrual still open after 60 days with the carrier, since it is either a lost invoice or an estimate that was never valid.
The double-counting risk sits in the reversal step: the accrual reverses automatically on day one, the invoice posts on day ten, and a late duplicate of the same invoice posts again on day twenty. Our article on road freight accrual reconciliation covers cut-off and matching in detail; for coding, the rule is that the accrual and the invoice must use identical account and segment values, or the reversal will leave residues in two places.
GST input credit lines and Ind AS 2 on an Indian transporter bill
On an Indian freight invoice, the tax lines need their own coding before the freight cost is valued. Ind AS 2 paragraph 11 excludes taxes that the entity can subsequently recover from the taxing authorities, so eligible GST goes to an input tax credit account and only the net freight reaches inventory.
Eligibility is set by Section 16 of the CGST Act, 2017. Section 16(2) allows the credit only when the recipient holds a tax invoice or debit note, the supplier has reported it in its statement of outward supplies and the details have been communicated to the recipient, the service has been received, the tax has been paid to the Government, and the recipient has filed its Section 39 return.
Freight GL coding in India routes GST on a goods transport agency invoice to the input tax credit ledger only when CGST Act Section 16(2) conditions hold; Ind AS 2 paragraph 11 then capitalises the net freight, and an unpaid transporter bill older than 180 days triggers reversal of the credit with interest.
- Payment tracking: a Section 16(2) proviso requires the recipient to pay back credit, with interest, when it has not paid the supplier within 180 days of the invoice date, except for reverse-charge supplies. Store the invoice date and payment status on the coded line.
- Time limit: Section 16(4) bars credit after 30 November following the end of the financial year to which the invoice pertains, or after the annual return is filed, whichever is earlier.
- Rate on the bill: from 22 September 2025, Notification 15/2025-Central Tax (Rate) substituted 9% central tax for one goods transport agency entry; the notification's own example shows a GTA charging central tax at 9%. Code the rate the invoice shows, not an assumed one.
- Credit not available: if a condition fails and the tax cannot be recovered, it becomes part of the cost of the freight line and follows that line to inventory or expense.
A contrast with the US is useful here. A US motor carrier invoice normally has no recoverable tax line to split, so the coding question in the US is limited to account, segment and allocation. In India the same bill carries a second decision, credit eligibility, which depends on filings outside the buyer's control and may change after the freight has already been capitalised.
Worked coding of one inbound and one outbound bill in USD and INR
The example below uses illustrative rates and quantities to show how the rules produce journals. The US bill is a buyer-paid inbound truckload with a detention charge caused by the buyer's own missed appointment; the India bill is a GTA inbound load with GST under the forward-charge option, followed by an outbound delivery in each market.
Scroll horizontally to see all columns.
| Line on the bill | US amount ($) | US account | India amount (₹) | India account |
|---|---|---|---|---|
| Linehaul | 2,400.00 | Inventory freight clearing | 48,000 | Inventory freight clearing |
| Fuel surcharge | 312.00 | Inventory freight clearing | Included in linehaul | Not applicable |
| Unloading | 75.00 | Inventory freight clearing | 2,000 | Inventory freight clearing |
| Detention (receiver missed appointment) | 225.00 | Abnormal freight expense | 3,000 | Abnormal freight expense |
| CGST 9% and SGST 9% on ₹53,000 | Not applicable | No recoverable tax line | 9,540 | Input tax credit ledger |
| Total invoice | 3,012.00 | AP carrier account | 62,540 | AP transporter account |
| Capitalised, split by receipt weight | 2,787.00 as 1,393.50 / 929.00 / 464.50 | Weights 9,000 / 6,000 / 3,000 lb | 50,000 as 25,000 / 15,625 / 9,375 | Weights 4,000 / 2,500 / 1,500 kg |
| Outbound delivery to a customer | 1,860.00 | Outbound freight in cost of sales | 22,000 plus GST | Distribution expense, GST to credit ledger |
| If the GST credit fails a Section 16(2) test | Not applicable | Not applicable | 9,000 to inventory, 540 to expense | Tax follows its freight line |
Two checks prove the journals. First, capitalised plus expensed plus tax equals the invoice: $2,787 + $225 = $3,012, and ₹50,000 + ₹3,000 + ₹9,540 = ₹62,540. Second, the SKU split equals the capitalised amount with no residue, because the rounding rule assigns any cent or rupee difference to the largest share.
In the failed-credit row, the ₹9,540 of tax is divided in the same proportion as the lines it was charged on: 18% of the ₹50,000 capitalised freight is ₹9,000 and goes to inventory, and 18% of the ₹3,000 detention is ₹540 and goes to expense. That is why the tax split must run after the direction and abnormal tests, not before.
Which coding steps the ERP enforces and where an analyst decides
Most freight coding can be automatic once direction, charge code and the control point are known. Human judgement is needed for a narrow set of questions: whether a charge is abnormal, whether a commercial term has been read correctly, and whether a tax credit is genuinely available.
Scroll horizontally to see all columns.
| Coding task | Fixed ERP rule | Where software or AI only assists | Who makes the final call |
|---|---|---|---|
| Blocking a line with no direction or charge code | Posting refused until both fields are filled | Not used | Not needed; the rule decides |
| Reading the delivery address on a scanned LR or BOL | Address must match a known site code | Text extraction suggests the site code from the scan | AP analyst confirms the suggestion |
| Deciding whether detention was caused by the receiver | Rule checks the yard log for a missed appointment | Model flags patterns of repeated waiting at one dock | Cost accounting manager |
| Classifying a free-text accessorial such as "special handling" | Unknown codes go to a suspense account | Classifier proposes the nearest charge code with a confidence score | Freight audit analyst |
| Splitting one bill across SKUs | Formula, key and rounding fixed by the rule | Not used | Not needed; the rule decides |
| Confirming GST credit eligibility | Credit held until the supplier's invoice is reported | Matching tool lists invoices missing from supplier filings | Tax manager |
Keep any machine suggestion out of the journal until a person accepts it, and log who accepted it. An auditor testing freight coding will ask for the rule that posted each line or the name of the person who overrode it; a confidence score on its own is not evidence of either.
A short incident trace shows how one gap spreads across three ledgers when the direction field is left blank.
- 28 June, 16:10, receipt GRN-55120: a carrier bill for PO 4500871 arrives with a customer delivery address, but the TMS shipment for it has no direction field because the load was keyed manually.
- 29 June, 09:30, AP posting: the coding engine defaults to the PO account and debits inventory freight clearing for $1,240, treating a customer delivery as an inbound acquisition cost.
- 30 June, 18:00, landed cost run: the clearing balance is absorbed into three SKUs received that week, raising their unit cost and the inventory balance at quarter-end.
- 8 July, 11:45, margin review: the customer's order shows freight cost of nil and an unusually high margin; cost accounting traces the bill and posts a reclass journal across two periods.
- Control added: lines with a blank direction are now refused at posting, and any bill whose delivery address is a customer site cannot debit the inventory clearing account.
Rolling out a freight coding matrix without months of reclasses
Introduce the matrix in parallel with the old coding for one close, compare the two, and switch only when the differences are explained. Start with the carriers and lanes that carry most of the spend, because a coding rule that is right for 80% of the value removes most reclass work.
Before go-live, confirm that the accounts, segment values and tax rules exist in every legal entity that will use the matrix, and that the inventory team agrees how the clearing account is absorbed into item cost. Coding rules also need a change log: when a rule changes mid-quarter, auditors will ask which lines posted under the old version.
Freight coding rollout runs the new matrix beside the old ERP posting for one month-end close, accepts the switch only when unexplained differences fall below 1% of freight spend, and records every rule change with an effective date so ASC 330-10-30 and Ind AS 2 paragraph 16 treatments stay traceable.
Scroll horizontally to see all columns.
| Checkpoint | Pass condition | Evidence to keep | Owner |
|---|---|---|---|
| Direction and control point on every shipment | No blank direction on audited lines for a full month | Exception report from the TMS | Transport planning |
| Charge code list mapped | Every carrier charge code maps to one default per direction | Signed coding matrix | Financial controller |
| Abnormal tests written | Each abnormal route has a factual test, such as a yard log entry | Policy note with examples | Cost accounting manager |
| Allocation tie-out | All splits equal the invoice line within $0.50 or ₹50 | Tie-out report per close | Cost accounting manager |
| Tax split in India | GST lines coded to the credit ledger only when Section 16(2) checks pass | Credit eligibility report | Tax manager |
| Accrual parity | Accruals use the same accounts and segments as invoices | Accrual versus invoice comparison | Logistics finance analyst |
| Parallel run | Unexplained differences under 1% of freight spend | Parallel run reconciliation | Financial controller |
Freight coding sits between logistics and the general ledger, so it touches several of the pages in our logistics and supply chain library, from invoice audit to accrual and landed cost. If you are scoping a freight coding engine or a broader freight audit and pay replacement, you can describe your carriers, entities and ledgers through our request for proposal form.
Discuss this workflow
Describe your current systems, the recurring exception and the outcome you need. Keep shipment, customer and financial records out of the initial message.
Common operational questions
Practical answers for operations, engineering, and finance teams working on freight gl coding in logistics & supply chain.
Is inbound freight always capitalised into inventory?
Where should outbound freight to customers be posted?
How should one freight bill be split across several SKUs?
Does GST on a transporter invoice belong in inventory cost in India?
References
Sources checked 13 November 2026. US and India statutory authorities and vendor documentation support platform facts; the worked examples and diagrams are original.
- FASB - Accounting Standards Codification 330-10-30-1, 30-7 and 30-8 (Inventory, initial measurement)Paragraph text checked against the verbatim excerpt reproduced in the KPMG Inventory handbook (2023), because the Codification site requires sign-in. Accessed 13 November 2026.
- FASB - Accounting Standards Codification 606-10-25-18A and 25-18B (shipping and handling activities, added by ASU 2016-10)Paragraph text checked against the verbatim Codification excerpt in EY Financial reporting developments, Revenue from contracts with customers. Accessed 13 November 2026.
- US SEC - Barry Kanczuker, Associate Chief Accountant, remarks before the 2017 AICPA Conference on Current SEC and PCAOB Developments (4 December 2017)Staff view that shipping and handling fulfilment costs may be classified in cost of sales or under a consistently applied prior policy. Accessed 13 November 2026.
- KPMG - Handbook: Inventory (2023), Questions 3.2.10 and 3.2.80Source of the reproduced ASC 330-10-30 text and interpretive guidance on inbound and outbound shipping costs. Accessed 13 November 2026.
- Ministry of Corporate Affairs - Ind AS 2 Inventories, paragraphs 10, 11, 15 and 16MCA blocks automated access; paragraph text checked against a reproduced copy and ICAI's Educational Material on Ind AS 2. Accessed 13 November 2026.
- ICAI - Educational Material on Ind AS 2 Inventories (distribution costs, Question 4)Confirms that distribution costs remain excluded from inventory cost under Ind AS 2. Accessed 13 November 2026.
- CBIC - Central Goods and Services Tax Act, 2017, Section 16 (eligibility and conditions for input tax credit)Sub-section 16(2) clauses (a) to (d), the 180-day payment proviso and the Section 16(4) time limit. Accessed 13 November 2026.
- Ministry of Finance - Notification No. 15/2025-Central Tax (Rate), G.S.R. 663(E), 17 September 2025Gazette text checked for the GTA central tax entry substituted to 9% from 22 September 2025 and the notification's own GTA illustration. Accessed 13 November 2026.
- ASC X12 — EDI Supply Chain & Transportation Transaction Sets (204/210/214/856/940/945)US standard for electronic data interchange across shippers, 3PLs, and motor carriers.
- FMCSA — 49 CFR Part 395 Hours of Service & Electronic Logging Devices (ELD)US federal motor carrier dispatch and driver duty-status compliance mandate.
- ULIP & NIC GST E-Way Bill Portal — Unified Logistics & Rule 138 ComplianceIndian statutory goods-in-transit and multi-modal logistics verification framework.
