Install & open
BillMate installs like any other desktop app on Windows, Mac and Linux — or opens straight in your browser on a phone or tablet. There is no account and no server either way.
On Windows, Mac or Linux
- Download the installer for your system
From the link in your purchase email or the download page — Windows, Mac or Linux. Each is a normal installer for that system, not a shared download.
- Run it
The same as installing any other desktop program: follow the prompts. Windows or macOS may show a first-run security notice for a new publisher — that's normal; allow it to continue.
- Launch BillMate
From the Start Menu (Windows), your Applications folder (Mac), or your application launcher (Linux) — it opens as its own window from here on, not inside a browser tab.
On a phone or tablet
- Open BillMate in your browser
Visit the link from your purchase email or the download page. On iPad or iPhone, Safari works best.
- Add it to your home screen
Safari: Share → Add to Home Screen. Chrome: ⋮ → Add to Home screen. It then launches full-screen with no browser chrome, which is the better way to work on site.
Your desktop install and anything you open on a phone or tablet each hold their own separate projects — nothing syncs between them automatically. That is deliberate: your data lives on the device, not on a server of ours. Move work between them using backup files.
Everything except the AI assistant works with no connection at all. The first time BillMate runs it fetches its typefaces from the web; after that it works offline, and if it can never reach them it simply falls back to your system fonts. Your bills are never affected either way.
First-run setup
The first time you open BillMate it asks for your firm's defaults. Every new project inherits them, and you can override any of them per project later.
You can reopen this at any time from ⋮ → Region, currency & firm.
| Field | What it does | Advice |
|---|---|---|
| Language | Translates the interface. | Six languages. Arabic switches the whole layout right-to-left. |
| Translate technical terms | When on, terms like Preliminaries and Taking-off appear in your language. | Leave off. Most surveyors read these as fixed terminology, whatever language they work in. |
| Firm / QS name | Printed as the letterhead on every exported BOQ. | Set this before your first export — it is the top line of the client's document. |
| Region / market | Anchors AI rates and item wording to a real place. | Be specific. Kumasi, Ghana prices far better than Ghana. |
| Default currency | Currency for new projects, and the precision of every figure. | 14 currencies. Decimal places follow the currency — Kuwaiti dinar shows three, not two. |
| Measurement | Metric (m, m², m³) or Imperial (ft, ft², ft³). | Drives the dimension sheet units and what the AI measures in. |
| Default tax | The label on the tax line: VAT, GST, Sales Tax, Tax or None. | Pick the name your clients expect to read. |
| Tax rate % | Applied after preliminaries and contingency. | Set 0 and label None if you bill exclusive of tax. |
| Default section template | The starter breakdown for new projects. | See Sections for the seven templates. |
Enter your firm name and a specific locality. These two fields do more for the quality of your output than anything else in the dialog — one becomes your letterhead, the other is what keeps AI rates in the right market and the right order of magnitude.
Your first bill
A complete run through, end to end. Ten minutes, using a real substructure as the worked example.
- Name the project
Press Edit on the project card. Fill in the project name, client, location and date. These print in the header of the issued bill.
- Open a section
Your new project already has sections from the template — Substructure, Superstructure, Roofing and so on. Click a section header to open it.
- Add your first item
Press Add item. Type the description the way it should read on the bill, choose the unit, then enter the quantity and rate.
Worked exampleDescription Unit Qty Rate Amount Excavate trench not exceeding 1.50m deep, wheel, deposit and level spoil on site m³ 120 4,500 540,000 - Measure it properly instead of guessing
Rather than typing
120, press the taking-off icon on the row, enter your dimensions, and cast the result into the quantity. You then have the working measure on file. See Taking-off. - Build the rate up instead of guessing
Press the build-up icon and enter material, labour and plant per unit plus your overhead and profit percentages. BillMate calculates the all-in rate and remembers the breakdown. See Rate build-ups.
- Keep the rate for next time
Once the bill is priced, open ⋮ → Rate library and press Capture from this bill. Every rate you keyed is now available to price your next job in one click. See The rate library.
- Set your percentages
On the project card, set Preliminaries, Contingency and the tax rate. They apply across the whole bill — see Percentages & totals.
- Issue it
Export BOQ opens your browser's print dialog — choose Save as PDF. Export CSV gives you the same bill as a spreadsheet. See Exporting.
- Back it up
⋮ → Backup all data. Do this at the end of every working session. See Backups & data safety.
The screen explained
| Area | What it holds |
|---|---|
| Top bar | The project switcher, the live grand total, the language button, and ⋮ for the main menu. |
| Project card | Name, client, location, date, currency, method of measurement, and your plan badge. Edit opens the full project details. |
| Percentage strip | Preliminaries, Contingency and Tax. Type straight into them; totals update as you type. |
| Sections | One collapsible block per element or trade, each showing its item count, its sub-total, a bar for its share of the bill, and a red badge counting items with a quantity but no rate. |
| Bill summary | The dark card at the bottom: measured work, the percentage lines, and the grand total. |
| Basis of estimate | Appears under the summary when there is anything to declare — your price basis, plus automatic warnings about unverified or ageing rates. |
| Bottom bar | Export CSV and Export BOQ. |
The row tools
Every item row carries these, at the right on a computer and below the figures on a phone:
Projects
Click the project name in the top bar to open the project list. From there you can switch, rename, delete, or create a new project.
| Task | How |
|---|---|
| Switch project | Top bar → tap the project name in the list. |
| New project | New project. Choose a name and a section template. |
| Rename | The pencil beside a project in the list. |
| Delete | The bin beside a project. Asks first, and cannot delete your last project. |
| Edit details | Edit on the project card — client, location, date, currency, measurement system, region, method of measurement, tax, and basis of estimate. |
The free plan holds two projects. Everything in those two projects works fully — measurement, taking-off, build-ups and the whole rate library. What Pro adds is unlimited projects, the exports, and the AI assistant. See Free vs Pro.
Each project carries its own currency, measurement system and tax settings, so you can price a job in Nigeria and another in the UAE from the same install without touching your defaults.
Sections
A section is an element or a trade — the level a client reads sub-totals at.
- Add — Add section / element at the bottom of the bill.
- Rename — click the section name and type. It saves when you click away.
- Reorder — the up and down arrows in the section header. The section keeps everything inside it.
- Collapse — click anywhere on the header. Collapse state is remembered, and exporting no longer disturbs it.
- Delete — Delete section inside the section. Asks first, then offers an undo.
Section templates
A new project starts from one of these. You can rename, add and delete sections afterwards, so treat the template as a starting point rather than a commitment.
| Template | Use it for |
|---|---|
| Elemental (general) | A straightforward elemental breakdown. The default. |
| RICS NRM1 elemental (UK) | Order of cost estimating and cost planning. |
| RICS NRM2 measured works (UK) | Detailed measurement for building works. |
| CPWD / DSR (India) | CPWD specifications and Delhi Schedule of Rates conventions. |
| ASAQS / SMM (South Africa) | ASAQS Standard System of Measuring Building Work. |
| CSI MasterFormat (US/CA) | North American division structure. |
| Trades (generic) | A trade-by-trade breakdown with no standard attached. |
Five of these are recognised methods of measurement. When one is set, the AI is told to measure, name and word every item in compliance with it — so the choice changes the output, not just the starting list. The template also prints on the bill, which tells a client's QS how to read your measurement.
Items
Each row is one measured item: a description, a unit, a quantity, a rate, and the amount BillMate calculates from them.
Keying items quickly
- Tab moves across the row and on to the next. Totals update as you type.
- Amounts, sub-totals, the section share bars and the grand total all recalculate live.
- A rate cell highlighted in amber means the item has a quantity but no rate. The count of those appears as a red badge on the section header, so nothing unpriced can hide inside a collapsed section.
- Duplicate copies the description, unit, quantity, dimension sheet and build-up — the fastest way to bill a family of similar items.
- Delete is immediate but offers Undo for eight seconds. There is no confirmation dialog, because deleting rows is something you do dozens of times a session.
The description cell is one line on screen, so a properly worded item looks cut off. It is not — the printed and exported bill carries the full text, wrapped, with the item reference in its own column. Write the description the way it should read on the client's document and ignore how much of it the cell shows.
Units
Pick from the unit dropdown. The list covers metric, imperial and the units a surveyor meets outside the SI set:
| Group | Units |
|---|---|
| Metric | m · m² · m³ · mm |
| Imperial | ft · ft² · ft³ · yd · yd² · yd³ · in |
| Count | nr · no · item · set |
| Weight | kg · lb · tonne |
| Lump | sum · LS · % |
| Time | hr · day · wk · month |
| Trade | litre · bag · trip · roll |
You never have to normalise unit spellings by hand. cum,
cu.m, m3 and cubic metre all become
m³; sqft, sft and ft2 all become
ft²; nos, each and pcs all
become nr. This runs on spreadsheet imports and on AI output alike.
Provisional & prime cost sums
Work that is genuinely required but cannot be measured yet — a statutory connection, a specialist sub-contract package, the prime cost of ironmongery.
- Add an ordinary item and write the description
For example, Statutory water authority connection and meter.
- Open the unit dropdown and choose the sum type
Below the measured units there is a Sums group with Prov. sum and PC sum.
- Enter the sum in the rate column
The quantity locks to 1, so the amount is the sum itself. The row is tinted and tagged so it cannot be mistaken for measured work.
On the issued bill the description is prefixed Provisional Sum — or
Prime Cost Sum —, the unit prints as sum, and the bill summary
gains a line reading — of which provisional & PC sums. Sums are
part of the measured total; that line simply tells the client how much of the price
covers work that has not been defined yet.
A provisional sum is a figure for one job, not a reusable unit rate, so Capture from this bill and Apply to this bill both skip them. Nothing will ever overwrite a sum you have entered.
Taking-off
The dimension sheet behind a quantity — the working a QS is asked to produce when a figure is queried.
- Open the sheet
Press the taking-off icon on the item row.
- Choose what you are measuring
Linear (length), Area (length × width), Volume (length × width × depth) or Number (counted). The dimension fields change to match, and units follow the project's measurement system.
- Enter each dimension set
Times multiplies the set — enter
4for four identical columns. Leave it blank for once. Label the row so the sheet still makes sense in six months: external walls grid A–D. - Deduct openings and voids
Mark a row Ddt and it subtracts instead of adding. The row turns red and its result shows negative — the standard way to handle a door, window or void.
- Cast it into the bill
Cast to quantity writes the net total into the item's quantity and sets the unit to match what you measured. A small dot appears beside the quantity to show it came from a measure rather than a keystroke.
| Times | Label | L | W | D | Result |
|---|---|---|---|---|---|
| 2 | External walls, long sides | 12.50 | 0.90 | 1.50 | 33.75 |
| 2 | External walls, short sides | 8.20 | 0.90 | 1.50 | 22.14 |
| 1 | Ddt — soakaway already excavated | 2.00 | 2.00 | 1.50 | −6.00 |
Net quantity 49.89 m³ → cast into the bill
The dimension sheet is stored with the item and travels in your backups, but it does not yet appear in the printed BOQ or the CSV. If a client's QS asks for your taking-off, you will need to show it on screen for now.
Rate build-ups
The constituents behind an all-in unit rate — what a client's QS will ask you to justify.
- Open the build-up
Press the build-up icon on the item row.
- Enter the cost per unit
Material delivered, including waste and laps. Labour as the gang cost per unit, from the local daily wage and a realistic output constant. Plant / equipment for hire, fuel and small tools — zero if the item is hand-worked.
- Add overhead and profit
Both are percentages. They default to 10% and 15% until you set your own.
- Apply it
Apply rate to item writes the calculated rate onto the bill and keeps the breakdown. The build-up icon turns solid to show there is working behind that rate, and reopening it shows your figures rather than a blank form.
How the rate is calculated
Net cost = material + labour + plant
Overhead = net cost × overhead %
Profit = (net cost + overhead) × profit %
Unit rate = net cost + overhead + profit
| Material | 4,800 |
| Labour | 1,600 |
| Plant | 100 |
| Net cost | 6,500 |
| + Overhead 10% | 650 |
| + Profit 15% | 1,072.50 |
| Unit rate | 8,222.50 |
If you type a different rate straight into the bill, the stored breakdown is removed and the icon stops claiming there is working behind the figure. That is deliberate: a breakdown that no longer adds up to the rate on the bill is worse than no breakdown at all. Applying a library rate does the same.
Like the dimension sheet, build-ups are stored and backed up but are not yet included in the printed bill or the CSV export.
The rate library
Your own unit rates, held on this device and reused across every project. This is the single biggest time-saver in BillMate, and it is available on the free plan.Free
Open it from ⋮ → Rate library.
A language model's unit rates are an educated guess against training data that is months to years out of date and never local enough. The rates a working surveyor already holds are the real thing. So the library is treated as authoritative everywhere the two meet: it prices your bill directly, and it is handed to the AI as the price basis instead of the AI being trusted to invent one.
Importing your rates
You almost certainly have a priced schedule in a spreadsheet already. Bring it in once.
- Press Import rates
- Give it your data
Either Choose a CSV file… (up to 8 MB), or select the cells in Excel or Google Sheets, copy, and paste into the box. A pasted block arrives tab-separated and is read the same way. Comma files, semicolon files and quoted descriptions containing commas are all handled.
- Match your columns
BillMate reads your header row and pre-fills the mapping — and it knows that a column headed Unit Rate is the rate, not the unit. Correct anything wrong with the dropdowns above each column. Description and Rate are required; unit, currency, region and note are optional. Untick First row is a header if your file has no headings.
- Set the currency
Any row without its own currency column takes the currency you choose here. This matters — a rate is only ever applied to a bill in the same currency.
- Import
The button tells you exactly how many rates will land, and the summary tells you how many rows were skipped for having no description or no rate — so trade headings and blank spacer rows never disappear silently.
The minimum your spreadsheet needs
Description,Unit,Rate
Excavate trench not exceeding 1.50m deep,cum,4500
150mm solid blockwork in walls,sqm,"8,200.00"
Reinforcement, high yield bars,kg,1450
Column order does not matter — you map them. Numbers may carry thousands separators, currency symbols and decimal commas.
Pricing a bill from the library
All at once
Apply to this bill matches every item and shows you a preview before anything changes. Each proposal is labelled:
- Exact — the same item, allowing for wording and punctuation.
- Similar — close enough to offer, worth a glance.
- Stale — the library rate is over a year old.
Unpriced items are ticked by default and items you have already priced are not, so the safe action is the default one. Only unpriced, Select all and Select none adjust the selection, and the whole operation has a single undo.
One row at a time
The library icon on a row turns green when your library covers that item. Press it to search your library and pick a rate. Applying one sets the rate and the unit together.
Automatically, on AI-generated items
When the AI generates items for a section, any that match your library are priced from it immediately, and a message tells you how many.
Capturing rates you have already keyed
Capture from this bill adds every priced item on the open project to your library. Rates for the same item and unit are updated rather than duplicated.
Two things are deliberately excluded: AI-estimated rates, because taking those in would launder a guess into your own price list, and provisional and PC sums, because they are job-specific.
How matching works
Worth understanding, because it decides what lands on your bill:
| Rule | Effect |
|---|---|
| Wording is flexible | Excavate trench not exceeding 1.50m deep matches Excavation to trenches not exceeding 1.50 m deep. Word order, punctuation, plurals and verb endings are all ignored. |
| Numbers must agree | A 3.00m-deep trench will never inherit the 1.50m rate, and 225mm blockwork will never inherit the 150mm rate. Dimensions are what distinguish items, so any difference in the figures rules a match out entirely. |
| Unit must agree | A rate per m² is never applied to an item measured in m³. |
| Currency must agree | Nothing is ever converted. A rate in one currency is never applied to a bill in another without asking you first. |
Managing and moving the library
- Search — filter by description, unit or region.
- Edit a rate — type a new figure straight into the list. It re-dates to today.
- Delete — the bin on the row, with an undo.
- Export as CSV — the whole library as a spreadsheet, ready to share with a colleague or import on another device.
- Clear library — asks first, and offers an undo. Export a copy before you do this.
Your library also travels inside every backup file, and restoring a backup merges rates rather than replacing them — so restoring a colleague's backup will not wipe the price list you already hold.
Keeping rates current
A schedule priced eighteen months ago is not slightly wrong. It is wrong by whatever inflation and exchange movement has done since — and it is far easier to trust by mistake than an AI rate.
Age is always visible
Every rate in the library shows its real age: priced this month, 14 months old, 2 years old. Anything over 12 months is flagged stale in the library, in the apply preview, and — the part that matters — on the printed bill, where the basis of estimate records how many priced items rely on ageing rates.
Uplifting a schedule
This is the annual job every surveyor does by hand in Excel.
- Press Uplift rates
Either from the stale-rate banner or from the buttons under the list.
- Enter the percentage
How much prices have moved since these rates were set. Negative values reduce.
- Choose what it applies to
All rates, Only rates over 12 months old, or Only rates in your project's currency. Add a text filter to narrow further — concrete, blockwork, Lagos.
- Check the preview, then apply
You see real before-and-after figures on actual rates. Applying re-dates them to today, so they stop being flagged stale, and the whole operation has one undo.
A percentage of zero changes no figures — it only re-dates the rates you selected. That is how you record "I have checked these against the market and they are still right", which is the other half of keeping a library honest.
BillMate applies whatever number you give it. If you do not know what your market has done since the schedule was priced, the honest move is 0% — re-date only the rates you have actually checked, and leave the rest flagged.
AI assistancePro
Useful for drafting scope and wording items quickly. Treat its rates as a starting point, never as a price you can issue.
Connecting a key
The AI features need a free Groq API key. BillMate has no server of its own, so the key is yours and the request goes straight from your device to Groq.
- Create a free account at
console.groq.com - Create an API key and copy it
It begins
gsk_. - Paste it into BillMate
⋮ → Groq API key for AI, paste, and Save key. It is stored on this device only.
Full BOQ generator
Drafts an entire bill from a description of the works. Reach it from AI Full BOQ Generator at the bottom of the bill.
Generating a full BOQ overwrites every section and item in the open project. If there is existing work it asks first, and there is an undo afterwards — but start a new project if you are in any doubt.
| Field | What to enter |
|---|---|
| Project scope | Structure type, size, standard of finishes, any specific structural style. "4 bedroom bungalow, high-quality finishes, standard raft foundation". |
| Locality / region | Be specific. A city and country prices markedly better than a country alone. |
| Currency | What the rates come back in. |
| Measurement system | Metric or imperial. |
| Standard / method | Sets both the section names and the measurement rules the AI must follow. |
| Where the rates come from | The most important choice — see below. |
The three rate modes
| Mode | What happens | When to use it |
|---|---|---|
| My rate library first | Your rates are sent to the AI as the price basis, and are then applied over anything it returns for the same item. The AI only fills genuine gaps. | The default whenever you have a library. Much the most accurate. |
| AI estimates | The AI prices everything. Rates are marked as unverified throughout. | A rough order of magnitude, in a market you have no rates for. |
| Quantities only | Items and quantities are generated; every rate is left blank. | When you intend to price it yourself. Often the best choice. |
Generating items for one section
Generate items inside a section drafts 6–14 properly worded measured items for the element you describe. It never returns rates — you get descriptions, units and quantities, then tick the ones you want. Anything your library covers is priced automatically.
Suggesting a build-up
Inside the rate build-up dialog, ✦ Suggest a build-up with AI fills in material, labour, plant, overhead and profit for that one item, and reports the local anchor prices and output constant it used. Your library rates are included in the brief, so the suggestion stays consistent with your own price level. Check it before applying.
Knowing which rates to trust
Every rate carries its origin, shown as a line under the rate cell:
| Cue | Origin | What to do |
|---|---|---|
| Solid green underline | From your rate library | Trust it as far as its age. Check the basis of estimate for stale warnings. |
| Dotted amber underline | AI estimate, unverified | Verify against your own prices before issuing. |
| No underline | You typed it, or built it up | Yours. |
Typing over a rate clears the marking immediately, because a rate you have keyed is your rate. The counts also print on the bill and appear in the CSV's Rate source column, so provenance survives the document leaving the app.
You are signing it, not the model. Check every amber rate against a real local price, read the basis of estimate the AI wrote and correct it, and confirm the quantities against your own measure. Construction pricing moves with inflation, supply chains and haulage; a model cannot know what happened in your market last quarter.
If AI calls stop working
Groq retires models on a schedule. If that happens you will get a clear message
naming the model. Open
⋮ →
Groq API key for AI, and put a current model name in
the AI model field — the list is at
console.groq.com. Leave the field blank to return to the default.
Percentages & totals
The three percentage boxes on the project card apply across the whole bill. They compound in the order shown:
Measured work = sum of every section (including sums)
Preliminaries = measured × prelim %
Contingency = (measured + preliminaries) × contingency %
Sub-total = measured + preliminaries + contingency
Tax = sub-total × tax %
Grand total = sub-total + tax
Because BillMate applies these itself, your unit rates should be all-in for material, labour, plant, overhead and profit — but should exclude preliminaries, contingency and tax. The AI is instructed the same way, and any preliminaries or contingency section it tries to produce is discarded rather than double-counted.
Every figure is rounded at the point it is produced, to the precision of the project's currency. That is why printed line amounts always add up to the printed sub-total exactly, and why Kuwaiti dinar shows three decimals while Japanese yen would show none.
ExportingPro
The client-ready BOQ
- Press Export BOQ
Every section opens and your browser's print dialog appears. Your collapse state is restored afterwards.
- Choose Save as PDF
Chrome and Edge: Destination → Save as PDF. Safari: the PDF dropdown → Save as PDF. Firefox: Print to File.
- Check the first page
Confirm the letterhead is your firm name and the header carries the right client, location and date.
The printed document differs from the screen in ways that matter:
| Appears only in print | Removed in print |
|---|---|
| Your firm name as letterhead | All row tools and reorder arrows |
| Item references — 1.01, 1.02, 2.01 | The Free/Pro badge |
| Full wrapped item descriptions | Empty sections |
| Provisional Sum — / Prime Cost Sum — prefixes | Rate-origin underlines |
| The basis of estimate block | The "0.00" placeholder in unpriced rate cells |
The spreadsheet
Export CSV downloads the bill for Excel, Google Sheets or LibreOffice, with these columns:
| Column | Contents |
|---|---|
| Ref | Item reference — 1.01, 1.02 |
| Item Description | Full text, with any sum prefix |
| Unit | Unit of measurement |
| Quantity | Plain number |
| Rate | At the currency's own precision |
| Amount | Quantity × rate |
| Rate source | Rate library (priced 2025-03-14), AI estimate — unverified, Built up or Entered |
Above the table sits a metadata block — project, client, location, date, currency, method of measurement. Below it are the section sub-totals, the full bill summary and your basis of estimate.
It tells a checker exactly which rates are yours, which came from your library and when they were priced, and which are still an AI guess nobody has verified. If you send one file to a colleague for review, send this one.
The file is written as UTF-8 with a byte-order mark, so m², ₦,
accented and Arabic descriptions all open correctly in Excel. Descriptions beginning
with =, +, - or @ are neutralised
so a spreadsheet cannot execute them.
Backups & data safety
Read this section. Everything lives on your device, which is a feature — and it means a backup file is the only copy nobody else can delete for you.
On Windows, Mac or Linux:
- Uninstalling BillMate without backing up first.
- A fresh install under a different user account on the same computer.
On a phone or tablet:
- Clearing your browser's cookies and site data.
- Private or incognito browsing — everything is discarded when you close the window.
- Safari clears storage for sites you have not opened in about a week.
Making a backup
⋮ → Backup all data downloads a single JSON file named for today's date. It contains every project — sections, items, dimension sheets, build-ups — and your whole rate library. Keep it in your cloud drive.
Restoring
⋮ → Restore from backup, then pick the file. It asks first, because restoring replaces your current projects. Your rate library is treated differently: rates are merged, so restoring a colleague's backup adds their rates to yours instead of wiping them.
Moving to a new device
- Back up on the old device
- Get the backup file onto the new one
Email it to yourself, or put it in your cloud drive — it's the one file you need to carry over.
- Install BillMate on the new device (or open it in the browser on a phone
or tablet), then restore
Your licence key activates fresh there too — see Free vs Pro for how many devices your plan covers.
The backup reminder
Once a bill has real work in it, a quiet banner appears if you have never backed up or your last backup is more than a fortnight old. It is dismissible and it is not an error — it is a countdown you can see while everything is still fine. The menu also shows how long ago you last backed up, and how much space BillMate is using on the device.
Back up at the end of every working session, and always before restoring anything or clearing your rate library. It takes one click and one second.
Languages
Tap the globe in the top bar, or ⋮ → Language. Available: English, العربية (Arabic), Français, Español, हिन्दी (Hindi) and தமிழ் (Tamil). Arabic switches the entire layout right-to-left.
By default, professional terms of art — BOQ, Preliminaries, Contingency, Taking-off, Rate build-up, unit symbols, VAT and GST, and the names of the methods of measurement — stay in English, because most surveyors read those as fixed terminology whatever language they work in. Turn on Translate technical terms in settings if you would rather have them localised.
Numbers, dates and currency always follow the project's own locale, so amounts render correctly no matter which interface language you are reading.
Free vs Pro
| Feature | Free | Pro |
|---|---|---|
| Projects | 2 | Unlimited |
| Sections, items, reordering | Yes | Yes |
| Taking-off / dimension sheets | Yes | Yes |
| Rate build-ups | Yes | Yes |
| Provisional & PC sums | Yes | Yes |
| Rate library — import, apply, capture, uplift | Yes | Yes |
| Backup & restore | Yes | Yes |
| Export BOQ (PDF) | — | Yes |
| Export CSV | — | Yes |
| AI item generation | — | Yes |
| AI full BOQ generation | — | Yes |
| AI rate build-up suggestions | — | Yes |
Unlocking
- Buy a licence
Open ⋮ → Unlock Pro and press Buy a licence. Gumroad emails you a licence key — a string like
XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX. - Paste it in and verify
Paste the key into Gumroad licence key and press Verify & unlock. This one step needs an internet connection — BillMate checks the key against Gumroad the first time it sees it on this device. Once verified, Pro keeps working offline exactly like the rest of the app.
An individual licence activates on one device. The Team pack is $199 for 5 seats on one shared licence key — everyone on the team enters the same key, and BillMate tracks how many of the 5 have already used it. Reaching the limit shows exactly how many of how many are taken, so you know before buying a second pack whether you actually need one.
"Device" means one install of BillMate — one computer for the desktop app, or one browser for the mobile version, the same way every other setting in BillMate is stored locally to wherever it's running. Your laptop and your site tablet count as two; a second browser opened on the same tablet would count as a third.
There is no self-serve way to free up a device from inside the app — a lost laptop or a replaced tablet still counts as an activated seat until it is cleared on the seller's side. If you've replaced a device or need a seat moved, email support (see the foot of this guide) with your licence key.
Once a device has verified successfully, Pro keeps working for 30 days with no connection at all — activation needs the internet, ongoing use does not. BillMate also quietly re-checks every few days whenever it does have a connection, so a refunded or reassigned licence doesn't stay unlocked indefinitely on a device that's simply never offline for long.
Troubleshooting
| What you see | Why | Fix |
|---|---|---|
| My projects have disappeared | You're on a different device, a different browser (on mobile), or under a different user account than the one you worked in before. | Switch back to where you worked before. If that's genuinely gone, restore your most recent backup on this one. |
| "Your work is not being saved" | Private browsing, or the device's storage for BillMate is full. | Back up immediately. Leave private browsing, or delete old projects to free space. |
| An unpriced item shows an amber rate cell | It has a quantity but no rate. | Working as intended. The section badge counts them so none can hide. |
| My description looks cut off | The cell is one line on screen. | Nothing to fix — the printed and exported bill carries the full wrapped text. |
| AI rates are wildly wrong | The model is guessing against stale, non-local training data. | Import your own schedule and use My rate library first, or generate quantities only. |
| "The AI model is no longer available" | Groq retired it. | Enter a current model name in the Groq API key dialog. |
| An imported rate never matches my items | The unit or currency differs, or the dimensions in the description differ. | Check the unit and currency in the library list. Numbers must agree exactly. |
| Import skipped rows | Those rows had no description or no rate — trade headings and spacers. | Normal. The count is shown so nothing vanishes silently. |
| Excel shows ð or ¤ instead of m² or ₦ | The file was opened through an import wizard with the wrong encoding. | Open the CSV directly, or choose UTF-8 in the import dialog. |
| Export buttons prompt to unlock | Exports are a Pro feature. | Enter your Gumroad licence key, or use backup to move data out. |
| "Couldn't reach the licence server" | Activating a licence key needs an internet connection the first time on each device. | Connect to the internet and try again. Once verified, the device works offline for 30 days. |
| "This licence's device limit has been reached" | The key is already activated on as many devices as it has seats. | Use a device that's already activated, or email support to move a seat. |
Quick reference
Limits and defaults
| Free plan projects | 2 |
| Default preliminaries / contingency | 3% / 5% |
| Default overhead / profit in a build-up | 10% / 15% |
| Rate considered stale after | 12 months |
| Backup reminder after | 14 days |
| Undo window on a deletion | 8 seconds |
| Rate import file size limit | 8 MB |
| Currencies | USD EUR GBP AUD CAD INR AED SAR SGD ZAR KES GHS NGN KWD |
Everyday flows
| Price a bill from your own rates | ⋮ → Rate library → Apply to this bill |
| Save the rates you just keyed | ⋮ → Rate library → Capture from this bill |
| Bring last year's schedule up to date | ⋮ → Rate library → Uplift rates |
| Issue the bill | Export BOQ → Save as PDF |
| Protect your work | ⋮ → Backup all data |
Good practice
- Set your firm name and a specific locality before your first export.
- Import your own rate schedule once — it pays for itself on the first job.
- Capture rates from every bill you price. The library compounds.
- Uplift or re-check your library annually so nothing quietly goes stale.
- Measure with the dimension sheet rather than typing quantities. It is the audit trail.
- Never issue a bill with amber rates still on it.
- Back up at the end of every session.