Deprixa Plus — Shipments · Statuses and Workflow
Every shipment follows a defined state machine. Only valid transitions are allowed — the system enforces this in the UI and API.
| Status | Code | Description | Next Possible Statuses |
|---|---|---|---|
| Pending | pending | Shipment just created, awaiting processing | Processed, Cancelled |
| Processed | processed | Ready for pickup or dispatch | Picked Up, In Transit, Cancelled |
| Picked Up | picked_up | Driver has collected the package from sender | In Transit |
| In Transit | in_transit | Package is moving toward destination | Out for Delivery, Exception |
| Out for Delivery | out_for_delivery | Driver is approaching the recipient for final delivery | Delivered, Exception |
| Delivered | delivered | Successfully delivered to recipient (terminal state) | None (can trigger a return request) |
| Exception | exception | A problem was encountered during delivery | In Transit, On Hold, Returned |
| On Hold | on_hold | Temporarily paused — awaiting instructions, payment, or clearance | In Transit, Cancelled |
| Cancelled | cancelled | Shipment cancelled before delivery (terminal state) | None |
| Returned | returned | Package returned to sender (terminal state) | None |
Every Status Change Is Logged
Each status transition creates an immutable activity log entry with the timestamp, user, old status, new status, and any note. This provides a complete audit trail for every shipment.