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.
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. |
- 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).
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 |