BuildFlow Help Guides for the BuildFlow app

Ledger

Each project’s Ledger tab has two sides: what you owe the professionals working on it (Fees), and payment certificates for the contractor's work (Construction). Both move through the same approval chain before anything is marked paid.

Not everyone on a project sees the same amount of this — directors and admins choose who can see each side, and whether they see amounts at all. See Ledger access in the project's Settings tab.

General expenses

General expenses are office costs that do not belong to one project: petty cash, salaries, rent, utilities, equipment, and similar day-to-day spending.

Use the General expenses page for these. Each row has a date, description, category, and amount. BuildFlow groups the rows by month, totals each month, and shows category totals at the top so you can see where the office money went.

This is only a record book. It does not create approval tasks, certificates, or reminders on a project board. Access is controlled from Settings in the workspace's Ledger access panel. Admins can edit it; other people only see it if an admin gives them access.

Team expenses & reimbursements

A claim is money a team member has already spent out of their own pocket for the project or the office — a taxi fare, materials picked up on the way to site, anything like that — and is now asking to be paid back for.

A team member adds one from their own My expenses page: the date, what it was for, the amount, and a photo of the receipt.

Add the receipt photo first and the details fill themselves in — the shop's name, the amount, and the date are read straight off the receipt into the form. Check them before you submit; anything you've already typed is left alone, and if the receipt can't be read you simply fill the form in as usual.

From there, a claim moves along a simple path: Submitted — waiting for someone to look at it; Approved — checked and accepted; Reimbursed — the money has actually been paid back to them. If a claim is turned down instead, it comes back Rejected, with a note saying what to fix, so the person can correct it and send it in again.

Anyone given Edit access to the general expenses book — the top choice in Ledger access — can approve a claim and mark it reimbursed.

Professional fees

Add one fee agreement per professional on the project — architect, QS, structural engineer, contractor, whoever you've agreed a fee with. It doesn't matter which direction the money travels: use an agreement for what the client owes your firm, and equally for what your firm owes a consultant it brought onto the project.

When adding one: Paid to is who receives the money, Paid by is who pays it, Approved by is the role or person who signs off when approval is needed, and Notes is a plain reminder of what the fee covers, like "structural design plus three site visits". Click into Paid to or Paid by and the choices appear right away — roles like Architect or QS, the people on your project, and names you've used before — or just type any name or firm. Naming a role here is only a label on the record; it doesn't give anyone access to the ledger.

Reading the ledger

Each agreement reads like a simple account, with three columns: what it's called, what was Agreed, and what's been Paid. Across the top of the card you'll see the running totals — Agreed − Paid = Due — so you always know what's outstanding at a glance.

Underneath, every fee proposal on the agreement gets its own row, with its milestones or logged events nested underneath it. Click any row to open it and see the full detail — the proposal's paperwork, an event's date, or a payment's approval history.

A payment that's still waiting on someone to approve it shows in the Paid column too, but greyed out with a status chip next to it, rather than in solid black — that's your cue that it's not settled money yet. It isn't added into the Paid total until someone actually approves it all the way through and marks it paid. A payment that was turned down and never resubmitted stays out of the totals altogether.

Grouped and chronological views

Two buttons above the table switch how the rows are arranged:

Both views always add up to the same totals — switching between them never changes what's Agreed, Paid, or Due, only how the rows are arranged.

Adding a fee proposal or a payment

One button, + Add entry, covers everything you can add to an agreement. It offers a Fee proposal, of two kinds, or a Payment:

Have the fee proposal as a document? Open a lump-sum proposal and use Fill from a proposal document — BuildFlow reads it and fills in the title, reference, and the whole payment plan as a draft. Nothing is saved yet: check it over, fix anything it misread, and only then hit save.

Each milestone you add also drops a reminder onto the project's board, on the stage you pick for the proposal (or the first stage if you don't) — so the team sees an upcoming payment as a task. Open the proposal any time to see its milestones and change which stage their reminders sit on. The reminder itself is just that — a reminder; recording that the money actually moved always happens back here, with a payment entry.

Payments that wait for a task

A payment doesn't always fall due on a date. Often it falls due when a particular piece of work is finished — the design is signed off, the drawings go out.

When you add a milestone to a lump-sum fee proposal, choose After a task instead of On a date, then pick the task it waits for from the project. The milestone shows as Not due until that task is marked done, and turns to Due the moment it is. If someone later reopens the task, the milestone goes back to Not due until it's finished again. A milestone is always one or the other — a date, or a task — never both. One thing to watch: if you leave On a date selected but don't actually pick a date, the payment counts as due straight away, not as waiting for anything.

On the Chronological view, a task-gated milestone takes its place in the list at the date of the task it's waiting on, and carries a chip naming that task — click it to go straight there.

Payment certificates

The Construction side records payment certificates the same way a QS reads one off paper, from the cumulative work done down to what's actually due:

  1. Enter the cumulative work done so far, plus any variations and price fluctuations.
  2. Enter the retention percentage — held back from the work done.
  3. Enter material on site and what percentage of it to release.
  4. Enter what's already been certified in previous certificates, plus any interest, retention released, advance recovered, or damages that apply to this one.

BuildFlow works out the amount due as you type, so you can check it against your own numbers before saving. The figure you see while filling this in is a preview only; BuildFlow recalculates the final amount from your entered figures the moment you save, so the certificate always matches what was actually entered. A negative amount is allowed — that's a corrective or credit certificate — but you'll get a heads-up before you save one, so it's never a surprise.

Every line on a certificate, in plain words:

Worked example — an interim certificate on a house with a contract sum of LKR 50,000,000, retention set at 10%:

LineAmount (LKR)
Work done to date24,500,000
+ Variations1,200,000
+ Price fluctuations350,000
− Retention (10% of the three lines above)2,605,000
+ Materials on site released2,400,000
+ Interest (previous certificate paid late)15,000
− Advance recovery500,000
− Liquidated damages100,000
− Previously certified20,000,000
Amount due5,260,000

Each row rounds to the nearest cent, and the final amount due is rounded rather than simply cut off — so it always agrees with the already-rounded lines it's built from.

Already have the certificate as a spreadsheet? Upload it to Documents and set its category to Payment certificates — BuildFlow reads the cumulative figures straight off the sheet and creates the pending certificate entry for you, ready for approval, no re-typing. (A certificate as a PDF is just attached; type those in by hand.)

Advance payments

An advance payment is money paid to the contractor upfront, before it's earned by physical work — a mobilisation payment is the usual example. Record one from the Construction side with the amount and, if you've agreed one, a pay-back schedule: a start and finish, given as how much of the work is done.

Once an advance is recorded, every certificate that has something to pay back adds an advance recovery line, and the advance's recovered so far total grows to match — right up until the whole amount is paid back. If you'd rather decide the pay-back amount yourself on each certificate, leave the schedule empty and type it in by hand each time instead.

The pay-back schedule in plain words: a schedule of 20 to 90 means recovery starts once a fifth of the work is done, and the advance is fully paid back by the time nine-tenths of the work is done — spread across each certificate that falls in between, in proportion to how much new work that certificate covers.

Worked example — an advance of LKR 5,000,000 on the same LKR 50,000,000 contract, with a 20-to-90 pay-back schedule (recovery starts at LKR 10,000,000 of work done, finishes at LKR 45,000,000):

CertificateNew work on this certificate (LKR)Recovered this certificate (LKR)Recovered so far (LKR)
No. 35,000,000714,286714,286
No. 47,000,0001,000,0001,714,286
No. 510,000,0001,428,5713,142,857
No. 613,000,0001,857,1435,000,000 — fully recovered

Retention

Retention is the slice of each certificate's work held back as security, rather than paid straight to the contractor. It builds up into a retention pot as certificates go through — and that pot has a limit: holding stops once the held-back pot reaches its cap, usually one-twentieth of the contract sum (5%), so retention never keeps growing past what's a fair security deposit for the size of the job.

Worked example — the same LKR 50,000,000 contract, cap set at 5% (LKR 2,500,000):

CertificateRetention this certificate (LKR)Pot so far (LKR)
No. 1500,000500,000
No. 2700,0001,200,000
No. 3900,0002,100,000
No. 4400,000 (would have been 600,000, but only 400,000 of room was left)2,500,000 — cap reached
No. 5 onward0 (cap already reached)2,500,000
BuildFlow fills in each certificate's retention amount for you, already capped, so you don't have to track the running pot yourself — you can still overwrite it by hand if a certificate needs to.

Practical completion

When the project reaches practical completion — essentially finished and fit to hand over, even if a short snag list remains — tick At practical completion on an interim certificate. BuildFlow gives back half of whatever's sitting in the retention pot at that point, as a retention release line on that certificate.

Worked example — continuing the pot above, standing at LKR 2,500,000: ticking the box at practical completion releases 1,250,000 back to the contractor, leaving 1,250,000 still held.

Final certificate

Set a certificate's type to Final once the project is fully complete and every defect has been made good. BuildFlow gives back whatever's left in the retention pot as a retention release, and marks that this project's construction payments are closed out.

Worked example — continuing the same project: the final certificate returns the remaining 1,250,000, taking the retention pot to 0.

Late payments and damages

Two separate things can show up on a certificate when timing goes wrong:

Both are figures you type in yourself — BuildFlow doesn't work out days-late or interest rates for you, it just adds or takes off whatever you enter and keeps the running total straight.

Bills of quantities

Upload a contractor's bill of quantities (a priced BOQ spreadsheet) to Documents and set its category to Bills of quantities. A new action appears on the document — Import BOQ / Add to ledger — right where a programme shows Add to timeline.

  1. BuildFlow reads the spreadsheet and pulls out the sections (the priced bill headings) and every underlying item.
  2. You get a review: a headline telling you how many items were found, whether the sums reconcile, and how many rows need a second look — with the flagged rows listed so you can check them.
  3. If the sheet has more than one priced column (several bidders side by side), pick which column's prices to use before applying.
  4. Hit Apply to ledger and the sections move into the Construction side of the Ledger, with the full item list a click away.

The applied sections give you the contract breakdown to check certificates against. Once a BOQ is applied, you can also ask FlowBot about it — a rate, a quantity, a particular line item — and she answers from the real imported figures (only what she can actually find in your BOQ, never a made-up number). FlowBot only sees the BOQ for people with full access to the project.

The approval chain

Every payment entry — fee or certificate — walks through an approval chain before it's approved. Out of the box that's QS submits → project architect checks → director approves, but it's entirely editable:

Changing a chain takes effect immediately, including for entries already partway through it — if a step you removed was still waiting on someone, that entry moves up to whatever is now the last step in line.

When you set a project's chain, everyone on it is automatically given Edit access to the construction ledger — otherwise they couldn't see or approve the payments they're meant to. If you later drop one of them below Edit in Ledger access, BuildFlow warns you: they'll stay on the chain but won't be able to approve.

Open any entry to see its full timeline: who's approved or sent it back at each step, and any note left with a rejection. Whoever's turn it is can approve or send it back; only the last person in the chain can move an approved entry on to sent to client and then paid.

When it's your turn, BuildFlow tells you — the bell at the top right, and an email if you have those on. Clicking either takes you straight to the payment itself, open and ready to act on.

Assignee, role, or watcher?

Three different words come up around who's involved in a payment, and they're easy to mix up:

Statuses

StatusMeaning
PendingWaiting on the current step in the approval chain.
ApprovedCleared every step in the chain.
Sent to clientPassed on for the client's own records or payment.
PaidSettled. This is the end of the line — a paid entry can't be reopened, so it stays as a clean record of what happened. (An admin can delete one if it was entered in error — see Removing entries.)
RejectedSent back with a note. Anyone in the chain (or an admin) can reopen it, which restarts it at the first step.
An entry's lifecycle is created → approved through the chain → paid. Approving a step just clears it to move forward — it doesn't settle anything by itself. For a fee agreement, the running Due total is everything currently triggered (a date passed, a stage completed, a visit logged) and doesn't fall as entries move through approval; only the agreement's Paid total grows, and only once an entry against it is actually marked paid. For a certificate, the amount itself is fixed at submission — approving and marking it paid change its status, not the figure.

Removing entries (admins only)

A payment record normally stays put — even a paid one, so the history stays clean. If something was entered by mistake, a firm admin can delete it: a single payment entry (or a recorded paid amount), or a whole fee agreement. Both ask twice before removing anything, and the outstanding total recomputes straight away. Non-admins don't see these buttons.

Payment approvals on your board

Behind every fee amount and every certificate, BuildFlow quietly creates a matching task — so it shows up on your board and in My Tasks just like any other piece of work, instead of living only inside the Ledger.

Attachments

Attach the paperwork straight to the entry — the certificate itself (plain or the sealed/signed version once you have it), the bill it's based on, or anything else worth keeping with it. Re-uploading under the same label keeps the earlier version rather than replacing it, so the history stays intact.

Generating an invoice

Open any fee or construction entry and tap Generate invoice to turn its figures into a formatted invoice document — it's attached to the entry as a bill and given its own invoice number (like INV-BU-DE-01), which stays with it and shows on the entry. You'll need an invoice template set up first (an admin adds one under Templates). If there's no invoice template yet and you're not an admin, you'll see a note to ask your app admin to add one. Generating the invoice doesn't change the entry's status; when the payment has been approved and it's ready to go out, use Mark sent to client.

Invoices and receipts uploaded to Documents get their vendor, amount and date read out automatically — handy to have open for reference while you fill in a fee payment or certificate by hand.