Skip to main content

Proposals and invoices

How prices are set, how a proposal is built and issued to a client, and how a project is invoiced and paid. It is written for project managers and billing staff. Proposals are prepared on a project's Work stage and invoices on its Money stage; see running a project for the stages.

Before you start​

  • Rate cards must exist for any service other than abatement. A service with no rate card is not priced: on a proposal it shows "No rate card for X — it won't be priced". Generate invoice refuses until every service with recorded work is priced, names the missing ones, and links to Rate cards. It also refuses when nothing is billable yet. Rate cards are added and edited at /rate-cards.
  • Abatement is priced from the price list on the same page. If none is loaded, an abatement invoice is billed at the flat Abatement rate card per component, if one exists.
  • Decide first. A proposal covers the services that follow from the project's decided orders. With undecided orders the card says "Estimate only" and names them, with a Decide now link.
  • Permissions: viewing Money, proposals and rate cards needs the view-financials permission; editing rate cards needs manage-rate-cards, proposals need manage-proposals and invoices and vendor payments need manage-invoices (team and roles).

A client's own prices​

Each client can have its own rate card: open the client, then the Pricing tab. A service shows the firm's default price until you Set this client's price; the client's price then overrides the default on that client's proposals and invoices (the project's client is the one its building is assigned to). Other clients are unaffected. Abatement is priced from the price list, which is the firm's and not per client.

Set prices (/rate-cards)​

Open Rate cards from search (Search at the top of the sidebar, or Ctrl+K / ⌘K); it has no sidebar entry. The page has two sections: the firm's default prices, and the abatement price list.

Rate cards hold one price per service: XRF Inspection, Paint Chip Sampling and Dust Wipe Sampling. A service with no card yet is listed with Add rate card. A card needs a base fee, a unit price, or both. Choose Edit on a card to change its Base fee (a flat amount, or none), its Unit price and its Unit label (for example "reading" or "sample"). A card displays as a flat fee, a per-unit price, or a base fee plus a per-unit price.

Abatement price list holds a flat price for each combination of component, substrate and method (for example a wood door replaced, or a metal door stripped and repainted). With no list on file, Load standard abatement price list fills in a standard set. Add price adds a row: type its component, substrate and method, or open the arrow on each box to pick from the standard ones, then fill in the description, an optional note and the price. Edit on a row changes any of those. A standard name, typed or picked, is matched to a job's components when a proposal or invoice is built. A component name of your own is matched by that name: a proposal picks it up from HPD's wording when the order names it, it can be chosen on a proposal line or added on a job's Scope tab, and it is priced from its row. Each component, substrate and method combination can appear once. To delete prices, choose Remove, tick the rows (or the header box for all of them), then press the same button, now Delete N selected, and confirm. Cancel leaves without deleting.

Changes apply the next time a proposal or invoice is built. Prices are read when needed and never copied onto old rows, except that a saved proposal keeps the prices it was saved with.

Build a proposal​

Open the project, then Work → Proposal.

One proposal per firm. Inspection work (XRF, dust wipe, paint chip) and abatement come from two separate firms, so a project that involves both gets two proposal cards, Proposal — Inspection and sampling and Proposal — Abatement, each saved, generated and signed on its own with only its own services' lines. The PDF is on the letterhead of the firm doing that work: the project's active collaborator in that role (field execution or clearance sampling for inspection; abatement for abatement), and the project's owner when it does the work itself. Prices stay the owner's. A proposal saved before the split keeps its single card.

  1. The Covers pills list one service per decided track, each with its subtotal. Select a pill to price it. Abatement also appears once the linked violations cite components, even before its order is decided.
  2. Non-abatement services show their lines from the rate card. Type a different price on a line to override it for this proposal.
  3. Abatement shows the violated components taken from the linked HPD orders' wording, each with a tick, a Substrate and a Method. Tick the ones to include. Type the substrate and method, or open the arrow on each box to pick from what the price list offers for that component. A component the wording does not name can be typed or picked too. Add component adds a row for work no violation cites: say where it is, then fill in the component, substrate and method. A row that matches the price list takes its price; any other row needs a price typed in. When the proposal is saved, that combination and its price are added to the abatement price list on Rate cards, so the next proposal finds it. Save to Rate cards on the row is ticked by default; untick it for a one-off price. Only people who can edit rate cards see the tick, and only their saves add prices. You can override any price here too. Components ticked off the violations replace the job's scoped components on the proposal (they are the same surfaces); rows added by hand are extra work and go alongside the scoped components, which keep the prices set on the job's Scope tab. Abatement is priced per surface, so until a row is ticked and priced (or the job has scoped components) the Abatement card totals $0 and says Abatement isn't priced yet. That is expected: unlike dust wipe or XRF, abatement has no flat fee unless the firm adds an Abatement rate card.
  4. Save proposal makes the lines and prices final. It needs every included row complete and priced, every price filled in and at least one line. The proposal is valid for 30 days from saving.
  5. Generate PDF stores the proposal as a draft document of type PROPOSAL. The card then shows Version N · date with Open (read or print it) and Download (saves <address> - Service Proposal vN.pdf). Each service prints under its own name with its own subtotal, then one total; notes do not print.
  6. Send it to the client to sign (below). If they sign on paper instead, enter their name under Signed on paper? and choose Mark signed. Signing is a record; nothing else in the app requires it.

Edit reopens the builder with the saved lines put back, and Save changes replaces them. If prices or components changed since saving, a warning says how many saved lines no longer match and will be left out. After the PDF exists you can still edit until the client signs: once the saved proposal differs from its PDF, the card says the PDF is out of date, Regenerate becomes the main button, and Open, Download and Mark signed wait for it. Regenerate files a new version that replaces the previous one. A signed proposal can no longer be edited or regenerated.

Proposals are financial documents: they are never shared with collaborating companies, and they reach the client only by being sent to sign.

Have the client sign​

Under the proposal's PDF, Send to client to sign opens a list of the client's portal logins. Tick who should get it (everyone who has set a password is ticked; someone invited who hasn't set one yet is offered unticked) and choose Send to sign. Each person gets an email with a Review and sign button and a notification in their portal, and the proposal appears in their portal on Home and on the project's page. The workflow's Sent to client step is then done.

Any of the client's portal logins can sign. They sign in, read the PDF, type their full name, tick that they agree and are authorized to sign for the client, and choose Sign. Complied then:

  • files the signed copy as the proposal's next version: the same PDF with an electronic signature certificate page at the end (name, email, the client signed for, time, IP address, and a SHA-256 fingerprint of the exact pages they read);
  • marks the proposal accepted, so the workflow's Client accepted step is done and the proposal can no longer be edited or regenerated;
  • notifies whoever sent it and whoever generated the PDF.

The card then reads "E-signed by …". While it waits, the card says who it went to and when; Send again sends it to the people you tick (and replaces the earlier request), and Withdraw takes it back out of the client's portal. Regenerating the PDF, voiding it or marking it signed on paper ends the request on its own, so the client is never asked to sign an old version: send the new one.

Sending needs the permission to manage proposals and a building assigned to a client. A client with no portal logins can't be sent anything: invite someone from the client's Portal access tab first. Send to client to sign waits while the PDF is out of date.

Invoice a project​

Open the project, then Money → Invoices.

  1. Generate invoice appears when the project has no invoice yet. It allocates the next invoice number, builds the lines from the work actually recorded on the project (XRF readings, dust-wipe samples, paint-chip samples, abatement components), prices them from the rate cards and the abatement price list, and stores the PDF as an invoice document. A project has one invoice this way. While the invoice is a draft and a price or quantity has changed since it was made, Regenerate appears beside Mark sent: it re-prices the draft under the same number and files the PDF as its next version. A sent or paid invoice can no longer be regenerated.
  2. Mark sent moves a draft invoice to sent. From then on the client sees it on the portal's Invoices page.
  3. Mark paid closes it.

An abatement invoice line shows the component, substrate and method, and the HPD violation number(s) it cures; the job's materials are internal and never appear on it. The invoice is built from captured work, not from the saved proposal, so its lines can differ from the proposal. A service with no recorded work contributes no line. If a service with recorded work has no rate card, or nothing is billable at all, Generate invoice refuses and says why. No invoice number is used up.

Vendor payments​

Money → Vendor payments tracks costs you pay out, such as the lab. Enter a Vendor name and an Amount and choose Add; choose Mark paid when it is settled. Vendor payments are never shared with the client or with collaborators. The Money stage's Numbers show what is invoiced, collected and outstanding, and the vendor cost, paid and pending.

The Billing workspace (/billing)​

Billing on the rail is the firm-wide view of the same invoices, for the bookkeeper. It opens for anyone with view-financials; every button that changes something needs manage-invoices. Four numbers sit at the top: Open balance (sent invoices not yet paid in full), Overdue (open invoices past their due date), Collected in the current month, and Ready to bill (drafts plus accepted proposals with no invoice). Each opens its section; tap it again to go back to the overview. The sections:

  • Overview: the open balance split by age (current, 1–30, 31–60, 61–90, over 90 days past due; tap a bucket to list those invoices), the clients owing the most, the longest overdue, what was paid recently, and what is waiting to go out.
  • Invoices: every invoice, grouped by client and then building (change the grouping with the Group chips, or choose No grouping). Search, and Filter by status, overdue only, client, the date it was issued, and sort. ⋯ → Export these as CSV downloads exactly what is showing.
  • Open balances: one row per client with what it owes, how much is overdue, its oldest open due date and the aging split. Exports as CSV.
  • Collections: overdue invoices, longest overdue first, with the client's billing contact (its main contact when it has none). Email reminder opens your own mail app with a pre-written past-due note; Log follow-up records what happened, how, with whom and when to chase next. The last follow-up shows on the invoice, and the log can't be edited or deleted.
  • Payments: money received this month, last month, the last 90 days, this year or all time. A recorded payment can be corrected or deleted from its ⋯. Exports as CSV.
  • Ready to bill: draft invoices (Mark sent) and accepted proposals whose project has no invoice yet. Create invoice (and New invoice at the top) open the project, because an invoice is generated from the work recorded there.
  • ⋯ → Payables: every vendor payment across projects, unpaid first, with Mark paid.
  • ⋯ → Reports · Money by client, building, apartment (Splits): everything billed, cut by client, building, apartment, service or month, each folding down to the invoice lines with what is paid, open and overdue, plus aging by client. Drafts are left out until sent. Each view exports as CSV.

Record payment (on an open invoice in Invoices or Collections) records money received: the amount (the balance by default), the day it arrived, the method (check, ACH, card, cash, other) and a check number or reference. Part payments are fine; when the payments reach the total the invoice turns Paid by itself. Payments are recorded by hand: no card or bank processor is connected. Deleting or lowering a payment never reopens a paid invoice.

Due dates. An invoice falls due 30 days after the day it is marked sent, unless you change it: on an open invoice, the due date (with a pencil) opens Change due date, with Net 30 / 45 / 60 shortcuts. Aging, Overdue and the collections queue follow the invoice's own due date.

Under the hood​

Data flows · Permissions