Drayage Trucker Setup: From Order Creation to Invoicing
How a drayage trucker manages drivers, chassis, and containers in Drayage: order creation, dispatch board, terminal appointments, LFD tracking, and invoicing.

This guide is for drayage trucking companies. Drayage treats the container as the core object: create the order, assign driver and chassis, book the terminal appointment to pick up the box, watch the LFD (last free day) like a hawk, return the empty — and finally invoice and collect. The whole chain lives in the system.
Step 1: Create the order — get the details right the first time#
- Pick the move_type: one of four move types (import pickup, export delivery, empty return, empty pickup, etc.). The type drives the fields and the status flow that follow.
- Pickup and delivery locations are required: both must be filled in. Register frequently used locations in the address book first, then pick them at order creation — no retyping addresses every time.
- merchant_id is required: every order must belong to a merchant — this is what later lets you reconcile and invoice per customer.
- delivery_to_warehouse flag: if the load is headed to your own warehouse, check this flag. On completion the system automatically triggers a WMS inbound receipt — the warehouse can start receiving right away, no manual order creation.
- Enter container and vessel details: fill in the container_no, vessel/voyage, and vessel_eta (estimated arrival) — the dispatch board uses these to sort by urgency.
Step 2: Dispatch and assign#

- The dispatch board shows everything at a glance: all in-progress orders in one list with the key facts visible — remaining free days (last_free_day), customs_hold, vessel_eta, cutoff time — plus driver and chassis status. The board auto-sorts by urgency, so the most at-risk box is always on top.
- Assign: driver_id is required (a driver must be named), chassis_id is optional (attach one if available). On successful assignment the driver goes to on_job and the chassis to in_use.
- Terminal appointments: book the appointment before picking up or returning a box. Status flows scheduled → completed; no-shows are recorded as missed, cancellations as cancelled. Appointment status feeds directly into dispatch scheduling.
- Watch customs holds: boxes with customs_hold are highlighted on the board — clear the hold first, then worry about returning the box. The LFD clock keeps ticking and charges keep accruing either way.
- Driver app reports GPS automatically: when the driver taps status buttons in the app (arrived at terminal, box picked up, etc.), the location is reported automatically. Dispatch sees where every truck is in real time — no phone calls needed.
Step 3: Container tracking — LFD is the lifeline#
- Status flow shows where the box is: on_vessel → at_terminal → out_for_delivery → at_customer → empty_returned. Every status carries a timestamp, so when a customer asks where their box is, you answer in one second.
- LFD warning at ≤2 free days left: the system counts remaining free days from last_free_day and warns automatically at 2 or fewer. When you see the warning, there are two moves: return the box fast, or negotiate an extension with the line in advance.
- Overdue charges accrue at per_diem_rate: past the LFD with the box still out, the system accrues daily charges at each container’s per_diem_rate. These costs get passed on to the responsible party — the cleaner the data, the easier the conversation.
- Chassis maintenance reminders: each chassis has a maintenance_due_date, with automatic reminders as it approaches. Don’t let something as avoidable as an expired chassis inspection delay a pickup.
- Empty return closes the loop: empty_returned is the end of the order. Once the empty is returned, driver and chassis automatically flip back to available — ready for the next order.
Step 4: Completion and invoicing#
- Complete the order: once the driver confirms delivery or empty return in the app, the order moves to completed. Driver and chassis flip back to available automatically — dispatch doesn’t release them manually.
- Generate the drayage invoice: roll up completed orders by merchant (merchant_id) into an invoice. Aging is calculated against the due_date — overdue unpaid amounts are visible at a glance.
- Collections follow-up: collection_status tracks each invoice’s collection state (to collect / in collection / paid, etc.). Review the overdue list weekly — chase the big, long-overdue ones first.
- List per diem charges separately: put overdue per diem charges on their own invoice line — it’s crystal clear during customer reconciliation and cuts down disputes.