To extract ICD/CFS terminal invoices in India, the spreadsheet needs more than supplier name, invoice number, date and total. It should capture the invoice header, GSTIN, port or terminal name, container and shipment references, and every charge line with its SAC, tax split, amount, ground-rent period and ledger hint.
That output must be shipment-keyed, not just invoice-keyed. A CFS invoice, ICD terminal invoice, CHA bill of charges or freight-forwarder pass-through bill often has to reconcile back to a Bill of Entry, Shipping Bill, IGM, container number, vessel/voyage, port code and landed-cost workpaper. If those references disappear during extraction, the finance team still has to rebuild the accounting file manually.
The practical problem usually starts with a mixed bundle: last week's CFS handling bills, an ICD ground-rent invoice, two CHA bills of charges, and a forwarder invoice that combines freight pass-throughs with terminal expenses. A generic invoice OCR export may give one row per invoice. The accountant needs one row per charge line, with enough context to decide whether the line is terminal handling, clearing and forwarding, Customs House Agent service, ground rent, examination, reimbursement or another recoverable cost.
The difference matters because the same PDF can carry multiple accounting treatments. One line may use SAC 996711 for container handling, another may use 996713 for clearing and forwarding, and a reimbursement line may need separate review before it is posted. The extraction file is not finished when it matches the invoice total. It is finished when every material line can be checked against the shipment file, mapped to a ledger, reviewed for GST and imported or booked without re-reading the PDF.
Know which freight document you are extracting
Start by classifying the document before extracting the line items. A Container Freight Station invoice is usually tied to a near-port operation around locations such as JNPT/Nhava Sheva, Chennai, Tuticorin, Mundra or Kolkata. The vocabulary tends to be handling, examination, ground rent, documentation, weighing, fumigation and other CFS charges connected to container movement near the port.
An Inland Container Depot invoice is similar in accounting impact but different in pattern. ICD locations such as Tughlakabad, Whitefield-Bangalore, Sanand-Ahmedabad, Tondiarpet-Chennai, Dadri and Loni often show inland terminal handling, storage or ground-rent slabs, container movement, rail-linked charges and import/export loaded-container rates. The extraction should therefore carry an ICD/CFS/terminal type field, not only the supplier name.
A CHA bill of charges needs another treatment. It may contain documentation fees, customs filing fees, examination coordination, exchange-rate adjustments, principal-account disbursements and recoveries paid on behalf of the importer or exporter. Those lines should not be merged into one service total. They need separate charge descriptions, SAC values where shown, reimbursement markers and shipment references. This is where customs broker document processing and import-entry data extraction overlaps with invoice extraction, because the bill is useful only when it can be tied back to the import or export file.
Freight-forwarder pass-through invoices are the most mixed. A single bill can combine ocean or air freight, terminal charges, customs expenses, local transport, CFS charges and recoveries. Broader freight document extraction across invoices, BOLs, manifests, and customs forms is relevant when the shipment file includes multiple document types, but the accounting export still needs to preserve the Indian freight-specific line detail. Classify the document first, then extract the rows with that document type attached to every line.
Map each charge line to SAC, amount and ledger hint
The charge table is the part of the extraction that decides whether the file is useful. One CFS or ICD invoice may include container handling, ground rent, wharfage, demurrage or storage, examination, weighing, fumigation, MOT movement, e-seal fees and port congestion surcharges. A CHA or forwarder bill may add documentation fees, customs filing fees, clearing charges, exchange-rate adjustments and reimbursement lines. Flattening all of that into one invoice total destroys the accounting work the team needs to do.
The SAC value should sit on each line wherever the invoice shows it. The GST Council explanatory notes for SAC 996711, 996712 and 996713 classify SAC 996711 as container handling services including container freight terminal facilities, SAC 996712 as Customs House Agent services, and SAC 996713 as clearing and forwarding services. For an Indian freight-accounting export, those are not interchangeable labels. They are review points for ledger mapping, GST checking and reporting.
A practical line-level schema should include charge description, SAC, quantity or basis, taxable value, CGST, SGST, IGST, total amount, ITC review flag, ledger hint and landed-cost allocation hint. For ground rent, storage and demurrage, add the slab or period where visible: number of days, date range, container size/type and the rate basis. That is the difference between "ground rent" as a vague expense and a row the accountant can test against the terminal schedule or shipment delay record.
Ledger hints should stay conservative. A row can be marked as terminal handling expense, storage or ground rent, clearing and forwarding fee, CHA service fee, documentation fee, reimbursement or landed-cost allocation candidate. The extraction should not decide tax eligibility or accounting policy by itself. It should make the review faster by putting the charge description, SAC, tax split and shipment context in the same row.
Keep the shipment keys beside every invoice row
Shipment references are what turn an extracted invoice into a reconcilable accounting file. If the CFS charge sits in one sheet, the CHA charge in another, and the forwarder recovery in a third, the finance team needs a common key to prove that all three belong to the same container or shipment. Supplier name and invoice number are not enough.
Repeat the shipment fields on every charge row: port code, terminal/CFS/ICD name, container number, container size/type, Bill of Entry number, Shipping Bill number, IGM number, vessel name, voyage number, importer or exporter name, CHA job number and forwarder reference. The repetition may look inefficient, but it makes the file sortable, filterable and pivot-ready. It also prevents a line item from becoming orphaned when the spreadsheet is split for GST review, landed-cost allocation or AP approval.
Indian port and terminal identifiers need careful extraction because the same shipment may appear through short codes, location names and operator names. MAA may point the team towards Chennai, BOM or INNSA towards Nhava Sheva, MUN towards Mundra, CCU towards Kolkata and COK towards Cochin. Inland references such as Tughlakabad ICD, Whitefield-Bangalore ICD, Sanand, Tondiarpet, Dadri and Loni should be captured as written, then standardised during review if the company maintains a location master.
Container numbers should also be copied as visible, not "corrected" by guesswork during extraction. A value that looks like ABCU1234567 can be validated later against the shipment file, but an over-cleaned OCR value can create a false match. The same principle applies to BoE, Shipping Bill and IGM references. Extract the visible identifier, preserve the source context and let the reviewer compare it against the customs or CHA folder.
Once those keys sit beside each charge line, landed-cost work becomes much easier. Terminal handling, ground rent, CHA fees, freight pass-throughs and reimbursements can be grouped by container, BoE or shipment reference even when they arrive from different supplier PDFs.
Extract GST and export-route flags for finance review
For GST review, the extracted file should separate the tax fields clearly: supplier GSTIN, recipient GSTIN, place of supply, taxable value, CGST, SGST, IGST and total tax. Those values should be available at invoice level and, where the PDF gives enough detail, at line level. This helps the reviewer compare the bill to internal policy, shipment records and GSTR-2B without opening every PDF again.
Treat ITC as a review flag, not an automatic yes-or-no decision. A line with SAC 996711, 996712 or 996713 may still need supporting checks: whether the supplier GSTIN is correct, whether the tax split matches place of supply, whether the invoice belongs to the business shipment, whether the expense is booked to the correct entity and whether the company has any policy restriction for that cost. The extraction file should make those checks visible.
Export shipments need their own flags. If the invoice shows LUT or no-IGST treatment, capture that signal with the export shipment reference. If IGST is charged and the business expects a refund route, capture the IGST amount, export reference and supporting identifiers separately. The file should also preserve overseas consignee or customer references where they appear, because they help finance connect the invoice to the export file.
CHA and forwarder bills need reimbursement or disbursement markers. Principal-account disbursements, recoveries and pass-throughs can sit beside service-fee lines on the same bill, but they may need different review before booking. Do not bury them in the CHA service total. Put the marker, SAC if shown, tax split, amount and shipment reference on the row so the reviewer can decide the treatment with the supporting file open.
Make the file import-ready for Tally, SAP and batch checks
The safest export shape is one row per charge line, with invoice and shipment fields repeated on every row. That gives the accounting team a flat table that can be filtered by supplier, shipment, container, SAC, ledger hint, port code or GST treatment. It also keeps the file usable when different reviewers own different checks.
For TallyPrime or SAP work, build the columns around the import or upload file the team actually uses. Typical fields include supplier name, supplier GSTIN, invoice number, invoice date, voucher type, ledger name or hint, taxable value, CGST, SGST, IGST, total, narration, cost centre, shipment reference and landed-cost allocation key. Teams already thinking about importing invoice data into TallyPrime with GST field mapping should add the freight-specific fields before import, not after the voucher fails review.
Add validation columns before the file leaves the extraction stage. Useful checks include missing SAC, missing container number, missing BoE or Shipping Bill where expected, invoice total mismatch, tax total mismatch, duplicate invoice number, unexpected port code and missing ground-rent period where storage is charged. For freight-forwarder consolidation, add a review flag where the same shipment reference appears across multiple supplier invoices so the landed-cost file can be checked as a group.
This is where India ICD/CFS extraction differs from generic automated freight invoice data extraction for carrier and logistics charges. Freight charge automation may recognise carrier charges, accessorials and transport costs. Indian terminal and CHA invoices also need local SAC values, GST split, port or ICD identifiers, export-route signals and shipment keys that fit the finance team's booking process.
Turn the schema into a repeatable extraction prompt
Once the schema is clear, the extraction workflow is straightforward. Collect the CFS, ICD, terminal, CHA and forwarder PDFs or images, decide the columns the finance team needs, then ask the extraction tool for one row per charge line with repeated invoice and shipment fields. Review exception rows before import: missing SAC, missing container number, tax mismatch, invoice total mismatch, reimbursement marker missing, or export-route flag unclear.
A useful prompt is specific about the accounting output: "Extract one row per charge line from these Indian ICD, CFS, terminal, CHA and freight-forwarder invoices. Repeat the supplier, GSTIN, invoice number, invoice date, terminal or port name, container number, BoE, Shipping Bill, IGM, vessel/voyage and shipment reference on every row. Capture charge description, SAC, taxable value, CGST, SGST, IGST, total amount, ground-rent period, reimbursement or disbursement marker, LUT/no-IGST or IGST-refund route where visible, ledger hint and landed-cost allocation hint."
Invoice Data Extraction fits this workflow as the invoice data extraction for shipment-keyed finance workflows layer. Users upload PDF, JPG or PNG documents, describe the desired fields in a natural language prompt, and download structured Excel, CSV or JSON. The same prompt-based interface can be used for small bundles, larger batches and long PDFs without changing the schema the finance team needs.
The output still needs finance review. That is the point of the schema. If the file is line-level, SAC-aware and shipment-keyed, the reviewer can check the tax fields, match charges to the shipment file, book the voucher, allocate landed cost and investigate exceptions without rebuilding the invoice from scratch.
Extract invoice data to Excel with natural language prompts
Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.
Related Articles
Explore adjacent guides and reference articles on this topic.
Extract IT Consulting Invoices in India with TDS 194J
Convert Indian IT consulting invoices into per-consultant rows with GSTIN, PAN, hours, rates, and TDS 194J review fields for AP reconciliation.
Amazon, Flipkart & Meesho Invoices to GSTR-1
Build a GSTR-1-ready Excel workflow for Amazon MTR, Flipkart Sales Reports, Meesho TCS reports, and marketplace tax invoice PDFs.
Extract Apparel Wholesale Invoices to Excel in India
Convert Indian apparel wholesale GST invoices into Excel without losing size-wise quantities, HSN, rates, tax splits, and GSTR-1-ready line items.