Sales Invoices
Summary
Section titled “Summary”Sales invoices let you bill customers for work done. You can generate invoices from work orders or create standalone invoices. The sales invoices list shows all invoices with filters for status, type and date range. You can record payments, download PDFs, email invoices to customers, and bulk-settle multiple invoices at once.
Prerequisites
Section titled “Prerequisites”- You are signed in to Torqueflow.
- You have the
finance.sales.viewpermission to see invoices. - You have the
finance.sales.createpermission to create or edit invoices. - You have the
finance.payments.recordpermission to record payments.
Viewing the sales invoices list
Section titled “Viewing the sales invoices list”- Click Finance in the main navigation.
- Click Sales Invoices (or navigate to
/finance/sales). - The page title reads Sales Invoices with the subtitle “Invoice customers and track payment status”.
- The list shows up to 50 invoices per page with pagination controls at the bottom.
The table columns are:
| Column | Description |
|---|---|
| Invoice # | Auto-generated invoice number. A green cloud icon appears if synced to GoHighLevel. Sortable. |
| Customer | Customer first and last name. Sortable. |
| WO / Vehicle | If linked to a work order: shows WO reference code and vehicle registration. Otherwise shows a “Standalone” badge. Not sortable. |
| Date | Invoice date in dd/MM/yyyy format. Sortable. |
| Due Date | Payment due date. Shown in red if overdue. Sortable. |
| Gross | Total gross amount in GBP. Sortable. |
| Outstanding | Remaining unpaid amount. Shows a dash when fully paid. Not sortable. |
| Status | Payment status badge: Unpaid, Part Paid, Paid, or Overdue. Sortable. |
| Type | Invoice type badge: Quote (green), Direct (blue), or Hybrid (purple). Not sortable. |
| Actions | Three-dot menu with View, Record Payment, and Mark as Paid options. |
Overdue invoices are highlighted with a light red background row.
Searching and filtering
Section titled “Searching and filtering”- Use the Search invoices… box above the table to search by invoice number, customer name, or work order reference. Search is debounced at 300ms.
- Use the Status filter bar to toggle which statuses are shown. Options: Unpaid, Overdue, Part Paid, Paid. Click All to show all statuses or None to clear. Your preference is saved in your browser.
- Use the Type dropdown to filter by All, Work Order, or Standalone.
- Use the Date pickers (From and To) to filter by invoice date range.
- Click Reset to clear all filters, search, sort, and pagination.
Creating a standalone invoice
Section titled “Creating a standalone invoice”- Click the New Invoice button in the page header (top right).
- You are taken to
/finance/sales/newwith the heading New Standalone Invoice. - Select a Customer from the searchable dropdown (required).
- Set the Invoice Date using the date picker. The Due Date auto-calculates based on your organisation’s default payment terms. You can override the due date manually.
- Optionally add internal Notes.
- Add line items using one of three methods:
- From Catalogue - Search your parts catalogue by name or part number. Select a part to add it as a line.
- Labour - Pick a labour rate, set the hours, then click Add Labour.
- Ad-hoc - Click to add a blank line. Fill in the description, quantity, unit price, and VAT rate.
- Each line shows description, quantity, unit price, VAT rate, and calculated totals. You can edit or remove lines.
- The running total is shown at the bottom right.
- Click Create Invoice to save. You are redirected to the new invoice’s detail page.
Generating an invoice from a work order
Section titled “Generating an invoice from a work order”- Open a work order and click the Generate Invoice button.
- A dialog appears showing the work order details (reference, customer, vehicle).
- The invoice mode is determined automatically:
- From Approved Quotes - Lines are read-only, generated from approved quote items.
- Direct Invoice - Lines are editable, generated from work order parts and time entries.
- Quote + Direct (Hybrid) - Mix of both. Lines are editable.
- Set the Invoice Date and Due Date.
- In editable modes, you can add items via From Catalogue, Labour, or Ad-hoc buttons. You can also exclude lines using the checkbox on each row, apply discounts (percentage or fixed), and assign suppliers to parts lines.
- Click Save Draft to save your progress without generating the invoice.
- Click Generate Invoice to create and finalise the invoice.
Adding labour and technician attribution
Section titled “Adding labour and technician attribution”The Add Labour picker on the line editor is now a searchable Labour Code combobox. Pick a code:
- Hourly codes prompt for hours, then create a line at qty = hours × hourly rate.
- Fixed codes add a line at qty 1 and the configured selling price (e.g. “Van Service - £129”). No hours prompt.
Each labour line has a Technician dropdown. When you generate an invoice from a work order, Torqueflow reads the work order’s time sessions and pre-fills one labour line per technician who logged time:
- Hourly codes: each technician’s quantity is their billable time.
- Fixed codes with multiple technicians on the same WO: the price is split evenly across the techs (the first technician absorbs any 1p rounding remainder so the total matches).
- Manually added labour lines also have an optional Technician dropdown.
The technician name is internal-only - it is not shown on the customer-facing PDF. It is used by the Technician Commission report.
You can change or clear a labour line’s technician at any time, including on already-issued invoices via the Edit dialog.
Viewing invoice detail
Section titled “Viewing invoice detail”- Click any invoice row in the list (or select View from the three-dot menu).
- The detail page shows:
- Header - Invoice number, customer name, payment status badge, and action buttons.
- Invoice Details card - Customer (linked), work order reference (linked, if applicable), vehicle details with mileage, invoice date, due date (with overdue badge if applicable), and notes.
- Amounts card - Net amount, VAT, gross total, amount paid (in green), outstanding (in red if unpaid), and a payment progress bar with percentage.
- GoHighLevel Status section (if connected) - Sync status, payment link, last synced date.
- Line Items table - Columns: Description, Qty, Unit Price, VAT %, VAT amount, Total. A Discount column appears if any line has a discount. An eye toggle button shows or hides the Supplier column (hidden by default for privacy). Nominal code is shown beneath each line description if set.
- Payment History table - Date, Amount, Method, Source (Manual/Portal/Bank), Reference, Recorded By.
- Email History - List of emails sent with recipient, sender name, and timestamp.
- Metadata - Created by, creation date, last updated date.
Recording a payment
Section titled “Recording a payment”- From the invoice detail page, click the Pay button (shows the outstanding amount, e.g. “Pay £120.00”). Or from the list, use the three-dot menu and select Record Payment.
- The Record Payment dialog opens showing the outstanding balance.
- Select a Payment Method from the searchable dropdown (required). The default method is pre-selected.
- The Amount is pre-populated with the outstanding balance. Adjust if recording a partial payment.
- Set the Payment Date (defaults to today).
- Optionally enter a Reference (e.g. bank reference, card transaction ID).
- Optionally add Notes.
- Click Record Payment to save. Or click Pay Full to record the full outstanding amount in one action.
Bulk settling invoices
Section titled “Bulk settling invoices”- Click the Bulk Settle button above the table (requires payment recording permission).
- Checkboxes appear on each non-paid invoice row.
- Use the Select All checkbox in the header to select all settleable invoices on the current page, or select individual invoices.
- A badge shows the count of selected invoices.
- Click Settle Selected to open a confirmation dialog.
- Click Cancel to exit bulk mode and clear the selection.
Downloading and printing
Section titled “Downloading and printing”- From the invoice detail page, click Download PDF to save the invoice as a PDF file.
- Click Print to open the invoice PDF in a new browser tab for printing.
- Click Email to send the invoice to the customer’s email address. The button is disabled if the customer has no email address on file.
If your organisation has the dual-copy PDF toggle enabled in Settings → Finance → Invoice Settings, staff downloads and prints produce a two-page PDF — one page badged “CUSTOMER COPY” and one badged “OFFICE COPY”. The labels are configurable. Customer-facing paths (the portal, the email button) always send a single-copy PDF regardless of the staff toggle.
Disposal fees and environmental levies
Section titled “Disposal fees and environmental levies”Disposal fees (tyre, oil, battery, refrigerant, etc.) can be configured in Settings → Finance → Disposal Fees. Once configured:
- Auto-applied fees attach to the invoice automatically when you generate it from a work order, based on the part categories on the work order.
- On standalone invoices, click Add disposal fee in the line editor to insert a configured fee manually.
- Lines appear after labour on the invoice and PDF, with an optional smaller customer-facing description.
See Disposal fees and environmental levies for the full setup guide.
Editing an invoice
Section titled “Editing an invoice”- From the invoice detail page, click Edit (only shown if no payments have been recorded).
- The edit dialog opens. Make your changes and save.
The callout line on a mobile job
Section titled “The callout line on a mobile job”If a job was booked as a mobile visit and callout charging is on, the callout charge is added to the invoice for you. You do not have to remember it.
- The line is added automatically, and it appears even on a job with no other lines. A wasted trip can be invoiced on its own.
- It is editable and removable before you issue the invoice, so a callout you decide to waive can be taken off.
- If the customer already paid a deposit that was the callout, it is credited as normal. There is no double charge.
- The amount billed is the figure for the van that actually did the job, even if a different van’s higher figure was quoted at booking.
The nominal code the callout line posts to is set in Finance settings.
Deposits held against a job
Section titled “Deposits held against a job”The invoice list has a Deposit held filter and an unreconciled-deposits panel, so money taken at booking does not go missing between the booking and the books.
A held deposit can be in one of four states, and they are four different tax positions. None of them is settled inside Torqueflow, so whoever does your books needs to look at them.
- Credited. The deposit came off the final bill. Nothing to do.
- Carried forward. The job moved, and the deposit went with it.
- Forfeited. The customer cancelled outside your refundable window and you kept the money.
- In excess of the bill. The deposit was more than the finished job came to.
That last one matters most on mobile work, because a callout deposit can easily exceed a job that turned out to be nothing. There is no automatic refund. A notice appears on the invoice telling you which case it is. You settle it manually, by refund or credit note, and the credit-note route is not always available depending on how the invoice was closed.
Torqueflow does not have a bookkeeper role. The five roles are owner, manager, service advisor, technician and kiosk, and the bookkeeper email in settings is only a recipient for the accounting digest. So these panels are reached by an owner or manager, on the bookkeeper’s behalf.
Collecting payment online
Section titled “Collecting payment online”If you have connected Stripe in Settings → Billing → Accept Payments, two extra buttons appear on the invoice detail page: Pay Now (open Stripe Checkout in front of the customer) and Send Payment Link (email or SMS). Statements have equivalent Pay Total and Send Statement Payment Link buttons. See Online payments with Stripe for the full flow.
Voiding or crediting an invoice
Section titled “Voiding or crediting an invoice”- No payments recorded yet and you want to cancel? See Voiding an invoice. The Void action is in the overflow (⋮) menu on the invoice detail page. Voided invoices stay on file but are excluded from totals.
- Customer has paid (in part or full) and you owe money back? See Credit notes and refunds. Click Issue Credit Note to credit specific lines or quantities and optionally trigger a Stripe refund.
Expected Outcome
Section titled “Expected Outcome”- Sales invoices are listed with correct status badges, amounts, and overdue highlighting.
- New invoices appear in the list immediately after creation.
- Payments update the status from Unpaid to Part Paid or Paid. The outstanding amount decreases accordingly.
- PDFs download with the invoice number as the filename.
- Emailed invoices appear in the Email History section.
Troubleshooting
Section titled “Troubleshooting”| Problem | Cause | Fix |
|---|---|---|
| ”New Invoice” button is missing | You do not have the finance.sales.create permission. | Ask an admin to assign the correct role. |
| ”Record Payment” and “Mark as Paid” options are missing | You do not have the finance.payments.record permission. | Ask an admin to assign the correct role. |
| Payment amount error “cannot exceed outstanding balance” | The entered amount is higher than what remains unpaid. | Reduce the amount to match or be less than the outstanding balance. |
| Edit button not shown on invoice detail | The invoice already has payments recorded. | Invoices with payments cannot be edited to prevent accounting discrepancies. |
| Email button is disabled | The customer has no email address. | Add an email address to the customer record first. |
| Pop-up blocked when printing | Browser blocked the new tab. | Allow pop-ups for the Torqueflow site in your browser settings. |
| ”Failed to load invoices” error | Server-side data fetch failed. | Refresh the page. If the problem persists, check your internet connection or contact support. |
| Duplicate invoice warning when creating | The invoice number already exists. | This is a non-blocking warning. You can still save, but check whether the invoice has already been entered. |
| There is a callout line on this invoice and I did not add it | The job was booked as a mobile visit and callout charging is on. | It is correct. Remove the line before issuing if you are waiving it. |
| The invoice says a deposit is held | Money was taken at booking and has not been reconciled against the final bill. | Open the notice on the invoice. It says which of the four states applies and what is left to do. |
| A deposit was bigger than the job | Common on mobile work when the callout deposit exceeds a small job. | Nothing happens automatically. Refund it or raise a credit note. |
- Invoice numbers are auto-generated by Torqueflow.
- Once an invoice is fully paid, customer-facing copy automatically relabels it as a Receipt: the PDF title becomes “RECEIPT”, the customer portal shows a “Receipt” badge, and the email subject reads “Receipt {number} from {your org}”. Staff lists keep saying “Invoice” because they show a mix of paid and unpaid in one table. The PDF filename does not change.
- The Overdue status is calculated automatically. If an unpaid or part-paid invoice’s due date has passed, it shows as Overdue.
- Status filter preferences are saved in your browser’s local storage and persist across sessions.
- The default due date is calculated from your organisation’s payment terms setting (found in Settings > Finance).
- How VAT is rounded. Torqueflow works out the VAT for each rate band on the net total for that band, rounds it to the penny, then sums the bands to the invoice total. So the VAT you see always equals the rate applied to the net, and net plus VAT equals gross to the penny. When a band has several lines, any rounding penny is applied to the largest line so the per-line VAT still adds up exactly to the header. Quotes and credit notes use the same method, so a quote and the invoice made from it show the same VAT, and a full credit note is the exact opposite of the invoice it reverses.
Permissions
Section titled “Permissions”| Action | Required capability |
|---|---|
| View sales invoices | finance.sales.view |
| Create or edit invoices | finance.sales.create |
| Record payments | finance.payments.record |