The job is done. The invoice is built. Xero is already updated.
Why haulage invoicing takes days instead of hours
In most haulage operations, invoicing happens at the end of the week — or worse, whenever admin can get around to it. The job happened Monday. The driver had the docket. The docket arrived on Thursday. Admin cross-referenced it against the job register — which was a spreadsheet someone maintained separately — found the rate for that client in a rate card document, built the invoice in accounting software, attached the PDF, and emailed it. The client received it Friday. Payment terms are 30 days. You will be paid five weeks after the truck ran.
The delay is not the fault of the admin team. The delay is structural: the job record, the rate, and the proof of delivery exist in three separate places. Pulling them together takes time. If the docket is missing, the invoice is delayed further. If the rate card was updated last month and this job used the old rate, someone has to find the discrepancy and fix it before sending.
- Job completed Monday — invoice sent Friday at best
- Admin rebuilds the transaction from notes and spreadsheet cross-reference
- Paper docket in the driver cab — arrives late, illegible, or not at all
- Rate looked up manually — risk of applying outdated rate version
- Invoice typed into accounting software — re-entry of data already captured at dispatch
- Client emailed a PDF — no self-service visibility for the client
Job runs. Paper docket left in the cab.
Driver brings the docket back to the office.
Admin finds rate card in spreadsheet, cross-references job register, re-enters into accounting software.
Invoice emailed to client as a PDF.
Five-day lag from job completion to invoice delivery — with two points where the process commonly breaks: missing docket, wrong rate version.
Job created with rate. Driver completes. POD attached. Invoice generated. Xero updated.
Every step in the HaulageOps billing workflow connects to the same job record. Nothing is reconstructed. Nothing is re-entered. The invoice is a function of the job — and because the job is already structured, generating it takes seconds rather than an afternoon.
Job created with rate
When a job is created in the dispatch board, the client's rate card is selected at that point. Per-tonne, per-load, hourly, or fixed-fee rates are all configured in the rate management module with effective dating. The correct rate is applied to the job at creation — not reconstructed from a spreadsheet three days later.
Driver completes the job
The driver marks the job as delivered in the driver app. This triggers the status update on the dispatch board and in the client portal. The delivery timestamp is recorded automatically — it is not self-reported to admin, it is captured in the system at the moment of action.
POD attached at the site
At the delivery point, the driver captures a photograph of the delivery, collects the customer signature on screen, and uploads any required document. All three are stored in Azure Blob Storage and immediately attached to the job record. The POD is in the system before the truck leaves the site — not in the driver's cab on the way back to the depot.
Invoice generated from job
With the job complete and POD attached, the invoice is generated directly from the job record. The client, the rate, the delivery date, and the POD are all already present — the invoice requires no manual assembly. Invoices move through a lifecycle: Draft, Sent, Paid, Overdue, or Voided. Each transition is logged.
Xero sync — automatically
The invoice syncs to Xero via OAuth2. The sync runs on a 6-hourly cron schedule and also responds to real-time payment webhooks from Xero. When a client pays the invoice in Xero, the payment status updates in HaulageOps automatically. No manual reconciliation between the two systems.
Client sees the invoice in their portal
The client does not receive a PDF attachment. They log into the client portal and see their invoices, the underlying job records, and the POD — all connected. If they have a question about a charge, they can see exactly what was delivered, when, and the signed proof. Disputes start with evidence already on the table.
Invoice delay is a cash flow problem, not just an admin inconvenience
In haulage, the cost of running a truck is immediate. Fuel, driver wages, maintenance, and subcontractor payments all occur at the time of the job. The revenue from that same job is delayed by however long it takes to create and send an invoice, plus the client's payment terms, plus however long that client takes to actually pay.
If your job-to-invoice time is five days, and payment terms are 30 days, and your client pays at day 35 on average, you are funding five weeks of operations before you receive the money for work already completed. At scale — 50 trucks, 200+ jobs per week — that timing gap translates directly into working capital pressure.
Reducing job-to-invoice time does not speed up payment terms, but it starts the clock earlier. If the invoice goes out the same day the job completes rather than four days later, payment arrives four days earlier. Across a large operation running hundreds of jobs per week, that is meaningful.
HaulageOps removes the structural delay. The invoice is not waiting for the docket to arrive at the office. The rate does not need to be looked up. The job record already has everything the invoice needs — the invoice generation is the last step in a connected workflow, not the start of a separate one.
Job dispatched with rate attached
Job completed — driver captures digital POD at site
Invoice generated from completed job record
Invoice syncs to Xero
Client sees invoice in their portal
The entire chain completes within the same day — compared to the traditional five-day process shown above.
What changes at each step of the billing workflow
| Step | Old Process | HaulageOps |
|---|---|---|
| Rate applied to job | Looked up in a separate spreadsheet after the job, at invoice time. | Applied from client rate card at job creation. Locked to the job record. |
| Proof of delivery | Paper docket in driver's cab. Collected when driver returns. Sometimes lost or illegible. | Digital capture in driver app at the delivery site. Stored in Azure, attached to job immediately. |
| Job completion recorded | Driver tells someone. Admin notes it. Spreadsheet updated if remembered. | Driver marks delivered in app. Timestamp recorded automatically. Dispatch board updates. |
| Invoice created | Admin rebuilds from notes, cross-references rate card, types into accounting software. | Generated directly from completed job record. No manual assembly. Seconds, not hours. |
| Accounting system updated | Manual entry into Xero or MYOB. Separate from the haulage records. | Xero sync via OAuth2 — automatic. 6-hourly cron plus real-time payment webhooks. |
| Client receives invoice | PDF attached to an email. Client may not read it for days. | Invoice visible in client portal immediately. No email attachment required. |
| Payment tracking | Monitor Xero manually. Chase overdue invoices separately. | Payment webhooks from Xero update invoice status in HaulageOps automatically. |
| Invoice dispute | Locate the paper docket, find the WhatsApp thread, hope the rate spreadsheet was current. | POD, rate, delivery timestamp, and job record all connected. Dispute starts with complete evidence. |
One integration that runs both ways — invoices out, payments back
How the Xero integration works
HaulageOps connects to Xero via OAuth2 — authorised once through the Xero login flow, no API keys to manage manually. When an invoice is generated in HaulageOps, it syncs to your Xero organisation automatically. The sync runs on a 6-hourly cron schedule for routine updates and responds to real-time payment webhooks when a payment is received in Xero.
- OAuth2 authorisation — secure, no manual API keys
- Invoice creation: generated in HaulageOps, pushed to Xero
- 6-hourly cron sync for routine reconciliation
- Real-time payment webhooks — Xero payment received, HaulageOps invoice status updates
- Invoice lifecycle tracked: Draft, Sent, Paid, Overdue, Voided
- No manual reconciliation between the two systems
What you do not do with HaulageOps + Xero
You do not re-enter invoice data into Xero. You do not check Xero manually to see if a client has paid and then update HaulageOps separately. You do not maintain two records of the same transaction. The integration removes the manual steps at both ends of the billing lifecycle — invoice creation and payment receipt — so the two systems stay in sync automatically.
- No copying invoice details from HaulageOps into Xero manually
- No logging into Xero to check payments then updating HaulageOps by hand
- No end-of-week reconciliation session between two systems
- No risk of invoice existing in one system but not the other
- No double-entry of client information — client records align across both systems
MYOB note: MYOB integration is available as an add-on subject to scoping. It is not part of the standard product. Contact us to discuss your accounting system requirements before assuming compatibility.
Your client sees the invoice, the POD, and the job record — without calling you
When an invoice is generated in HaulageOps, it becomes visible in the client portal immediately. The client logs in to their dedicated portal and sees their invoices alongside the job records and POD that the invoice is based on. They can view the delivery photograph, the signed delivery record, and the invoice breakdown — all in one place.
This reduces inbound queries from clients. They do not email asking for a copy of the docket. They do not call asking what a particular line item relates to. The supporting evidence is attached to the invoice — the client can see it as soon as they see the invoice.
For clients with high job volumes, the client portal also provides access to historical invoices and job-level reporting. They can review their spending by period, by job type, or by material — without your admin team generating a custom report for each request.
- Invoices visible in client portal as soon as generated — no email required
- Invoice linked to the underlying job record and POD
- Delivery photo and signed record visible alongside the charge
- Historical invoice and job history accessible to the client self-service
- Rate card visible — clients can see the agreed rates applying to their account
INV-0241
JOB-1844 · Apex Civil — Crushed rock delivery
$2,340.00
INV-0242
JOB-1845 · Meridian Quarries — Spoil removal
$1,875.00
INV-0243
JOB-1847 · Apex Civil — Concrete aggregate
$3,120.00
Linked evidence — INV-0241
Client sees the charge, the underlying job, and the signed proof together — no email attachment, no query to admin.
Job to invoice — common questions.
How quickly does an invoice sync to Xero after it is generated in HaulageOps?
The Xero sync runs on a 6-hourly cron schedule, so the maximum delay for routine invoice creation is six hours. Real-time payment webhooks operate instantly — when Xero records a payment against an invoice, the status in HaulageOps updates immediately without waiting for the next cron cycle.
What if the rate needs to change after a job has been created?
Rates can be updated on a job before the invoice is generated. If a job was created under a rate that has since been revised — for example, a fuel levy adjustment was agreed mid-period — the rate can be corrected on the job record before the invoice is produced. Once an invoice is in Sent or Paid status, changes go through a credit/void workflow to maintain the audit trail. Rate management supports effective dating so future jobs pick up new rates automatically without manual correction.
Can a client dispute an invoice through the portal?
The client portal shows the invoice alongside the job record and POD, which means most queries are answered before they become disputes. If a client has a question, they contact you through your normal channels — there is no dispute button in the portal itself. The value is that the evidence is already in their view: delivery photograph, signature, date and time, and the rate that was applied. Disputes that do arise start with a complete record on both sides.
What invoice statuses does HaulageOps track?
Invoices move through a full lifecycle: Draft (created but not yet sent), Sent (dispatched to client), Paid (payment received, confirmed by Xero webhook), Overdue (past due date without payment), and Voided (cancelled). Each status transition is logged with a timestamp and the user who made the change. Overdue invoices are visible in the billing module without needing to run a manual report.
Does HaulageOps support invoicing for subcontractor jobs separately from owned driver jobs?
Yes. When a job is delegated to a subcontractor, the system tracks two rates: the client charge rate (what your client pays) and the subcontractor pay rate (what you pay the sub). The client invoice is generated from the client charge rate. The subcontractor's cost is recorded against the job as a separate entry, allowing you to see margin at the job level. The subcontractor does not have access to your client's invoice or your charge rate.
Is POD required before an invoice can be generated?
POD capture is built into the driver workflow, but the system does not enforce a hard block on invoice generation if POD has not been captured. In practice, having POD attached before invoicing is strongly advisable — it is the evidence that supports the charge. The system makes POD status visible on the job record so billing admin can see immediately whether POD is present before generating the invoice.
What if we use MYOB instead of Xero?
The standard HaulageOps product integrates with Xero. MYOB integration is available as an add-on but is not part of the standard subscription — it requires scoping and is priced accordingly. If MYOB is your accounting system, contact us before signing up to confirm what is available for your configuration.
The billing workflow connects to these features and solutions
Billing & Invoicing
Full feature breakdown of the HaulageOps invoice module: lifecycle states, Xero sync mechanics, client portal invoice visibility, and payment tracking.
Platform detailXero Integration
OAuth2 connection, 6-hourly cron sync, real-time payment webhooks, and what the integration does and does not handle automatically.
Xero IntegrationRate Management
Per-tonne, per-load, hourly and fixed-fee rate cards. Effective dating, client-specific rates, and how rate cards apply to jobs automatically at dispatch.
Rate ManagementDigital Dockets
How digital POD capture replaces paper dockets, what is captured at the delivery site, and why it matters for invoice generation speed and dispute resolution.
Digital Dockets