Skip to main content
All guides
11 min read·Last updated: 2026-06-25

Project costing: calculating real margins when you bill by milestone

When you only collect payment on partial delivery, the standard income statement is not enough. Here is how to link hours, costs, and revenue for every job and make decisions based on reliable data.

Why milestone billing distorts perceived margins

Engineering firms, digital agencies, IT consultants, and B2B service companies in Switzerland often bill by milestone: progress payments tied to partial deliverables, client approvals, or project phases. The standard income statement, however, records revenue and costs at the accounting date — not necessarily when the work is performed. The result is an apparent margin that swings month to month, even when the project's actual profitability remains stable.

Without project costing, an owner may believe they had an excellent quarter because three milestones fell due, while personnel and subcontractor costs were incurred in earlier months. Or the opposite: low billed revenue but a full team on multiple jobs, with real margins still positive but invisible in monthly reporting.

This guide explains how to structure the calculation of real margins per job in the context of Swiss SMEs, with reference to accounting standards (Swiss GAAP FER), VAT reporting obligations, and Accountex features for linking hours, expenses, and revenue to each project.

Statutory accounting and project costing

Mandatory statutory accounting — governed by the Code of Obligations (Art. 957 et seq.) and Swiss accounting standards — produces the balance sheet and income statement for the entire company. Project costing is an internal level of detail that allocates revenue, direct costs, and shares of indirect costs to individual jobs, regardless of when the invoice is issued or collected.

Accrual revenue

Portion of contract value earned based on work progress, not simply on milestone collection. It is the basis for comparing revenue and costs over the same period.

Direct project costs

Valued internal hours, subcontractors, project-specific licenses, travel, and materials attributable to a single job. Tracked with a unique project code.

Job margin

Difference between accrual revenue and direct costs (and, where applicable, a share of indirect costs). Shows whether the project creates value before the final invoice.

In Switzerland, companies that prepare financial statements under full accounting standards (Swiss GAAP FER) and carry out significant multi-year contracts under FER 22 must, if the cumulative conditions are met (valid contract, high probability of fulfillment, adequate organization, reliable estimate of revenue, costs, and degree of completion), recognize revenue using the percentage-of-completion method; otherwise the completed-contract method applies. With simplified financial statements (Art. 957a CO), more basic criteria apply; in every case, project costing helps monitor real margin. For shorter jobs, statutory revenue may align with the milestone issued — but costs must be allocated continuously so margin control is not lost.

The pitfalls of milestone billing

Contracts with clearly defined milestones are common in professional services. However, they create three typical distortions if project tracking is not activated:

Scenario What the income statement shows Real project margin Operational risk
Work ahead of schedule, invoice delayed High costs, no revenue in the month Positive margin but hidden Underestimated future liquidity, premature team cuts
Milestone invoiced, work incomplete High revenue, costs still to be recorded Temporarily inflated margin Investment decisions based on illusory profits
Unbilled scope changes Revenue unchanged from contract Margin eroding silently Uncompensated scope creep, client disputes
Multi-year project with annual progress payments Billing spikes at year-end Smooth trend if calculated on accrual basis Inaccurate tax profit estimate without year-end adjustments

The solution is not to change the billing model, but to separate cash flow from economic performance. The milestone invoice remains the collection instrument and, under the agreed consideration method (Swiss VAT standard), also determines VAT liability; real margin is calculated by cross-referencing work progress, costs incurred, and contract value.

Correctly allocating costs and revenue to each job

The core of project costing is a simple rule: every relevant accounting entry must carry a project code (or job cost center). Here is how to classify the most common items in Swiss SMEs:

Item Allocation method Practical example Update frequency
Internal staff hours Timesheet with internal rate (fully loaded hourly cost: salary + mandatory social contributions + occupational pension + overhead share) Consultant at CHF 145/h internal cost, 32 hours on Project Alpha = CHF 4,640 Weekly
Subcontractors and freelancers Direct allocation from supplier invoice to project code External designer invoices CHF 3,800 → Job Beta On posting
Travel and materials Expense report or purchase with mandatory project field Client trip to Ticino, CHF 420 for meals/accommodation Monthly
Indirect costs (rent, administration) Allocation driver: hours, revenue, or headcount per project 15% overhead on internal billable hours Quarterly
Milestone revenue Invoice issued when milestone is reached; accrual adjustment if required Milestone 2 of CHF 25,000 on total contract of CHF 80,000 At event + periodic adjustment

For staff, the internal rate must include mandatory social contributions (OASI/DI/IC/ALV, accident insurance, occupational pension where applicable) and a reasonable share of structural costs. Using net or gross salary alone understates true cost and makes margins appear higher than they actually are — a common mistake in consulting teams with few administrative staff.

How to calculate real margin per project

Calculating real margin follows an operational sequence that can be automated in accounting software. Here is a concrete example of a service SME based in French-speaking Switzerland:

Example: software project with three milestones

  • Contract: CHF 120,000 + VAT, three milestones of CHF 40,000 (analysis, development, go-live)
  • End of month 2: milestone 1 invoiced and collected; costs incurred (hours + subcontract) = CHF 38,500
  • End of month 4: milestone 2 not yet invoiced due to client approval delay; cumulative costs = CHF 72,000; estimated progress 55%
  • Accrual revenue at end of month 4: 120,000 × 55% = CHF 66,000
  • Real margin: 66,000 − 72,000 = −CHF 6,000 (project temporarily loss-making despite CHF 40,000 already invoiced)

The basic formula for each job is:

Job margin = Accrual revenue − Direct costs − Share of indirect costs

Accrual revenue is obtained by multiplying contract value (including any approved change orders) by the percentage of completion. Progress can be based on actual hours vs. budget, deliverables completed, or project manager assessment — what matters is applying the same criterion consistently across all projects.

Work in progress (WIP) and period-end adjustments

When costs incurred exceed billed revenue — or vice versa — a difference arises that in project costing is called work in progress on contracts (work in progress, WIP). At monthly or quarterly closing, it is advisable to post adjustments that bring the statutory income statement closer to the project's economic reality.

Positive WIP (costs > billed)

Work performed has not yet been invoiced. An asset is recognized (work-in-progress receivable) or revenue is adjusted on accrual basis. Typical in intermediate phases of multi-year projects.

Advance billing (billed > costs incurred)

The milestone was issued before the work was actually completed. A liability is recorded (advances on work in progress) until costs reach billed revenue.

Under Swiss GAAP FER — in particular FER 22 for multi-year contracts — the prudence principle and matching of costs and revenue require that profit not be artificially inflated. If a project shows signs of definitive loss — insolvent client, scope impossible to complete — a WIP write-down and, if necessary, a provision for contract losses must be considered. This assessment also affects the taxable profit base and must be documented for review by the fiduciary.

Operational workflow with Accountex

A project costing system works only if data enters in real time, not at quarter-end. Here is a recommended workflow for SMEs using Accountex:

  1. 1

    Open the job when the quote is accepted

    Create a project code linked to the client, with hour budget, contract amount, planned milestones, and applicable VAT rate. The budget becomes the reference for variance alerts.

  2. 2

    Record hours and expenses with mandatory project code

    Every timesheet and every supplier invoice must specify the job. Accountex lets you filter entries by project and view cumulative costs vs. budget at any time.

  3. 3

    Issue the milestone invoice linked to the project

    The invoice generates cash flow and, as a rule, VAT liability at issuance (agreed consideration method); it remains analytically linked to the job. The system shows billed revenue vs. accrual vs. costs incurred.

  4. 4

    Reconcile progress and margins monthly

    Compare completion percentage with cumulative costs. If estimated margin at completion falls below the internal threshold (e.g. 20%), trigger a scope review or contract supplement.

  5. 5

    Adjust WIP at month- or quarter-end

    Generate the per-job report and post the necessary adjustments before accounting close. The data also feeds the annual tax profit estimate.

The key is data discipline: a missing project code on ten hours per week, multiplied by five team members, produces a variance of tens of thousands of francs over a financial year.

Indicators to monitor for each job

Beyond absolute margin, certain KPIs allow intervention before a project becomes structurally loss-making:

Estimated margin at completion (EAC margin)

Projects estimated final costs against contract value. Formula: Contract value − (Costs incurred ÷ % completion). If the result is negative, the project will close at a loss even if billing is accelerated.

Hour budget consumption index

Actual hours ÷ budget hours × 100, compared to completion percentage. A value above 100 with 60% progress signals inefficiency or initial underestimation.

Project DSO

Average days between milestone invoice issuance and collection. Distinct from margin, but critical for liquidity: a profitable project with 60-day DSO can create pressure on monthly salaries and social contributions.

Value of unbilled change orders

Sum of extra requests approved verbally but not yet incorporated into the contract. Tracking them prevents margin erosion from uncompensated work.

For fiduciary firms assisting clients with multiple simultaneous jobs, a consolidated report by client — not just by individual project — helps identify which commercial relationships concentrate margin risk.

Common mistakes and how to avoid them

Confusing collection with accrual revenue

A progress payment collected does not mean margin has been realized. Always allocate revenue in proportion to progress, especially on jobs spanning multiple accounting periods or tax years.

Forgetting non-billable staff costs

Internal meetings, post-delivery corrections, and project training consume hours. If not tracked, final margin is systematically overstated by 5–15%.

Not updating the budget after contract changes

Every approved change order must update contract value, milestones, and hour budget. Otherwise variance alerts start from an obsolete reference.

Closing the project only at the last milestone

Post-delivery warranty, bug fixes, and support included in the contract generate costs after the final invoice. Plan for a residual cost period or a dedicated closing milestone.

From accounting data to business decision

Project costing does not replace the statutory financial statements or the VAT return, but it bridges the gap between when you invoice and when you create value. For Swiss SMEs working on milestones, it is the tool that turns the income statement — often irregular by nature — into a series of comparable margins, job by job.

Getting started does not require a full ERP: a consistent project code, disciplined timesheets, linked invoices, and periodic WIP adjustment are enough. With Accountex, owners and fiduciaries can build this level of control starting from the accounting already in use, monitoring real margins before the last milestone reveals — too late — a loss-making project.

Simplify your Swiss accounting

AccountEX handles VAT, QR-invoices and bookings with AI. Start for free.