Create and send an invoice
Generate or create an invoice, verify its immutable commercial details, send it, and record or refund payment correctly.
- For Operators
- All plans
- 10 min
- Checked
Goal
Issue one correct invoice, deliver it to the billed client, and leave a reliable payment trail.
Prerequisites
- The booking price and billing party are final.
- The client record contains the legal billing name, billing email, address, and tax identity required for the invoice.
- Invoice numbering, tax, payment terms, and currency are configured.
- A tested mailbox is connected. Stripe is required only for card payment links and real Stripe refunds.
Steps
- For a booking invoice, open the booking and select Generate Invoice. For a standalone invoice, open Accounting > Invoices and select Create Invoice.
- Verify the billed client, invoice number, issue date, due date, currency, tax, line descriptions, quantities, and totals.
- For multi-journey work, confirm that each journey is represented correctly and that the invoice total matches the booking's reviewed commercial amount.
- Save the invoice as a draft and open its PDF preview.
- Correct any draft error before sending. You can delete a draft. Sent, paid, and overdue invoices are not ordinary editable drafts.
- Select Send Invoice. If invoice payments are enabled, review the payment link and Pay Now action before confirming.
- Confirm that the invoice is marked sent and that the message appears in the sending mailbox.
- When money arrives outside the payment link, open the invoice and select Record Payment. Enter the received amount, date, method, currency, and reference.
- Use Issue Credit Note to reduce or correct the accounting value of an issued invoice. Use Refund only for an eligible Stripe-backed payment when money must move back through Stripe.
- Use Void invoice when an issued invoice must be retracted completely. Enter a reason. The voided invoice remains in the audit trail and cannot be sent again.
- After voiding a booking invoice, return to the booking and generate its replacement. The replacement receives a new invoice number and today's issue date.
- For other payment methods, use the refund-request workflow to record approval and completion, then execute the external bank or payment action separately where required.
Expected result
The customer receives the correct invoice, the invoice status reflects the real amount received, and every credit, refund, or void remains visible in the audit trail.
Troubleshooting
- The invoice has the wrong client: correct the billing party before sending. Do not edit an issued invoice as if it were still a draft.
- The issue date is wrong on an issued invoice: the issue date cannot be edited. Void the invoice with a reason, then generate a replacement from the booking.
- A voided invoice still appears: this is expected. It stays visible for the audit trail, but it has no Send action and cannot be delivered again.
- The total does not match the booking: review journey fares, manual adjustments, tax, credits, and the booking total before saving.
- Send Invoice fails: check the recipient email, connected mailbox, and payment-link configuration.
- The invoice is paid but 4fleet shows outstanding: record or reconcile the payment against that invoice rather than changing the status alone.
- A refund option is unavailable: confirm that a completed refundable payment exists and that your role has payment-edit permission.
- A bank import matched the wrong invoice: review imported transactions after every upload. Auto-match uses amount, currency, and date rules; unmatch an incorrect row and match it manually.
- An imported row is marked for review: inspect its parsed date, amount, currency, and description before relying on the reconciliation result.
Guided check: Invoice payment
4fleet can run an automated Invoice payment check on one invoice. The check only reads what is already stored, changes nothing, and returns one line per test. A fail line is what is blocking you, a warning works but is degraded, skipped means the test did not apply here, and unknown means the record could not be read, so that line proves nothing either way. What each line means:
- Invoice exists (
invoice_exists): fails when no invoice with that reference belongs to your company. - Not voided (
not_voided): warns when the invoice is voided or canceled. It cannot be paid; issue a replacement. - Balance matches status (
balance_matches_status): fails when the invoice is marked paid while an amount is still outstanding, and warns when it is fully settled but the status has not caught up. - Allocations reconcile (
allocations_reconcile): warns when recorded payments and allocations disagree, and states the amount. Reports built from allocations then under-count or over-count this invoice. - Sent to client (
sent_to_client): warns when a non-draft invoice was never sent, so the client has had no notification and no payment link. A draft passes, because it is not expected to be sent. - Payment link available (
payment_link_available): fails when online invoice payments are switched off for the company, or when they are on but this invoice carries no link. A client who settles on account passes by design, and a settled invoice is skipped. - Payment link amount is current (
payment_link_amount_is_current): compares the live Stripe link with the invoice's current outstanding amount and currency. Re-issue the link and re-send the invoice if it charges an old amount, uses the wrong currency, or has been deactivated. An unknown result means Stripe could not be read, so the amount is not proven. - Not overdue (
not_overdue): warns when an outstanding amount is past its due date, and states the amount and the date.
Still stuck? Contact the 4fleet team with the page and what you expected to happen.