Commercial

Every rate agreed, stored and applied automatically when jobs are created.

Client rate cards, subcontractor pay rates, effective dating for future changes, and contract lifecycle from creation through expiry — all connected so the right rate reaches the right invoice without anyone looking it up manually.

Per-tonne, per-load, hourly, fixed
Client rate cards
Subcontractor pay rates
Effective dating
Contract lifecycle
Auto-expiry alerts
The Rate Problem in Haulage

One job. Two rates. Multiple agreements. One invoice that has to be right.

Every job in a bulk haulage operation has at least two rate dimensions that matter: the rate you charge the client and — if a subcontractor makes the delivery — the rate you pay the subcontractor. These need to stay separate, stay correct over time, and both need to end up on the right documents without anyone calculating manually each time.

The problem most operators face isn't that they don't know their rates. They've negotiated them, they know what was agreed. The problem is that the rates live in spreadsheets or documents that are separate from the jobs they apply to. When a job is created, someone has to look up the rate. When an invoice goes out, someone has to check it's the right rate. When a rate changes, someone has to update multiple documents and hope nothing gets missed.

Rate disputes are almost always caused by this gap: the rate that was applied to the invoice is different from what the client understood was agreed, either because the wrong version of a spreadsheet was referenced, a rate change wasn't propagated, or a special rate negotiated for one client was mixed up with the standard rate.

Contracts create a second layer of complexity. Contract terms govern which rates apply for a given client over a given period. When a contract is approaching expiry, the rates under it may no longer be valid — but if there's no system tracking that expiry, jobs keep getting created and invoiced at rates that may no longer be agreed.

When the same operator manages multiple clients, each with different rate structures, different job types and different contract periods, the combination of a job management spreadsheet and a rates spreadsheet and a contracts folder creates a system where errors are not occasional — they're built in.

The solution is to store rates and contracts in the same system as the jobs they apply to, and have the rate applied automatically at job creation rather than looked up at invoice time.

Rate Management in HaulageOps

Rates stored once. Applied automatically. Separate for client and subcontractor.

Client rate cards

Each client in HaulageOps has a rate card — a structured set of rates for the job types, materials and routes you run for them. When a job is created for that client, the system pulls the correct rate from the rate card automatically. No lookup required.

  • Per-tonne, per-load, hourly and fixed-fee rate types
  • Different rates for different job types within one client
  • Rate applied at job creation — visible at dispatch, invoice and in reporting
  • Client can view their rate card in the client portal

Subcontractor pay rates

Where a subcontractor makes the delivery, the job carries both the client charge rate and the subcontractor pay rate. These are stored separately and neither is visible to the other party. The margin sits in the job record, visible to management, without ever appearing on a client invoice or a subcontractor payment confirmation.

  • Subcontractor pay rate stored against the subcontractor agreement
  • Applied alongside the client charge rate on the same job
  • Internal margin visible in management reporting
  • Not visible to client or subcontractor — appropriate access per role

Effective dating

Rate changes happen — fuel adjustments, annual contract renewals, negotiated increases. Effective dating lets you enter a new rate with a future start date. When that date arrives, the new rate applies automatically. Historical jobs retain the rate that was in effect when they were created — the record is accurate, not overwritten.

  • Future rate changes entered in advance with an effective date
  • Rate transitions automatically on the effective date
  • Historical job records show the rate that was active at the time
  • No manual rate-update step required across all pending jobs

Special rates for individual jobs

When a client negotiates a one-off rate for a specific delivery — a spot rate, a difficult location premium, a larger-than-standard load — that rate can be applied to that specific job without changing the client's rate card for all future jobs. The exception is recorded at job level, separate from the standard rate agreement.

  • Job-level rate override where negotiated
  • Client rate card unchanged by a single job exception
  • Job record shows the applied rate with appropriate context
  • Audit trail records who set the override rate and when
Contract Lifecycle

From contract creation to expiry alert — all managed in the platform.

Contracts in haulage govern which rates apply, for which client, over which period. When a contract expires, the rates it defines may no longer be valid. HaulageOps manages the contract lifecycle so expiry doesn't arrive unnoticed.

01

Creation and review

Contract records are created in the admin panel with the relevant client, rate terms, start date and end date. The contract document can be attached. Contracts enter a review workflow before becoming active — ensuring the right people have confirmed the terms before jobs start being created against them.

02

Active and governing rates

Once approved, the contract is active and its rate terms govern job creation for the defined client over the contract period. The contract status is visible in the admin panel — active, pending, approaching expiry. Rate cards are linked to the contract, so the relationship between agreed terms and applied rates is clear.

03

Expiry alerts and renewal

Before a contract reaches its end date, the system generates an expiry alert. The operations or commercial team is notified that the contract needs renewal or replacement before the current terms expire. No more discovering expired contracts because nobody was tracking dates. The alert creates a prompt for the renewal conversation while there is still time to have it.

Contract Management View

Meridian QuarriesRate Agreement

01 Jul 2025 → 30 Jun 2026

Active
2 rate cards Signed PDF attached

Apex CivilBulk Haulage Contract

15 Jan 2025 → 14 Jan 2026

Expiring Soon
3 rate cards Signed PDF attached

Bayside ConcreteService Level Terms

01 Sep 2024 → 31 Aug 2025

Expired
1 rate card Renewal outstanding

Contract list with status badges, linked rate cards and document attachments — expiry never arrives unnoticed.

Connected to Billing

Rate at job creation equals rate at invoice. No reconciliation step.

Because the rate is stored in the system at job creation and flows through to the completed job record, the invoice is built from that data — not entered fresh. There is no step where someone looks up the rate and types it into an invoice. The rate that was agreed is the rate that appears on the invoice.

When a client queries a rate on an invoice, the response is immediate: the rate was applied from the rate card in effect on that date, visible in the job record. There is no "let me check the spreadsheet" step. The agreed rate, the job, and the invoice are all connected in the same system.

For operators managing multiple clients with different rate structures, this removes what is otherwise a persistent source of invoicing errors. Different clients have different rates. Different job types within one client have different rates. When those rate cards are in the system and applied automatically, the variation is handled correctly without anyone having to check which rate applies each time.

See the Job to Invoice solution and Reducing Invoice Delays for how rate management connects to the broader billing workflow.

Frequently Asked Questions

Rate and contract management — common questions.

What if a client negotiates a special rate for a specific job?

A job-level rate override can be applied at the point of job creation without changing the client's rate card. The override is recorded on the job record with an audit trail showing who applied it and when. The client's rate card for all other jobs remains unchanged. This handles one-off spot rates, difficult-access premiums or other agreed exceptions without corrupting the standard rate agreement.

How do rate changes work without breaking historical job records?

Effective dating is the mechanism. When a rate changes, the new rate is entered with a future effective date. Jobs created before that date continue to use the previous rate. Jobs created from the effective date onwards use the new rate. Historical records show the rate that was active when the job was created — the record is accurate to the actual rate in effect, not overwritten by the new rate.

Can I see the margin between the client rate and the subcontractor pay rate per job?

Yes. Management users with appropriate access can see both the client charge rate and the subcontractor pay rate on a job, and the implied margin. This is visible in the job record and surfaces in management reporting. The client sees the invoice with the client charge rate; the subcontractor sees their pay rate in their portal. The margin view is internal only, visible to the roles you configure with that access level.

What rate types does HaulageOps support?

Per-tonne, per-load, hourly and fixed-fee rate types are supported. Different job types for the same client can have different rate types — for example, a per-tonne rate for aggregate deliveries and a fixed-fee rate for a dedicated site service. The rate card is flexible enough to reflect the way rates are actually structured in the client agreement, not forced into one format.

How far in advance can I set a future rate change?

Effective-dated rate changes can be set as far in advance as needed. There is no restriction on how early a future rate change is entered. This means a rate negotiated months in advance can be entered immediately, with the effective date set to when it comes into force, without any action required on the transition date.

How do contract expiry alerts work?

When a contract is approaching its end date, the system generates an alert visible in the admin panel for users with appropriate access. The alert is designed to prompt a renewal conversation before the contract expires — not after. The notification period before expiry can be configured. Once the contract expires, its status changes in the system so it is clear that a renewal is outstanding.

Rates agreed once. Applied correctly every time.

A demo covers client rate cards, subcontractor pay rates, effective dating and how the contract lifecycle works in practice — 20 minutes.