MS D365 F&O | Exploring D365 Finance and Operations
AayushDynamics
AT

Accounting in D365, Part 5: Contract to Close (Fixed-Price Projects : Kick-Off to Go-Live)

▾Accounting in D365, Part 5: Contract to Close (Fixed-Price Projects : Kick-Off to Go-Live)

A fixed-price ERP implementation followed from contract to close in Dynamics 365 Finance & Operations: the business events, the documents in D365 and the vouchers they post.

Introduction

Not every business event becomes an entry in an ERP system, and not every ERP entry becomes a voucher in the general ledger.

Consider an ERP implementation project. A customer signs a contract, the project team runs Fit/Gap workshops, the solution design is approved, and the team eventually deploys the solution into production. These are business events. Some are recorded in Dynamics 365 Finance & Operations as project records, milestones or stage changes. Others trigger transactions that post to the general ledger.

The accounting becomes more interesting when the project is sold at a fixed price. The customer pays an agreed amount in stages, while the implementation team incurs cost every week. The billing schedule, the project cost, the revenue recognised and the customer collections do not happen at the same time, and D365 keeps each of them in its own accounts until the project is closed.

In this fifth part of the Accounting in D365 series, we follow an ERP implementation project from contract signature to project closure. For each business event, we look at the document or data entry in D365 and the accounting entry it generates, with the voucher as posted. The objective, as in the earlier parts, is to understand not only which transactions to post, but why they are posted and how they affect the financial statements.

Understanding the business scenario

ABC Ltd. (customer INMF-000009, Noida, Uttar Pradesh) engages INMF to implement Dynamics 365 Finance & Operations. The project is agreed at a fixed fee of INR 2,50,00,000 excluding GST, and runs from 01-10-2026 to 31-03-2027, including hypercare.

Particulars

Details

Customer

ABC Ltd. (INMF-000009)

Legal entity

INMF

Project contract / project

INMF-000003 / INMF-000026

Project type

Fixed-price

Project duration

01-10-2026 to 31-03-2027

Contract value, excluding GST

2,50,00,000.00

GST

IGST 18% (interstate supply)

TDS deducted by customer

10% of the invoice base, section 194J

Billing arrangement

Advance and milestone-based

Revenue recognition

Completed percentage, cost-to-cost

Cost budget (hour forecast)

1,77,74,000.00

This part is standalone. It does not carry forward the closing balances of Parts 1 to 4, so the trial balance and statements at the end show only the postings of this project.

Contractual payment terms

Milestone

Percentage

Amount excluding GST

Invoice date

Advance at project kick-off

25%

62,50,000.00

11-10-2026

Activate (Fit/Gap Workshops sign-off)

20%

50,00,000.00

31-10-2026

Fit-Gap Design sign-off

20%

50,00,000.00

30-11-2026

UAT sign-off

20%

50,00,000.00

28-02-2027

Go-Live

15%

37,50,000.00

03-03-2027

Total

100%

2,50,00,000.00

These milestones decide when INMF can bill the customer. They do not, by themselves, decide how much revenue belongs to a period. That distinction is central to fixed-price project accounting.

Understanding the project lifecycle

The project cost is driven by the implementation activities. The work breakdown structure has one task for each activity:

WBS

Activity

Dates

Linked milestone

1

Project Plan & Kick Off

01-10-2026 to 09-10-2026

Advance

2

Environment Readiness

05-10-2026 to 16-10-2026

3

Business Understanding Sessions

12-10-2026 to 23-10-2026

4

Fit/Gap Workshops

19-10-2026 to 30-10-2026

Activate

5

Design

02-11-2026 to 11-12-2026

Fit-Gap Design sign-off

6

Development

16-11-2026 to 22-01-2027

7

Master Data preparation (for UAT)

04-01-2027 to 22-01-2027

8

UAT Server preparation

18-01-2027 to 29-01-2027

9

UAT / CRP

01-02-2027 to 26-02-2027

UAT sign-off

10

Go Live preparation & Deployment

22-02-2027 to 26-02-2027

11

Go Live

01-03-2027

Go-Live

12

Hyper Care

02-03-2027 to 31-03-2027

The project team includes a project director, program and project managers, architects, functional and technical consultants and infrastructure specialists. Their time is recorded against these tasks and their role categories. A shadow consultant who joins for training records time on a separate internal project, INMF-000027, so that training effort is kept out of the revenue recognition of the contract.

How project accounting works in D365 F&O

In D365, a project groups transactions that record costs, and then posts those costs to the general ledger. For a fixed-price project, invoices consist of on-account transactions billed according to a billing schedule, and revenue can be calculated and posted throughout the project using the completed percentage method, or at completion using the completed contract method (Project management and accounting overview).

The transaction types used in this cycle are:

  • Hour: consultants' time, recorded through timesheets or hour journals.
  • On account: the scheduled milestone billings of the fixed-price project.
  • Revenue recognition (estimate): the monthly calculation of revenue earned. In recent versions, estimates are labelled revenue recognition (Fixed price revenue estimate projects).

Customer payments are recorded in the accounts receivable payment journal, outside the project.

What decides the accounting

The ledger result of a project transaction is decided by the combination of transaction type, project category and category group, project group, line property and ledger posting setup (How project groups, categories and line properties determine project posting). The settings that matter for this project are:

Setting

Value in this build

Effect on accounting

Project group

FP-IMPL (Fixed-price); INT-TRAIN (Internal)

Fixed-price revenue comes from the contract value, not from hours billed

On-account invoicing

Balance

Milestone invoices credit WIP - invoiced on account, not revenue

Post costs - hour

Profit and loss

Hour cost posts to Cost - hour

Line property FP-IMPL

Chargeable; Accrue revenue No; Capitalize cost No

Hour cost is not held in WIP

Revenue recognition rule

Completed percentage, matching principal Sales value

Revenue is recognized monthly in proportion to work done

Cost template

FP-POC: completion based on cost amount; cost to complete = total forecast − actual

Completion % = actual cost to date ÷ forecast cost

Forecast model

FP-BUDGET: 1,77,74,000.00

The denominator of completion %

Period code

PT (monthly)

One revenue recognition per month end

The ledger posting setup maps each posting type to a main account:

Posting type

Main account

Used in this cycle

Cost (category group HOUR-FP / INT-TRAIN)

501001 Cost - hour / 501002 Cost - hour (internal project)

Yes

Payroll allocation

201121 Payroll allocation

Yes

WIP - cost value

160201 WIP - cost value - hour

No

WIP - sales value

160202 WIP - sales value

Yes

Accrued revenue - sales value

420200 Accrued revenue - sales value

Yes

WIP - invoiced on-account

160203 WIP - invoiced on-account

Yes

Invoiced revenue - on-account

420300 Invoiced revenue - on-account

No

Business Event 1 — Project contract signed

ABC Ltd. signs the implementation agreement for 2,50,00,000.00 excluding GST.

In D365: project contract INMF-000003 is created with ABC Ltd. as the funding source (100%).

Does signing the contract generate a voucher? No. A project contract records the commercial terms and the funding source; it is not a general ledger transaction.

Accounting impact: none.

Business Event 2 — Project created and planned

INMF creates the project and prepares the work breakdown structure, the cost budget and the billing schedule.

In D365:

  • Fixed-price project INMF-000026 in project group FP-IMPL, linked to contract INMF-000003, and internal project INMF-000027 in project group INT-TRAIN.
  • Work breakdown structure with the 12 tasks listed in the project lifecycle above, published.
  • Hour forecast for the model FP-BUDGET: the planned hours of each role at its cost price, 1,77,74,000.00 in total. The shadow consultant is not included.
  • Five on-account transactions, one for each billing milestone, together equal to 2,50,00,000.00.
  • Project stage changed from Created to “In process” at kick-off on 01-10-2026.

Does creating a project or entering a forecast generate a voucher? No. The forecast is a plan; it becomes important at each month end, when it is the denominator of the completion percentage.

Accounting impact: none.

Business Event 3 — Advance invoice raised

At kick-off, INMF becomes entitled to invoice 25% of the contract value.

Particulars

Amount (INR)

Contract value

2,50,00,000.00

Advance percentage

25%

Taxable invoice amount

62,50,000.00

IGST at 18%

11,25,000.00

Total customer invoice

73,75,000.00

In D365: a project invoice proposal is created for the advance on-account transaction of project INMF-000026 and posted on 11-10-2026 (Project > Manage > Project invoice proposals). IGST is calculated from tax information on the on-account line.

Accounting entry (voucher INMF-180000000, 11-10-2026)

Voucher INMF-180000000: advance invoice

Account

Debit (INR)

Credit (INR)

130100 Trade Receivables - Domestic

73,75,000.00

160203 WIP - invoiced on-account

62,50,000.00

223130 IGST payable

11,25,000.00

Total

73,75,000.00

73,75,000.00

The credit goes to WIP - invoiced on-account, a balance sheet account, because on-account invoicing is set to Balance. The invoice records what has been billed; it does not recognise revenue. Revenue is left to the month-end revenue recognition.

Business Event 4 — Advance received from the customer

ABC Ltd. pays the advance invoice on 25-10-2026, deducting TDS at 10% of the taxable amount.

Particulars

Amount (INR)

Gross invoice

73,75,000.00

TDS deducted (10% of 62,50,000.00)

6,25,000.00

Net bank receipt

67,50,000.00

In D365: customer payment journal (Accounts receivable > Payments > Customer payment journal), settled against the advance invoice, with the TDS group on the line calculating the amount withheld.

Accounting entry (voucher INMF-CU000052, 25-10-2026)

Voucher INMF-CU000052: advance receipt

Account

Debit (INR)

Credit (INR)

110125 Bank Account - INR

67,50,000.00

132250 TDS Recoverable

6,25,000.00

130100 Trade Receivables - Domestic

73,75,000.00

Total

73,75,000.00

73,75,000.00

The receipt settles the receivable. It does not create another 62,50,000.00 of revenue: the invoice and the collection are two separate transactions with different purposes.

Business Event 5 — Project team records its time

As the implementation progresses, consultants record their weekly hours against the project, the WBS activity and their role category: Business Understanding Sessions and Fit/Gap Workshops in October, design and development from November, master data and UAT in January and February, go-live and hypercare in March.

In D365: timesheets are entered for each resource, approved and posted (Project management and accounting > Timesheets > All timesheets); hours can also be posted through a project hour journal. Each hour is valued at the cost price of its category of, for example 5,000.00 an hour for the Project Director and 750.00 an hour for a Functional Consultant. The shadow consultant's hours are posted to internal project INMF-000027 at 437.50 an hour.

Accounting entry (each posted hour transaction)

Account

Debit

Credit

501001 Cost - hour (or 501002 Cost - hour (internal project))

Hour cost

201121 Payroll allocation

Hour cost

Fixed-price project INMF-000026: timesheet line of Jean Grey (Functional Consultant - Trade & Logistics, 750.00 an hour) for the week of 11-01-2027. Each day's 13 hours post their own pair of lines: Dr Cost - hour 9,750.00, Cr Payroll allocation 9,750.00 (voucher INMF-01549).

Timesheet voucher INMF-01549: fixed-price project INMF-000026

Internal project INMF-000027: timesheet line of the shadow consultant, 5 hours at 437.50 = 2,187.50, posted to Cost - hour (internal project) against Payroll allocation.

Timesheet voucher: internal project INMF-000027

Payroll allocation is the offset to salaries, which are booked separately through payroll. Posting hours therefore moves employee costs into project cost; it does not create a new expense.

Month

FP project INMF-000026 (INR)

Internal project INMF-000027 (INR)

Payroll allocation, credit (INR)

October 2026

37,23,000.00

52,500.00

37,75,500.00

November 2026

32,94,500.00

52,500.00

33,47,000.00

December 2026

27,09,750.00

52,500.00

27,62,250.00

January 2027

23,44,250.00

52,500.00

23,96,750.00

February 2027

37,53,250.00

52,500.00

38,05,750.00

March 2027

22,88,000.00

52,500.00

23,40,500.00

Total

1,81,12,750.00

3,15,000.00

1,84,27,750.00

The project team posted 11,594 hours to the contract and the shadow consultant 720 hours to the internal project.

Business Event 6 — Fit/Gap Workshops completed and Activate milestone invoiced

The team completes the Business Understanding Sessions and the Fit/Gap Workshops, and the customer signs off. The requirements and the gaps identified in the workshops are documented, and INMF raises the Activate milestone invoice for 20% of the contract value on 31-10-2026.

In D365: project invoice proposal for the Activate on-account transaction, posted.

Accounting entry (voucher INMF-180000001, 31-10-2026)

Account

Debit (INR)

Credit (INR)

130100 Trade Receivables - Domestic

59,00,000.00

160203 WIP - invoiced on-account

50,00,000.00

223130 IGST payable

9,00,000.00

Total

59,00,000.00

59,00,000.00

Voucher INMF-180000001: Activate milestone invoice

Business Event 7 — Customer pays the Activate milestone

ABC Ltd. pays the Activate invoice on 31-10-2026, deducting TDS of 5,00,000.00.

In D365: customer payment journal, settled against the Activate invoice.

Accounting entry (voucher INMF-CU000053, 31-10-2026)

Voucher INMF-CU000053: Activate milestone receipt

Account

Debit (INR)

Credit (INR)

110125 Bank Account - INR

54,00,000.00

132250 TDS Recoverable

5,00,000.00

130100 Trade Receivables - Domestic

59,00,000.00

Total

59,00,000.00

59,00,000.00

Month-end close, October — revenue recognition

This is the most important accounting step of the cycle. By 31-10-2026, INMF has invoiced 1,12,50,000.00 (45% of the fee) but has completed only a fifth of the work. If revenue followed the invoices, October would report almost half the contract as earned. Revenue must instead follow the work performed.

In D365: Project > Manage > Revenue recognition. A revenue recognition is created for period code PT with date 31-10-2026 and forecast model FP-BUDGET, calculated, reviewed and posted.

The cost template FP-POC measures completion on cost amount. Its cost to complete method takes the forecast and deducts the actual cost to date, which corresponds to the Total budget – actual method described by Microsoft: actual costs are compared with the selected forecast model (Project management and accounting overview).

  • Cost to complete = Forecast cost − Actual cost to date (never below zero)
  • Completion % = Actual cost to date ÷ (Actual cost to date + Cost to complete)
  • Cumulative revenue = Contract value × Completion %
  • Revenue for the month = Cumulative revenue − Revenue recognised in earlier months

Step

Amount (INR)

Actual cost to date (October hours)

37,23,000.00

Forecast cost (FP-BUDGET)

1,77,74,000.00

Cost to complete (1,77,74,000.00 − 37,23,000.00)

1,40,51,000.00

Completion % (37,23,000.00 ÷ 1,77,74,000.00)

20.95%

Cumulative revenue (2,50,00,000.00 × 20.95%)

52,36,581.52

Revenue recognised earlier

–

Revenue for October

52,36,581.52

Accounting entry (voucher INMF-170000000, 31-10-2026)

Voucher INMF-170000000: revenue recognition 31-10-2026

Account

Debit (INR)

Credit (INR)

160202 WIP - sales value

52,36,581.52

420200 Accrued revenue - sales value

52,36,581.52

Total

52,36,581.52

52,36,581.52

There is no cost line in the revenue recognition voucher. Hour cost posts straight to profit and loss, so October's cost of 37,23,000.00 already sits in Cost - hour, so October earns 52,36,581.52 against 37,23,000.00 of cost: a gross margin of 28.90%, the planned margin.

Contract position at 31-10-2026: WIP - sales value 52,36,581.52 (debit) against WIP - invoiced on-account 1,12,50,000.00 (credit) leaves a net credit of 60,13,418.48. Billing is ahead of the work, so the project carries a contract liability — an advance from the customer.

Business Event 8 — Fit-Gap Design sign-off and November close

The team turns the Fit/Gap results into detailed solution design, and the customer approves the Fit-Gap Design on 30-11-2026. INMF raises the third invoice for 20% of the contract value.

Accounting entry (voucher INMF-180000002, 30-11-2026)

Voucher INMF-180000002: Fit-Gap Design sign-off invoice

Account

Debit (INR)

Credit (INR)

130100 Trade Receivables - Domestic

59,00,000.00

160203 WIP - invoiced on-account

50,00,000.00

223130 IGST payable

9,00,000.00

At the November month end, cumulative cost is 70,17,500.00, completion is 39.48% and cumulative revenue is 98,70,456.85. November's revenue is the increase over October: 98,70,456.85 − 52,36,581.52 = 46,33,875.33.

Accounting entry (voucher INMF-170000001, 30-11-2026)

Voucher INMF-170000001: revenue recognition 30-11-2026

Account

Debit (INR)

Credit (INR)

160202 WIP - sales value

46,33,875.33

420200 Accrued revenue - sales value

46,33,875.33

The monthly revenue cannot be calculated by multiplying the month's cost by the contract value; it is always the change in cumulative revenue. The contract liability rises to 63,79,543.15, because the third milestone was billed while the design was still in progress.

Business Event 9 — Fit-Gap Design payment and December close

ABC Ltd. pays the Fit-Gap Design invoice on 18-12-2026, net of TDS.

Accounting entry (voucher INMF-CU000056, 18-12-2026)

Voucher INMF-CU000056: Fit-Gap Design sign-off receipt

Account

Debit (INR)

Credit (INR)

110125 Bank Account - INR

54,00,000.00

132250 TDS Recoverable

5,00,000.00

130100 Trade Receivables - Domestic

59,00,000.00

Development runs through December with no milestone due. At 31-12-2026, cumulative cost is 97,27,250.00, completion is 54.73% and December's revenue is 38,11,395.86.

Accounting entry (voucher INMF-170000002, 31-12-2026)

Voucher INMF-170000002: revenue recognition 31-12-2026

Account

Debit (INR)

Credit (INR)

160202 WIP - sales value

38,11,395.86

420200 Accrued revenue - sales value

38,11,395.86

With revenue growing and no new billing, the contract liability falls to 25,68,147.29.

Month-end close, January — work overtakes billing

In January, the team completes development, loads master data for UAT and prepares the UAT environment. There is no milestone, invoice or receipt this month — only hours and the month-end revenue recognition. Cumulative cost reaches 1,20,71,500.00, completion 67.92%, and January's revenue is 32,97,302.24.

Accounting entry (voucher INMF-170000003, 31-01-2027)

Voucher INMF-170000003: revenue recognition 31-01-2027

Account

Debit (INR)

Credit (INR)

160202 WIP - sales value

32,97,302.24

420200 Accrued revenue - sales value

32,97,302.24

Cumulative revenue of 1,69,79,154.95 now exceeds cumulative billing of 1,62,50,000.00. For the first time, the project shows a contract asset (unbilled revenue) of 7,29,154.95: INMF has done work that it is not yet entitled to bill.

Business Event 10 — UAT sign-off and February close

The project enters UAT and CRP. The team prepares test scenarios, fixes defects and collects user sign-off, and the UAT milestone is invoiced on 28-02-2027.

Accounting entry (voucher INMF-180000003, 28-02-2027)

Voucher INMF-180000003: UAT sign-off invoice

Account

Debit (INR)

Credit (INR)

130100 Trade Receivables - Domestic

59,00,000.00

160203 WIP - invoiced on-account

50,00,000.00

223130 IGST payable

9,00,000.00

UAT defect fixing makes February the costliest month after October. At 28-02-2027, cumulative cost is 1,58,24,750.00, completion is 89.03% and February's revenue is 52,79,129.62.

Accounting entry (voucher INMF-170000004, 28-02-2027)

Voucher INMF-170000004: revenue recognition 28-02-2027

Account

Debit (INR)

Credit (INR)

160202 WIP - sales value

52,79,129.62

420200 Accrued revenue - sales value

52,79,129.62

The milestone invoice and the revenue recognition happen in the same month but for different amounts: 50,00,000.00 billed, 52,79,129.62 earned. The contract asset grows to 10,08,284.57.

Business Event 11 — Go-Live and final collections

The team completes cutover and production deployment, and the system goes live on 01-03-2027. INMF raises the final milestone invoice for 15% of the contract value on 03-03-2027.

Accounting entry (voucher INMF-180000004, 03-03-2027)

Voucher INMF-180000004: Go-Live invoice

Account

Debit (INR)

Credit (INR)

130100 Trade Receivables - Domestic

44,25,000.00

160203 WIP - invoiced on-account

37,50,000.00

223130 IGST payable

6,75,000.00

ABC Ltd. settles the UAT invoice on 12-03-2027 and the Go-Live invoice on 30-03-2027, each net of TDS.

Accounting entry (voucher INMF-CU000060, 12-03-2027)

Voucher INMF-CU000060: UAT sign-off receipt

Account

Debit (INR)

Credit (INR)

110125 Bank Account - INR

54,00,000.00

132250 TDS Recoverable

5,00,000.00

130100 Trade Receivables - Domestic

59,00,000.00

Accounting entry (voucher INMF-CU000064, 30-03-2027)

Screenshot — Business Event 11 — Go-Live and final collections

Account

Debit (INR)

Credit (INR)

110125 Bank Account - INR

40,50,000.00

132250 TDS Recoverable

3,75,000.00

130100 Trade Receivables - Domestic

44,25,000.00

Month-end close, March — the project reaches 100%

Hypercare runs through March. By 31-03-2027, cumulative cost is 1,81,12,750.00 — above the forecast of 1,77,74,000.00. The cost to complete can never be negative, so it becomes nil, completion jumps to 100%, and the March revenue recognition takes the remaining contract value: 2,50,00,000.00 − 2,22,58,284.57 = 27,41,715.43.

Accounting entry (voucher INMF-170000005, 31-03-2027)

Screenshot — Month-end close, March — the project reaches 100%

Account

Debit (INR)

Credit (INR)

160202 WIP - sales value

27,41,715.43

420200 Accrued revenue - sales value

27,41,715.43

March earns 27,41,715.43 against 22,88,000.00 of cost, a margin of 16.55% for the month against 28.90% in every earlier month. The forecast was never revised, so the whole cost overrun of the project falls into the last period (see Plan vs actual).

Business Event 12 — Hypercare ends: elimination and project closure

Hypercare ends on 31-03-2027. Revenue recognized (2,50,00,000.00) now equals the amount invoiced (2,50,00,000.00), and the two WIP balances are no longer needed.

In D365: on the Revenue recognition page, the posted 31-03-2027 line is eliminated (Eliminate) with posting date 31-03-2027 and Set stage to Finished, which moves the project to stage Completed. The internal project INMF-000027 is set to Completed separately; it has no revenue recognition to eliminate.

Accounting entry (voucher INMF-170000006, 31-03-2027)

Screenshot — Business Event 12 — Hypercare ends: elimination and project closure

Account

Debit (INR)

Credit (INR)

160203 WIP - invoiced on-account

2,50,00,000.00

160202 WIP - sales value

2,50,00,000.00

Total

2,50,00,000.00

2,50,00,000.00

In D365 the elimination voucher posts one line for each invoice and each revenue recognition; the table shows the totals. Elimination clears the two WIP accounts against each other, and the contract revenue of 2,50,00,000.00 stays in Accrued revenue - sales value. Invoiced revenue - on-account (420300) is not used in this building. Microsoft also notes that once a fixed-price project is eliminated, any new postings to it go directly to profit and loss (How project groups, categories and line properties determine project posting).

Revenue recognition across the project

Month end

Voucher

Cost in month

Cumulative cost

Completion %

Revenue in month

Cumulative revenue

Margin in month

31-10-2026

INMF-170000000

37,23,000.00

37,23,000.00

20.95%

52,36,581.52

52,36,581.52

28.90%

30-11-2026

INMF-170000001

32,94,500.00

70,17,500.00

39.48%

46,33,875.33

98,70,456.85

28.90%

31-12-2026

INMF-170000002

27,09,750.00

97,27,250.00

54.73%

38,11,395.86

1,36,81,852.71

28.90%

31-01-2027

INMF-170000003

23,44,250.00

1,20,71,500.00

67.92%

32,97,302.24

1,69,79,154.95

28.90%

28-02-2027

INMF-170000004

37,53,250.00

1,58,24,750.00

89.03%

52,79,129.62

2,22,58,284.57

28.90%

31-03-2027

INMF-170000005

22,88,000.00

1,81,12,750.00

100.00%

27,41,715.43

2,50,00,000.00

16.55%

Total

1,81,12,750.00

2,50,00,000.00

27.55%

Contract asset and contract liability

At each month end, WIP - sales value (revenue earned) is set against WIP - invoiced on-account (amount billed). If billing is ahead of revenue, the net is a contract liability; if revenue is ahead of billing, it is a contract asset.

Month end

Cumulative revenue (160202)

Cumulative billing (160203)

Contract asset / (liability)

31-10-2026

52,36,581.52

1,12,50,000.00

(60,13,418.48)

30-11-2026

98,70,456.85

1,62,50,000.00

(63,79,543.15)

31-12-2026

1,36,81,852.71

1,62,50,000.00

(25,68,147.29)

31-01-2027

1,69,79,154.95

1,62,50,000.00

7,29,154.95

28-02-2027

2,22,58,284.57

2,12,50,000.00

10,08,284.57

31-03-2027

2,50,00,000.00

2,50,00,000.00

–

Billing is front-loaded — 45% of the fee is invoiced in October — so the project is in a contract liability for the first three months. From January, development and UAT run ahead of the next milestone and the position turns into a contract asset, which closes when the Go-Live milestone is invoiced.

Plan vs actual

A fixed price protects the customer, not the margin. Actual cost came in 3,38,750.00 above the forecast, mainly from logistics design complexity, additional development and UAT defect fixing, and the whole overrun reduced INMF's margin.

Plan (INR)

Actual (INR)

Variance (INR)

Contract revenue

2,50,00,000.00

2,50,00,000.00

–

Project cost (FP project)

1,77,74,000.00

1,81,12,750.00

3,38,750.00

Gross margin

72,26,000.00

68,87,250.00

(3,38,750.00)

Gross margin %

28.90%

27.55%

(1.35%)

From October to February, actual cost stayed within the forecast, so each month earned the planned margin of 28.90%. In March, cumulative cost passed the forecast: cost to complete fell to nil, completion jumped to 100%, and the month earned only 16.55%. Because the forecast was not revised, the whole overrun fell into the last period. Revising the forecast model when the overrun first appears — Microsoft recommends keeping the original forecast as a baseline and adjusting a copy — spreads the loss of margin over the remaining months instead.

The training cost of 3,15,000.00 on the internal project sits outside the contract. It does not affect completion % or the project margin, but it reduces the margin of the engagement to 65,72,250.00 (26.29%).

Business event vs accounting event

Implementation stage

Business event

D365 document / data entry

Accounting impact

Entry posted

Contract

Implementation contract signed

Project contract, funding source

No

–

Planning

Project, WBS and cost budget agreed

Project, WBS, hour forecast (FP-BUDGET), on-account schedule

No

–

Kick-off

Project starts

Project stage: In process

No

–

Advance, Activate, Fit-Gap Design, UAT, Go-Live

Milestone reached and invoiced

Project invoice proposal (on-account)

Yes

Dr Trade Receivables; Cr WIP - invoiced on-account, IGST payable

Collections

Customer pays, net of TDS

Customer payment journal

Yes

Dr Bank, TDS Recoverable; Cr Trade Receivables

Delivery

Consultants work on activities

Timesheets, project hour journal

Yes

Dr Cost - hour; Cr Payroll allocation

Training

Shadow consultant learns on the job

Timesheets on internal project

Yes

Dr Cost - hour (internal project); Cr Payroll allocation

Month-end close

Revenue earned to date

Revenue recognition, monthly

Yes

Dr WIP - sales value; Cr Accrued revenue

Hypercare ends

Project closed

Eliminate; project stage Completed

Yes

Dr WIP - invoiced on-account; Cr WIP - sales value

Internal project closed

Training complete

Project stage Completed

No

–

Key takeaway: invoices move amounts between the customer and the balance sheet; revenue reaches profit and loss only through the monthly revenue recognition.

Accounting vouchers of the Contract to Close process

Hour transactions are summarized by month and project, as each timesheet line posts its own voucher.

Document

Voucher

Date

Account name

Debit (INR)

Credit (INR)

Advance invoice

INMF-180000000

11-10-2026

Trade Receivables - Domestic

73,75,000.00

Advance invoice

INMF-180000000

11-10-2026

WIP - invoiced on-account

62,50,000.00

Advance invoice

INMF-180000000

11-10-2026

IGST payable

11,25,000.00

Advance receipt

INMF-CU000052

25-10-2026

Bank Account - INR

67,50,000.00

Advance receipt

INMF-CU000052

25-10-2026

TDS Recoverable

6,25,000.00

Advance receipt

INMF-CU000052

25-10-2026

Trade Receivables - Domestic

73,75,000.00

Activate invoice

INMF-180000001

31-10-2026

Trade Receivables - Domestic

59,00,000.00

Activate invoice

INMF-180000001

31-10-2026

WIP - invoiced on-account

50,00,000.00

Activate invoice

INMF-180000001

31-10-2026

IGST payable

9,00,000.00

Activate receipt

INMF-CU000053

31-10-2026

Bank Account - INR

54,00,000.00

Activate receipt

INMF-CU000053

31-10-2026

TDS Recoverable

5,00,000.00

Activate receipt

INMF-CU000053

31-10-2026

Trade Receivables - Domestic

59,00,000.00

Hours, October

Timesheets

October 2026

Cost - hour

37,23,000.00

Hours, October

Timesheets

October 2026

Cost - hour (internal project)

52,500.00

Hours, October

Timesheets

October 2026

Payroll allocation

37,75,500.00

Revenue recognition

INMF-170000000

31-10-2026

WIP - sales value

52,36,581.52

Revenue recognition

INMF-170000000

31-10-2026

Accrued revenue - sales value

52,36,581.52

Fit-Gap Design invoice

INMF-180000002

30-11-2026

Trade Receivables - Domestic

59,00,000.00

Fit-Gap Design invoice

INMF-180000002

30-11-2026

WIP - invoiced on-account

50,00,000.00

Fit-Gap Design invoice

INMF-180000002

30-11-2026

IGST payable

9,00,000.00

Hours, November

Timesheets

November 2026

Cost - hour

32,94,500.00

Hours, November

Timesheets

November 2026

Cost - hour (internal project)

52,500.00

Hours, November

Timesheets

November 2026

Payroll allocation

33,47,000.00

Revenue recognition

INMF-170000001

30-11-2026

WIP - sales value

46,33,875.33

Revenue recognition

INMF-170000001

30-11-2026

Accrued revenue - sales value

46,33,875.33

Fit-Gap Design receipt

INMF-CU000056

18-12-2026

Bank Account - INR

54,00,000.00

Fit-Gap Design receipt

INMF-CU000056

18-12-2026

TDS Recoverable

5,00,000.00

Fit-Gap Design receipt

INMF-CU000056

18-12-2026

Trade Receivables - Domestic

59,00,000.00

Hours, December

Timesheets

December 2026

Cost - hour

27,09,750.00

Hours, December

Timesheets

December 2026

Cost - hour (internal project)

52,500.00

Hours, December

Timesheets

December 2026

Payroll allocation

27,62,250.00

Revenue recognition

INMF-170000002

31-12-2026

WIP - sales value

38,11,395.86

Revenue recognition

INMF-170000002

31-12-2026

Accrued revenue - sales value

38,11,395.86

Hours, January

Timesheets

January 2027

Cost - hour

23,44,250.00

Hours, January

Timesheets

January 2027

Cost - hour (internal project)

52,500.00

Hours, January

Timesheets

January 2027

Payroll allocation

23,96,750.00

Revenue recognition

INMF-170000003

31-01-2027

WIP - sales value

32,97,302.24

Revenue recognition

INMF-170000003

31-01-2027

Accrued revenue - sales value

32,97,302.24

Hours, February

Timesheets

February 2027

Cost - hour

37,53,250.00

Hours, February

Timesheets

February 2027

Cost - hour (internal project)

52,500.00

Hours, February

Timesheets

February 2027

Payroll allocation

38,05,750.00

UAT sign-off invoice

INMF-180000003

28-02-2027

Trade Receivables - Domestic

59,00,000.00

UAT sign-off invoice

INMF-180000003

28-02-2027

WIP - invoiced on-account

50,00,000.00

UAT sign-off invoice

INMF-180000003

28-02-2027

IGST payable

9,00,000.00

Revenue recognition

INMF-170000004

28-02-2027

WIP - sales value

52,79,129.62

Revenue recognition

INMF-170000004

28-02-2027

Accrued revenue - sales value

52,79,129.62

Go-Live invoice

INMF-180000004

03-03-2027

Trade Receivables - Domestic

44,25,000.00

Go-Live invoice

INMF-180000004

03-03-2027

WIP - invoiced on-account

37,50,000.00

Go-Live invoice

INMF-180000004

03-03-2027

IGST payable

6,75,000.00

UAT sign-off receipt

INMF-CU000060

12-03-2027

Bank Account - INR

54,00,000.00

UAT sign-off receipt

INMF-CU000060

12-03-2027

TDS Recoverable

5,00,000.00

UAT sign-off receipt

INMF-CU000060

12-03-2027

Trade Receivables - Domestic

59,00,000.00

Go-Live receipt

INMF-CU000064

30-03-2027

Bank Account - INR

40,50,000.00

Go-Live receipt

INMF-CU000064

30-03-2027

TDS Recoverable

3,75,000.00

Go-Live receipt

INMF-CU000064

30-03-2027

Trade Receivables - Domestic

44,25,000.00

Hours, March

Timesheets

March 2027

Cost - hour

22,88,000.00

Hours, March

Timesheets

March 2027

Cost - hour (internal project)

52,500.00

Hours, March

Timesheets

March 2027

Payroll allocation

23,40,500.00

Revenue recognition

INMF-170000005

31-03-2027

WIP - sales value

27,41,715.43

Revenue recognition

INMF-170000005

31-03-2027

Accrued revenue - sales value

27,41,715.43

Elimination

INMF-170000006

31-03-2027

WIP - invoiced on-account

2,50,00,000.00

Elimination

INMF-170000006

31-03-2027

WIP - sales value

2,50,00,000.00

Total

12,74,27,750.00

12,74,27,750.00

Trial balance after the Contract to Close process

Main account

Main account name

Debit (INR)

Credit (INR)

Closing balance (INR)

110125

Bank Account - INR

2,70,00,000.00

–

2,70,00,000.00

130100

Trade Receivables - Domestic

2,95,00,000.00

2,95,00,000.00

–

132250

TDS Recoverable

25,00,000.00

–

25,00,000.00

160202

WIP - sales value

2,50,00,000.00

2,50,00,000.00

–

160203

WIP - invoiced on-account

2,50,00,000.00

2,50,00,000.00

–

201121

Payroll allocation

–

1,84,27,750.00

-1,84,27,750.00

223130

IGST payable

–

45,00,000.00

-45,00,000.00

420200

Accrued revenue - sales value

–

2,50,00,000.00

-2,50,00,000.00

501001

Cost - hour

1,81,12,750.00

–

1,81,12,750.00

501002

Cost - hour (internal project)

3,15,000.00

–

3,15,000.00

Total

12,74,27,750.00

12,74,27,750.00

–

Observations from the trial balance:

  • WIP - sales value and WIP - invoiced on-account both close at nil: the monthly revenue recognitions and the milestone invoices were cleared against each other at elimination.
  • Trade Receivables closes at nil, as all five invoices are settled.
  • The receipts reconcile: Bank 2,70,00,000.00 + TDS Recoverable 25,00,000.00 = contract value 2,50,00,000.00 + IGST 45,00,000.00 = 2,95,00,000.00.
  • Cost - hour and Cost - hour (internal project) together equal Payroll allocation of 1,84,27,750.00.

Profit and loss statement after the Contract to Close process

Particulars

Amounts (2026-27)

Revenue from Operations

2,50,00,000.00

Total Income

2,50,00,000.00

Project cost (consultant hours: contract 1,81,12,750.00 + training 3,15,000.00)

1,84,27,750.00

Absorbed employee cost (Payroll allocation)

-1,84,27,750.00

Total Expenses

–

Profit Before Tax

2,50,00,000.00

Profit After Tax for the Year

2,50,00,000.00

Total Comprehensive Income for the Year

2,50,00,000.00

As in Part 2, the absorption credit (Payroll allocation) is not a real profit. In a live ledger, the matching salaries would be booked through payroll, and the profit from the engagement would be 65,72,250.00: the project margin of 68,87,250.00 less the training cost of 3,15,000.00. GST collected and TDS withheld do not affect profit.

Balance sheet after the Contract to Close process

Particulars

Amounts (2026-27)

ASSETS

Current Assets

Trade Receivables

–

Contract assets (unbilled revenue)

–

Cash and Cash Equivalents

2,70,00,000.00

Current Tax Assets (TDS receivable)

25,00,000.00

TOTAL ASSETS

2,95,00,000.00

EQUITY AND LIABILITIES

Other Equity

2,50,00,000.00

Contract liabilities (advance from customer)

–

Other Current Liabilities (GST payable)

45,00,000.00

TOTAL EQUITY AND LIABILITIES

2,95,00,000.00

At the close of the project, the contract balances are nil: everything earned has been billed and everything billed has been collected. During the project they were not — a balance sheet at 31-10-2026 would show contract liability of 60,13,418.48, and at 28-02-2027 a contract asset of 10,08,284.57.

Key takeaways

Every stage of the fixed-price project can be traced from the implementation milestone to the D365 document, the voucher and the financial statements:

Contract (no entry) → Milestone invoice (WIP - invoiced on-account) → Customer receipt → Timesheets (project cost) → Monthly revenue recognition (WIP - sales value / revenue) → Elimination → Project closed

  • Billing is not revenue. The billing schedule decides when the customer is invoiced; the revenue recognition decides what is earned.
  • Completion drives revenue. With the cost-to-cost method, the hour forecast is as important as the hours posted: revenue each month is only as accurate as the cost to complete.
  • The contract balance changes sign. Front-loaded billing creates contract liability; work running ahead of milestones creates a contract asset.
  • Configuration decides the route. The project group, the line property's Capitalize cost and the ledger posting setup together decide whether hour cost passes through WIP or goes straight to profit and loss.
  • Overruns land at the end unless the forecast is revised during the project.

The objective of this series remains the same: to understand not just which steps to perform in D365 F&O, but the accounting logic behind every important transaction. The configuration and process steps for project accounting will follow in separate posts.

Sources