4fleet's finance side turns confirmed bookings into invoices, sends them with an optional pay link, tracks payments and refunds, and chases overdue invoices automatically. This article covers the parts you use day to day.
Invoice numbering
Every invoice gets a sequential number, unique within your company. The format is configurable in your document-numbering settings - you set a prefix and a number format so invoices read the way your accountant expects (for example, a prefix followed by year, month, and a zero-padded sequence). Because numbering is per-company, imported numbers from a previous system can coexist without clashing. There is also a sequence-gap audit you can run for compliance, so you can prove your invoice numbers have no missing entries.
Creating an invoice
You can create an invoice manually from client details and line items, with per-item or invoice-level tax, a currency, payment terms, and an optional link to a booking or client. If an invoice is tied to a booking, 4fleet checks that the invoice total matches the booking price and flags a mismatch before you save.
Auto-invoicing
If you turn on auto-invoicing (by setting how many days before pickup to generate), 4fleet automatically creates an invoice for each confirmed booking whose pickup falls inside that window, skipping any booking that already has one. The status of the generated invoice follows your setting (draft by default), so you can review before sending. This runs on a schedule in the background.
Sending an invoice and taking payment
Sending an invoice emails the PDF to your client. If Stripe invoice payments are enabled, 4fleet mints a Stripe Payment Link and embeds a "Pay Now" button in the email, then flips the invoice from draft to sent. You can also create standalone payment links tied to an invoice or booking, delivered by email, that take the customer to a public pay page backed by Stripe Checkout.
When a payment comes in you can record it against the invoice; 4fleet increments the paid amount atomically, marks the invoice paid once fully covered, and prevents overpayment.
Automatic reminders (dunning)
Turn on invoice reminders and 4fleet chases unpaid invoices for you. It sends a before-due reminder and up to three overdue reminders per invoice, on the day offsets you configure. Paid, voided, and no-email invoices are skipped automatically. You can also send a one-off manual reminder for a single invoice at any time.
Credit notes, refunds, and voiding
- Credit notes reduce an invoice's total and recompute its status (cancelled if fully credited, paid if now covered), with an audit note.
- Refunds for Stripe-paid invoices are executed for real - the money moves via Stripe, and the invoice balance, booking payment status, and ledger update together and idempotently. Non-Stripe refunds are recorded through the refund-request workflow.
- Voiding preserves the audit trail. Draft invoices can be hard-deleted; anything sent, paid, or overdue must be voided with a reason rather than deleted.
Reports and exports
The Accountancy area gives you an Accounts Receivable aging report, per-report financial statements (P&L, cash flow, tax, client breakdown, vehicle performance, margin, and more, all timezone-correct to your calendar), and CSV export of both invoices and reports for your external accounting tools. An optional AI analysis produces a plain-English read of the period's aggregated figures, grounded strictly in your real numbers.
Bank reconciliation
Upload a bank statement (CSV, MT940, or PDF) and 4fleet parses it, stores the transactions, and auto-matches high-confidence rows against your unpaid invoices, with manual match and suggested matches for the rest. Rows parsed by AI are flagged for your review before they are trusted.
Operating costs and driver expenses
Track your operating costs by category (fuel, tolls, insurance, wages, and more), with receipts, VAT, and a tax-deductible flag - these feed your P&L and tax reports. Separately, drivers can submit their own expenses with receipts from the mobile portal, and you approve, pay, or reject them from a single queue.
