Skip to main content

Construction

Written by Sinyee

Introduction

Construction businesses bill clients progressively based on project milestones, often with a portion of each claim withheld by the client as retention money until the project (or Defect Liability Period) is complete. This guide covers how to record progressive billing, retention money, and project-based cost tracking in Bukku, along with the reports to use for monitoring outstanding balances.

Progressive Billing

Billing is based on milestones or % completion, certified per item/work package. You may start from a Quotation or Sales Order, then progressively convert it into partial invoices as work is completed, until the full contract value is billed.


Step 1: Create Full Project Document (Quotation or Sales Order)

  • Go to Sales > Quotation > + New, or, Sales > Sales Order > + New, depending on your workflow.

  • Create a single document for the full contract value of the project, with all relevant items/services and project details. This document becomes the reference for all progressive billing.

  • Below is a sample Quotation capturing the full contract value for a terrace house renovation project, itemised by work item, for customer Zulkifli bin Ahmad, totalling RM75,000.00. This becomes the basis for all progress claims raised later.

Step 2: Create Progressive Invoice

2.1 Transfer from Quotation

Once work has started or a billing milestone is reached:

  • Go to Sales > Quotation

  • Locate the relevant document

  • Click the three dots (⋯) next to View

  • Select 'Transfer To...' > Invoice


2.2 Manage Transfer Items — Apply % Per Item Line

  • Click "Manage Transfer Items".

  • Adjust the Apply Qty individually for each line item, either in percentage (%) or decimal form.

    • If an item is 100% complete, enter 100% or 1 in Apply Qty.

    • For an item that's 40% complete, enter 40% or 0.4. (Entering a % will automatically convert to decimal form.)

    • For items not yet started, you can key in 0% or simply untick the item.

Example:

Progress Claim 1 — site just started; Demolition fully done, Structural in progress:

The system generates an invoice for RM13,000.00.

Below is the resulting invoice for Progress Claim 1, showing Demolition fully claimed (100%) and Structural Works partially claimed (40%), against their full Contract Value:


📌 Note: You can repeat the same steps of 2.1 and 2.2 to progressively transfer the remaining balance until the Quotation is fully invoiced (100%).

Example:

Progress Claim 2 — showing Structural Works claimed a further 60% (bringing it to 100% completed), Electrical Wiring & Installation claimed 30%, and Plumbing & Sanitary Works claimed 20%, against their full Contract Value:

Resulting invoice:


Example:

Progress Claim 3 — final claim; remaining items completed:

📌 Since this is the final claim, when you click "Transfer To... > Invoice" from the Quotation, Bukku automatically pre-fills the Apply Qty with the remaining Balance Qty for each item — so you don't need to manually calculate or key in the percentage; just confirm and the invoice is generated for whatever's left.

Resulting invoice:

📌 Check: RM13,000 + RM18,800 + RM43,200 = RM75,000.00 — fully claimed across 3 progress claims, matching the total contract value.

Customise Transaction PDFs Layout for Progressive Billing

  • To show customer how much of each item has been billed, go to Control Panel > Form Design > View, and toggle on the Progress % column.

  • You can also rename column labels to better fit your billing format — e.g. rename "Unit Price" to "Contract Value".

📌 Note: You may create a new or duplicate form design specifically for progressive billing, with the Progress (%) column and renamed labels (e.g. "Contract Value") already set up. This lets you use this layout only when needed, by selecting the appropriate form design when Print / PDF, or using QuickShare for the invoice.

Retention Money

In addition to progressive billing, most construction contracts include a retention clause — a portion of each progress claim that the client holds back as security, only paying it out after project completion or once the Defect Liability Period (DLP) ends.

This retained amount is not a discount — it's still revenue you've earned, just temporarily withheld and recorded as a receivable until it's collected later.


Step 1: Create the Retention Receivable Account

Accounting > Chart of Account > +New

  • System Type: Leave empty

  • Type: Current Assets

  • Classification: Operating

  • Name: Retention Receivable

Step 2: Add Retention Line to Each Progress Claim Invoice

On top of the item lines transferred from the Quotation, add one extra manual line for retention in the invoice, entered as a negative value, account = Retention Receivable.

Progress Claim 1 Invoice (RM13,000 subtotal, 10% retention):

Double Entry:


Claim 2 & Claim 3 — same treatment applies: retention is added as 10% of that claim's subtotal.

  • Claim 2 Invoice: RM18,800 subtotal → Retention RM1,880 → Invoice Total RM16,920

    • Dr Trade Receivable RM16,920

    • Dr Retention Receivable RM1,880

    • Cr Sales Income RM18,800

  • Claim 3 Invoice: RM43,200 subtotal → Retention RM4,320 → Invoice Total RM38,880

    • Dr Trade Receivable RM38,880

    • Dr Retention Receivable RM4,320

    • Cr Sales Income RM43,200


📌 Total retention withheld across all 3 claims: RM1,300 + RM1,880 + RM4,320 = RM7,500.00 (10% of the RM75,000 total contract value).

Accounting impact (across the full project)

  • Full revenue recognised: RM75,000.00

  • RM67,500.00 → Trade Receivable, collected progressively as each claim is paid

  • RM7,500.00 → Retention Receivable, collected later after DLP ends

Step 3: Collect Retention

Once the Defect Liability Period ends and the client releases the retention sum, issue a new invoice for the retention amount collected, selecting the Retention Receivable account.

Sales > Invoices > +New

Double Entry:

Then record payment received against this invoice as usual (Sales > Payment).

Monitoring Retention Receivable

To check how much retention has been withheld, and how much is still outstanding for a project or customer, use the General Ledger report:

Report > All Reports > General Ledger → filter account "Retention Receivable", filter Contact by customer.

This shows the running balance — retention withheld on each claim, and the final collection clearing it to zero:

Project-Based Tracking

In construction, costs and revenue should be tracked by project to monitor performance accurately, since one company may run multiple ongoing projects at once.

Use the tagging function to group income and expenses by project, so each project's profitability can be tracked separately.


Step 1: Set Up Tags

Control Panel > Tags

Create a Tag Group for your projects (e.g. "Renovation Project"), then create one tag per project under it, e.g.:

  • 2026R-DAMAI-001 (Renovation Project, Jalan Damai)

  • 2026R-MIDAH-002 (Renovation Project, Jalan Midah)

For full setup steps, refer to Setting Up and Using the Tagging Function


Step 2: Apply the Tag in Transactions

Tag every relevant transaction related to that project — such as the Quotation, Progressive Invoices, Retention Collection Invoice, and any subcontractor bills or material purchases tied to the job.

The Tags field is found under the General Info tab of each transaction; select the matching project tag (e.g. "2026R-DAMAI-001" under the "Renovation Project" group) from the dropdown.

⚠️ Tag must be applied consistently on BOTH income and cost side, or the project P&L won't balance meaningfully.


Step 3: Generate Project Profit & Loss

Once all transactions are tagged, you can pull a Profit & Loss report filtered to just this project — showing its income, direct costs, and profit margin on its own, separate from other projects.

Report > All Reports > Profit & Loss → filter by Tag = "2026R-DAMAI-001"

Did this answer your question?