Skip to main content
How-To · 9 min read

Milestone Billing and Percentage-of-Completion Reconciliation for Indian EPC Contracts

Milestone billing and percentage-of-completion reconciliation in India runs across Ind AS 115 / Ind AS 11 percentage-of-completion revenue recognition for works contracts, a Running Account (RA) bill mechanism with 8-15 bills per project, on-account vs final-bill reconciliation, mobilisation advance recovery on each RA bill (10-20% recovery rate), GST liability triggered on RA bill date under Section 13 of the CGST Act, certified vs uncertified value-of-work-done, 5-10% client retention per RA bill, Section 393(1)(a) (code 1002) contractor TDS, and CARO 2020 audit angles on long-cycle revenue recognition.

Terra Insight
Terra Insight Reconciliation Infrastructure

Content authored by practitioners with experience at Amazon India, Intuit QuickBooks, and the Tata Group. Meet the team →

Published 11 May 2026
Domain expertise
TDS Reconciliation GST Input Credit Platform Settlements NACH Batch Matching Bank Reconciliation Form 26AS Matching ERP Integrations Enterprise Finance Ops
Knowledge Card
Problem

Indian EPC engineering companies executing ₹50-500 crore long-cycle contracts must recognise revenue under Ind AS 115 / Ind AS 11 percentage-of-completion over time, raise 8-15 RA (Running Account) bills with mobilisation advance recovery and retention deduction layered in, trigger GST liability on each RA bill date and on advance receipts under Section 13 of the CGST Act, navigate the certified-vs-uncertified gap creating unbilled revenue on the balance sheet, deduct contractor TDS on RA bills under Section 393(1)(a) (payment code 1002) at 1% or 2%, and satisfy CARO 2020 reporting on long-cycle revenue recognition.

How It's Resolved

Recognise revenue under Ind AS 115 over time using a cost-incurred input method or milestone output method; raise an RA bill for each period showing gross value of work done less previous cumulative bills less advance recovery less retention; trigger output GST on the RA bill date in GSTR-3B; treat advance receipts under Section 31(3) receipt voucher with GST in month of receipt and adjustment at next RA bill; bridge certified value, uncertified value, revenue recognised, RA bills raised and customer receipts in a monthly working showing unbilled revenue separately; deduct Section 393(1)(a) TDS at 1%/2% on RA bills and reconcile against Form 168.

Configuration

EPC project master with contract value, RA bill schedule (8-15 bills with target dates), mobilisation advance percentage (typically 10-20%) and recovery curve (pro-rated or front-loaded), retention percentage (5-10%) and warranty release date, Ind AS 115 cost-incurred or milestone-output completion method per project, Section 13 CGST time-of-supply trigger on RA bill date, Section 31(3) receipt voucher for advances, Section 393(1)(a) code 1002 TDS map by contractor entity type, CARO 2020 long-cycle revenue disclosure roll-up.

Output

A monthly EPC close where every RA bill ties to certified work value, mobilisation advance recovery, retention deduction, GST output and TDS deducted; the percentage-of-completion bridge ties certified value, uncertified value, cumulative revenue recognised, cumulative RA bills and customer receipts with unbilled revenue separately disclosed; advance receipts are linked to RA bills with GST adjusted; Section 393(1)(a) TDS deductions match Form 168; and CARO 2020 disclosures roll up cleanly.

An EPC engineering company in Pune is executing a ₹80 crore industrial plant contract for an integrated steel customer in Odisha. The contract calls for 12 RA bills over an 18-month execution period — design and engineering 10%, civil and structural 25%, mechanical equipment 30%, electrical and instrumentation 15%, piping and insulation 10%, commissioning 10%. A 15% mobilisation advance (₹12 crore) was paid at order acceptance against a bank guarantee. Retention is 7.5% on each RA bill, released 12 months after commissioning. The CFO’s monthly close runs across an Ind AS 115 percentage-of-completion revenue rail, an RA bill issuance rail, a mobilisation advance recovery rail, a retention ledger rail, a Section 13 CGST time-of-supply rail, a Section 393(1)(a) TDS reconciliation rail and a CARO 2020 disclosure roll-up rail. This guide walks each rail and ties them back to the broader engineering and capital goods reconciliation in India framework.

Quick reference

ItemSection / StandardKey threshold or rate
Revenue recognition standardInd AS 115 / Ind AS 11Over-time POC for works contracts
RA bill mechanismContract / engineering normsTypically 8-15 RA bills per project
Mobilisation advanceContract / engineering normsTypically 10-20% of contract value
Retention per RA billContract / engineering normsTypically 5-10%, released at warranty expiry
GST time-of-supply (services)Section 13 CGSTEarliest of invoice, payment, or completion
GST on works contractCGST Act18% (composite)
Advance receipt voucherSection 31(3) CGSTRequired; GST payable on advance receipt
Contractor TDSSection 393(1)(a), code 10021% individual/HUF, 2% company/firm
Cross-era legacy referenceSection 194CUp to 31 March 2026 only
Long-cycle revenue disclosureCARO 2020Mandatory for statutory audit

Rail 1 — Ind AS 115 percentage-of-completion revenue

Under Ind AS 115, revenue from a long-cycle EPC contract is recognised over time where the conditions of paragraph 35 are met — most onshore Indian EPC contracts satisfy this. The percentage-of-completion is measured using either a cost-incurred input method (cumulative cost incurred ÷ total estimated contract cost) or a milestone output method (units / milestones delivered ÷ total units / milestones). For the Pune EPC company on the ₹80 crore Odisha plant, the cost-incurred method applies — at month-end of Month 9, cumulative cost incurred is ₹40 crore against total estimated cost of ₹64 crore (80% of contract value, assuming 20% margin), giving 62.5% completion and cumulative revenue recognised of ₹50 crore.

The reconciliation control: monthly cost roll-up against the latest estimate of total cost (with any cost overrun re-baseline triggering a revision to the percentage-of-completion); period revenue = cumulative revenue this month minus cumulative revenue last month; period margin = period revenue minus period cost.

Rail 2 — RA bill structure and issuance

A standard RA bill at the Pune EPC company carries the following lines:

  • Gross value of work done up to the cut-off date — certified by the customer’s project engineer
  • Less previous cumulative bills — sum of all prior RA bill gross values
  • Less mobilisation advance recovery for the period — pro-rated (₹1 crore per RA bill if the ₹12 crore advance is recovered over 12 bills) or front-loaded (higher recovery in early bills)
  • Less retention at 7.5% of period gross value
  • Less TDS under Section 393(1)(a) at 2% (steel customer is a company) on period gross value net of GST
  • Plus output GST at 18% on period gross value
  • Net amount payable = period gross value − advance recovery − retention − TDS + GST

For RA Bill 7 in Month 9, with period gross value of ₹7 crore: gross ₹7 Cr, advance recovery ₹1 Cr, retention ₹52.5 lakh (7.5% of ₹7 Cr), TDS ₹14 lakh (2% of ₹7 Cr), GST ₹1.26 crore (18% of ₹7 Cr), net payable ₹6.585 crore.

Rail 3 — Mobilisation advance recovery rail

The ₹12 crore advance paid at order acceptance is held against a bank guarantee. The advance recovery curve is a contract-level decision — typically pro-rated (recovered equally across RA bills) or front-loaded (higher recovery in early bills to derisk the customer). The reconciliation control: monthly advance outstanding ledger showing original ₹12 Cr, cumulative recovery through each RA bill, balance outstanding. At Month 9 with 7 RA bills issued and ₹1 crore recovered per bill, the balance outstanding is ₹5 crore — matching the ₹12 Cr − ₹7 Cr recovered. The bank guarantee remains live until balance is nil. Detail at retention money reconciliation patterns.

Rail 4 — Retention ledger rail

Retention at 7.5% per RA bill accumulates to a cumulative retention ledger per contract. At Month 9 with cumulative gross value of ₹50 crore, cumulative retention is ₹3.75 crore. This sits on the contractor’s balance sheet as a recognised receivable under Ind AS 115 (not contingent — the customer is contractually obligated to release retention absent warranty failure) with release deferred to 12 months post-commissioning. The reconciliation control: monthly per-contract retention ledger reconciled to balance-sheet line; warranty-clock tagging; any deduction by customer against warranty issues posted as a Section 34 CGST credit note with proportionate output GST reversal.

Rail 5 — Section 13 CGST time-of-supply on RA bills and advances

Under Section 13 of the CGST Act, time of supply for services is the earliest of invoice date, payment date, or (if invoice is delayed) completion date. For an RA bill, the invoice date is the trigger — output GST is recorded in the GSTR-3B of the month of the RA bill date. For the ₹12 crore mobilisation advance received in Month 0, GST liability arose then — receipt voucher under Section 31(3) of the CGST Act, GST of ₹2.16 crore paid in Month 0’s GSTR-3B. As each RA bill is issued, the advance recovery against that bill carries an adjustment of the GST already paid on the corresponding advance portion. The reconciliation control: every advance receipt ties to a Section 31(3) receipt voucher and an RA bill adjustment; no double GST liability.

Rail 6 — Section 393(1)(a) TDS on RA bills

Section 393(1)(a) of the Income Tax Act 2025 (payment code 1002, replaces Section 194C) applies at 2% (the customer in our example is a company) on RA bill values net of GST. The customer deducts at credit or payment, whichever is earlier, and deposits by the 7th of the following month under code 1002. The contractor sees this as a TDS receivable on its balance sheet, reconciled monthly to Form 26AS / AIS. Cross-era reconciliation against pre-April-2026 deductions filed under legacy 194C requires the dual-tag match. See Section 393 TDS new Income Tax Act reconciliation and TDS payment codes 1001-1092 India.

Rail 7 — Certified vs uncertified value bridge

The certified value is the customer’s signed-off measurement; the uncertified value is work executed but pending certification (typical 30-60 day lag). RA bills go on certified value only. Revenue under Ind AS 115 may be recognised on uncertified work too. The bridge at month-end:

Bridge lineCumulative value at Month 9
Cumulative cost incurred₹40.0 Cr
Total estimated cost₹64.0 Cr
Percentage-of-completion62.5%
Cumulative revenue recognised₹50.0 Cr
Cumulative certified value₹50.0 Cr
Cumulative uncertified value₹3.0 Cr
Cumulative RA bills raised₹50.0 Cr
Cumulative customer receipts₹42.0 Cr
Unbilled revenue (balance sheet)₹3.0 Cr
Trade receivables (balance sheet)₹8.0 Cr

A cumulative revenue greater than cumulative RA bills creates an unbilled-revenue asset. A cumulative RA bills greater than cumulative customer receipts creates a trade-receivables asset.

Worked example: ₹80 Cr industrial plant EPC, Month 9 close

The Pune EPC company closes Month 9 with the positions in the bridge above. RA Bill 7 issued in the month: period gross ₹7 Cr, advance recovery ₹1 Cr, retention ₹52.5 lakh, TDS ₹14 lakh, GST ₹1.26 Cr, net payable ₹6.585 Cr. Cumulative retention on balance sheet: ₹3.75 Cr. Mobilisation advance outstanding: ₹5 Cr (₹12 Cr less ₹7 Cr recovered). Cumulative revenue recognised under Ind AS 115: ₹50 Cr against ₹50 Cr cumulative RA bills (matched). Section 393(1)(a) TDS cumulative receivable: ₹1 Cr (₹50 Cr × 2%). Total reconciliation lines across the seven rails for this single contract in the month: about 280 — multiplied across the 17 active contracts in the company portfolio, the monthly volume is about 4,800 lines.

Interactive Tool

Size the cost of RA bill exceptions across your contract portfolio

Mis-recovery of mobilisation advance, missed retention deductions and timing gaps between certified and uncertified value each create reconciliation exceptions. Use the exception cost calculator to size the working-capital impact across your active EPC contracts.

Open the Three-Way-Match Exception Cost Calculator →

What automated reconciliation changes

EPC engineering finance teams running the seven rails on spreadsheets typically lose 6-9 days per monthly close to the RA bill build-up, the percentage-of-completion bridge and the advance-and-retention ledger maintenance. Purpose-built reconciliation software India configured with the EPC preset carries the RA bill schedule, the advance recovery curve, the retention ledger with warranty clock, the Section 13 CGST time-of-supply trigger, the Section 393(1)(a) TDS map and the Ind AS 115 percentage-of-completion bridge out of the box. Customer outcomes include match-rate improvement from 51% to 88% on the procurement rail and a 50-65% reduction in close time on the milestone and retention rails. Build is two-to-four weeks on AWS Mumbai (ISO 27001:2022) once the ERP exports a structured contract, milestone, RA bill, advance receipt and retention extract. For the headline three-way match rail see three-way matching software India. For the authoritative text of Ind AS 115 / Ind AS 11 and CARO 2020 reporting, the ICAI is the source. Cross-reference works contract reconciliation in India and the manufacturing reconciliation in India pillar.

Primary reference: ICAI — for Ind AS 115 (Revenue from Contracts with Customers), Ind AS 11 (Construction Contracts), CARO 2020 reporting requirements and Guidance Note on revenue recognition for long-cycle contracts.

Frequently Asked Questions

How does Ind AS 115 percentage-of-completion revenue recognition apply to an EPC contract?
Under Ind AS 115 (Revenue from Contracts with Customers), revenue from a long-cycle construction or EPC contract is recognised over time where the customer simultaneously receives and consumes the benefit, or the contractor's performance creates or enhances an asset the customer controls, or the performance does not create an asset with alternative use and the contractor has an enforceable right to payment for performance completed. Most onshore EPC contracts in India satisfy these conditions and follow over-time recognition, typically using a cost-incurred input method or a milestone output method. The percentage-of-completion as at month-end drives the cumulative revenue recognised; the period revenue is the change from prior month. RA bill invoicing is the cash-flow event, but it does not directly drive revenue recognition — these are separate.
What is the RA (Running Account) bill mechanism in an Indian EPC contract?
A Running Account bill is a partial invoice raised by the contractor against work executed and certified up to a cut-off date during the project. A typical EPC contract has 8-15 RA bills over its duration, raised monthly or against pre-defined milestones. Each RA bill follows a standard structure: gross value of work done up to date, less previous cumulative bills, less mobilisation advance recovery for the period (typically pro-rated or front-loaded), less retention (typically 5-10%), less applicable TDS under Section 393(1)(a), plus applicable GST under Section 13 of the CGST Act. The net amount is what the customer actually pays. The final bill at project completion reconciles all RA bills, releases the balance retention (typically deferred to warranty expiry) and closes the contract.
When does GST liability arise on an RA bill under Section 13 of the CGST Act?
Under Section 13 of the CGST Act, time of supply for services is the earliest of (a) date of invoice if issued within the prescribed period (30 days from supply), (b) date of payment, or (c) where invoice is not issued in time, the completion date. For an RA bill, the invoice date is the GST trigger — the contractor must record output GST in the GSTR-3B of the month of the RA bill date. Where the customer pays an advance before the RA bill (mobilisation advance, milestone advance), GST liability arises on the advance receipt under Section 31(3) receipt voucher mechanism. The reconciliation control: every RA bill date triggers GST liability in that month; every advance receipt triggers GST liability in the month of receipt; the RA bill is then issued net of advance recovery with the GST already paid on advance adjusted.
What is the difference between certified and uncertified value of work done?
Certified value of work done is the value that the customer's project engineer or independent consultant has measured, verified and signed off against the contract bill of quantities and rates. Uncertified value is work the contractor has actually executed but for which the customer's certification is pending — typical lag of 30-60 days. RA bills are raised on certified value only. Revenue under Ind AS 115 percentage-of-completion may be recognised on uncertified work too (since the performance obligation has been satisfied), creating a balance-sheet line for unbilled revenue. The reconciliation control: monthly bridge between (a) certified value cumulative, (b) uncertified value cumulative, (c) cumulative revenue recognised, (d) cumulative RA bills raised, (e) cumulative customer receipts — with unbilled revenue and trade receivables as separate balance-sheet lines.
Which Section 393 TDS code applies to RA bill payments under EPC contracts?
Section 393(1)(a) of the Income Tax Act 2025 (payment code 1002, replaces Section 194C) applies at 1% (individual/HUF contractors) or 2% (company/firm contractors) on RA bill payments. The customer (the project owner) deducts TDS on the gross RA bill value net of any service tax (now GST) at the time of credit or payment, whichever is earlier. The per-transaction threshold of ₹30,000 and aggregate threshold of ₹1 lakh trigger the deduction — virtually every RA bill in an EPC project crosses these. Cross-era reconciliation against Form 26AS data filed before 1 April 2026 needs the legacy 194C reference. For the full Section 393 code map see /insights/section-393-tds-new-income-tax-act-reconciliation/ and /insights/tds-payment-codes-1001-1092-india/.

See how TransactIG handles reconciliation for your industry

Configuration takes 2–4 weeks. No code development required. ISO 27001:2022 certified.