SolBox API Integration Reference Guide

SolBox API Integration Reference Guide

SolBox API Integration Reference Guide

Version 1.8

SolBox API Integration Reference Guide is your “single source of truth” for connecting external systems to SolBox and keeping orders, runs, and delivery outcomes perfectly in sync.
This guide focuses on the three core building blocks used in most real-world integrations:
  1. SaveOrdersWithItems: the ingestion gateway. Create or update orders (and their line items) coming from your ERP, eCommerce, WMS, or custom system, so SolBox can plan, assign, and execute them.
  2. Auth/Login: Establishes an authenticated SolBox session (typically via cookies) required first for Orderlist and GetOrder
  1. OrderList: the operational feed. Pull a filtered, paginated list of orders (by date range, status, and “modified after”) to support dashboards, dispatch visibility, and incremental syncing.
  2. GetOrder: the truth record. Retrieve a single order in full detail, including manifest/run linkage, time windows/tolerances, driver requirements (signature/photos/comments), notifications, and proof-of-delivery artefacts like photos.


Together, these endpoints form a clean lifecycle:
1.      Push orders in (SaveOrdersWithItems)
2.     Monitor and sync changes (OrderList with modified-after)
3.     Fetch complete outcomes for a specific order when needed (GetOrder)

Use this reference to standardise how your integration authenticates, exchanges identifiers, handles updates, and reliably reconciles SolBox’s execution data (status, ETAs, POD) back into your source system.

Idea
See the bottom of this document for attached .pdf version and SaveOrderswithItems workflow diagram in html



Create and Update Orders

SaveOrdersWithItems
Base URL:

1. Overview


The Save Orders With Items endpoint allows external systems to:
  1. Create new orders in SolBox
  2. Update existing orders
  3. Submit full Sender and Receiver details
  4. Submit order items with serial numbers
  5. Provide weights, dimensions, and volumes
  6. Optionally allocate or create manifests
  7. Control consolidation and update behaviours

This endpoint supports bulk submission of multiple orders in a single request.
 


2. Authentication


Authentication is performed using an API Key supplied in the request body.
  1. No OAuth
  2. No bearer token
  3. No custom headers required
  4. The API key must be requested from SolBox
Required Fields

Field

Type

Required

Description

APIKey

string

Yes

API key issued by SolBox


 


3. HTTP Specification

Method: POST
Content-Type: application/json
Authentication: APIKey in request body



4. Top-Level Request Structure

{
  "APIKey": "YOUR_API_KEY",
  "ManifestNumber": "MSMEG0007",
  "CreateManifest": false,
  "AllocateToManifest": false,
  "Orders": [ ... ]
}



4.1 Top-Level Fields


Field

Type

Required

Description

APIKey

string

Yes

API authentication key

ManifestNumber

string

No

Manifest identifier

ManifestId

integer

No

Internal manifest ID

DriverName

string

No

Driver assignment

VehicleName

string

No

Vehicle assignment

CreateManifest

boolean

No

Create new manifest

AllocateToManifest

boolean

No

Allocate to manifest

UpdateManifest

boolean

No

Update existing manifest manifest name and sequence if specified

ConsolidateOrders

boolean

No

Merge similar orders

IgnoreCustomerReferenceMatch

boolean

No

Ignore reference matching

AppendNewOrderDetails

boolean

No

Append order details

UpdateManifestComplete

boolean

No

Update Drivers and Vehicles also

Orders

array

Yes

List of orders





5. Orders Object (Orders[])


Each order represents a delivery, pickup, service, or combined workflow.

Required Minimum Fields for Order Creation

Field

Type

Required

OrderNumber

string

Yes

TypeId

integer

Yes

OrderItems

array

Yes





5.1 Order Fields

Field

Type

Description

Id

integer

System-generated Order ID

AccountId

integer

Resolved account

DateCreated

ISO 8601 datetime

UTC created timestamp

LastModified

ISO 8601 datetime

UTC modified timestamp

TypeId

integer

1=Delivery, 2=Pickup, 3=Service,
4=Pickup-Delivery

StatusId

integer

0=Pending, 1=Enroute Delivery, 2=Delivered, 3=Enroute Pickup, 4=Picked Up, 5=Cancelled

OrderNumber

string

Unique order identifier

CarrierName

string

Assigned carrier

CustomerReference

string

PO reference

DeliveryTime

string

dd/MM/yyyy HH:mm:ss

DeliveryTolerance

integer

Minutes

PickupTime

string

dd/MM/yyyy HH:mm:ss

PickupTolerance

integer

Minutes

Weight

decimal

Total weight

Volume

decimal

Total volume

Sender

object

Conditional

Receiver

object

Conditional

OrderDetails

string

Order Notes, URL’s are clickable to driver

OrderItems

array

Item lines

Units

array

Optional

Attributes

array

Optional





6. Sender & Receiver Rules

Required Based on TypeId

TypeId

Description

Sender Required

Receiver Required

1

Delivery

No

Yes

2

Pickup

Yes

No

3

Service

No

Yes

4

Pickup-Delivery

Yes

Yes





6.1 Sender / Receiver Structure

"Sender": {
  "Code": "SolBox",
  "Name": "SolBox PTY LTD",
  "Address1": "2 BAKER STREET",
  "Suburb": "BOTANY",
  "State": "NSW",
  "PostCode": "2019",
  "Country": "Australia"
}

Key Fields

Field

Type

Code

string

Name

string

Address1

string

Address2

string

Suburb

string

State

string

PostCode

string

Country

string

Latitude

string or number

Longitude

string or number

ContactFirstName

string

ContactLastName

string

ContactPhoneNumber

string

ContactEmail

string


Note: Latitude and Longitude may return as empty string or numeric string.



7. OrderItems Structure

"OrderItems": [
  {
    "reference": "10718432",
    "product": "CARTON",
    "quantity": 1,
    "itemWeight": 9.34,
    "totalWeight": 9.34
  }
]



7.1 OrderItems Fields


Field

Type

Required

reference

string

Yes

product

string

Yes

quantity

decimal

Yes

itemPrice

decimal

No

itemWeight

decimal

No

totalWeight

decimal

No

totalVolume

decimal

No

itemSerials

array

No






7.2 Item Serials

"itemSerials": [
  {
    "serialNumber": "SSMEG18432001",
    "returned": 0
  }
]




8. Success Response

HTTP 200 OK
The API returns the full order object as stored in SolBox.

Notes
Important Date Formatting Note
DateCreated and LastModified → ISO 8601 (UTC)
DeliveryTime and PickupTime → dd/MM/yyyy HH:mm:ss
Clients must handle both formats correctly.





9. Example Success Response (Trimmed)

{
  "Orders": [
    {
      "Id": 562499,
      "OrderNumber": "S0018432",
      "DateCreated": "2022-11-28T10:40:52.813Z",
      "LastModified": "2026-03-03T09:30:17.0710581Z",
      "StatusId": 0,
      "OrderItems": [...]
    }
  ]
}




10. Error Handling

Status Code
Meaning
200
Success
400
Validation error
401
Invalid API Key
403
Forbidden
500
Server Error

When submitting multiple orders:
Each Orders[].Response object should be checked
Partial success is possible
Do not assume all orders succeeded





11. Integration Best Practices

1. Use OrderNumber as your external primary key.
2. Do not send empty Sender/Receiver objects.
3. Always validate TypeId before sending.
4. Parse date fields carefully due to mixed formats.
5. Handle nullable booleans defensively.
6. Inspect per-order response metadata.





12. Minimal Working Example

{
  "APIKey": "YOUR_API_KEY",
  "Orders": [
    {
      "OrderNumber": "ORD1001",
      "TypeId": 1,
      "Receiver": {
        "Name": "Customer A",
        "Address1": "1 Example Street",
        "Suburb": "Brisbane",
        "State": "QLD",
        "PostCode": "4000",
        "Country": "Australia"
      },
      "OrderItems": [
        {
          "reference": "ITEM001",
          "product": "BOX",
          "quantity": 1
        }
      ]
    }
  ]
}






Reading Orders (Session Auth + Order Endpoints)


All endpoints below assume you have authenticated first and are sending the session context (cookie/session) or token as required by your environment.




1. Authenticate Session (Required)

Endpoint
POST /API/Auth/Login

Purpose
Authenticates the user and establishes an authenticated session (typically via cookies).

Content-Type
application/x-www-form-urlencoded
Request (x-www-form-urlencoded)

Fields:
  1. AccountName (string)
  2. Username (string)
  3. Password (string)
  4. APIKey (string)

Example (safe placeholders):
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "AccountName={{ACCOUNT_NAME}}" \
  -d "Username={{USERNAME}}" \
  -d "Password={{PASSWORD}}" \
  -d "APIKey={{API_KEY}}"

Successful Response (example)
{
  "role": "user",
  "isRepairer": false,
  "onBoardingCompleted": true,
  "inactiveDays": 0,
  "inActive": false,
  "trialPeriod": false,
  "locale": "en-AU"
}

Auth Handling Notes
  1. This endpoint commonly returns a session cookie (e.g., .ASPXAUTH, or similar) in Set-Cookie.
  2. For subsequent requests, your client must:
    1. Persist cookies (Postman: enable cookie jar; curl: -c cookies.txt -b cookies.txt), or
    2. Use whatever token/header scheme your SolBox environment is configured for (if applicable).
Curl cookie example:
# Login and save cookies
  -H "Content-Type: application/x-www-form-urlencoded" \
  -c cookies.txt \
  -d "AccountName={{ACCOUNT_NAME}}" \
  -d "Username={{USERNAME}}" \
  -d "Password={{PASSWORD}}" \
  -d "APIKey={{API_KEY}}"
# Later calls reuse cookies
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{ ... }'





2. Order List

Endpoint

POST /API/v2/Order/orderList

Purpose
Returns a paged list of order summaries filtered by date range, modified-after timestamp, inclusion/exclusion flags, order types, and statuses.

Headers


Header

Value

Content-Type

application/json

Accept

application/json

Cookie

(set automatically if using session cookies)


Request Body (example)
{
  "onlyShowTodaysOrders": 0,
  "loadOrdersBetweenDates": 1,
  "loadOrdersEndDate": "2026-03-12",
  "loadOrdersStartDate": "2026-02-12",
  "loadOrdersModifiedAfter": "2024-05-13T12:50:00Z",
  "excludeManifestOrders": 0,
  "excludeUnattachedOrders": 1,
  "loadPickupOrders": 1,
  "loadDeliveryOrders": 1,
  "loadServiceOrders": 0,
  "loadPendingOrders": 1,
  "loadDeliveringOrders": 1,
  "loadDeliveredOrders": 1,
  "loadCancelledOrders": 0,
  "start": 0,
  "len": 100
}

Request Fields

Field

Type

Description

onlyShowTodaysOrders

int (0/1)

If 1, filters to “today’s” orders (server-local day).

loadOrdersBetweenDates

int (0/1)

If 1, applies loadOrdersStartDate → loadOrdersEndDate.

loadOrdersStartDate

string (YYYY-MM-DD)

Start of date filter.

loadOrdersEndDate

string (YYYY-MM-DD)

End of date filter.

loadOrdersModifiedAfter

string (ISO-8601 datetime)

Incremental filter: only orders modified after timestamp.

excludeManifestOrders

int (0/1)

If 1, exclude orders attached to a manifest/run.

excludeUnattachedOrders

int (0/1)

If 1, exclude orders NOT attached to a manifest/run.

loadPickupOrders

int (0/1)

Include pickup orders.

loadDeliveryOrders

int (0/1)

Include delivery orders.

loadServiceOrders

int (0/1)

Include service orders.

loadPendingOrders

int (0/1)

Include pending orders.

loadDeliveringOrders

int (0/1)

Include delivering/in-progress orders.

loadDeliveredOrders

int (0/1)

Include delivered orders.

loadCancelledOrders

int (0/1)

Include cancelled orders.

start

int

Pagination offset (0-based).

len

int

Page size.


Response (example shape)
{
  "list": [
    {
      "m_id": 812011,
      "m_name": "Test1",
      "m_p_seq": null,
      "m_d_seq": 1,
      "m_p_relative_seq": null,
      "m_d_relative_seq": 1,
      "m_optimised": 1,
      "capacity_name": "weight",
      "capacity_unit": "kg",
      "capacity_units": "kg",
      "order_total_capacity": 4.6000,
      "order_total_items": 23.0000,
      "order_max_dimension": 7.0000,
      "atr": null,
      "attributes": null,
      "volume": null,
      "Length": null,
      "weight": null,
      "id": 8006477,
      "pickup_client_id": null,
      "delivery_client_id": 624907,
      "StatusId": 0,
      "units": "0.0000/0.0000/0.0000/0.0000/0.0000/0.0000/0.0000/0.0000/0.0000/0.0000",
      "TypeId": 1,
      "OrderNumber": null,
      "InvoiceNr": null,
      "client_name": "Gabrieltest1",
      "dest_lat": -33.872740,
      "dest_lng": 151.205713,
      "pickup_address": null,
      "dest_address": "Sydney NSW, Australia",
      "pickup_lat": null,
      "pickup_lng": null,
      "vehicle_name": "GabrielVehicle",
      "vehicle_id": 13634,
      "driver_id": 11870,
      "driver_name": "Gabriel-Driver",
      "dt": "2026-03-04T09:00:00",
      "dtol": 480,
      "ptol": null,
      "pdt": null,
      "ddt": "2026-03-04T09:00:00",
      "apdt": null,
      "addt": null,
      "deliveryStart": null,
      "deliveryFinish": null,
      "pickupStart": null,
      "pickupFinish": null,
      "mc_statuscode": "X3",
      "mc_eta": "2026-03-04T09:07:00Z",
      "mc_AF": null,
      "PickupEnrouteStart": "2026-03-04T09:00:00",
      "DeliveryEnrouteStart": "2026-03-04T09:00:00",
      "amount_payed": null,
      "payment_type": null,
      "money_received": 0,
      "has_comments": 0,
      "has_db_pictures": 0,
      "has_pictures": false,
      "has_returns": 0,
      "cust_ref": SO12345,
      "DeliveryComment": Deliver around the back,
      "PickupComment": “Broken Package”,
      "LoadUnitString": "[{\"stat_id\":15,\"id\":2,\"show_on_tables\":1,\"name\":\"Cartons - delivery\",\"qty\":0.0000}]",
      "pictures": [],
      "LoadUnits": [
        {
          "stat_id": 15,
          "id": 2,
          "name": "Cartons - delivery",
          "show_on_tables": true,
          "qty": 0.0000
        }
      ],
      "orderAttributes": null,
      "pickup_eta": "2026-03-04T09:00:00",
      "delivery_eta": "2026-03-04T09:00:00"
    }
  ]
}

list[]
 Field Reference (common fields)
Manifest / run info
  1. m_id (int): Manifest ID
  2. m_name (string): Manifest name
  3. m_p_seq (int|null): Pickup sequence within manifest
  4. m_d_seq (int|null): Delivery sequence within manifest
  5. m_p_relative_seq (int|null): Relative pickup sequence (if used)
  6. m_d_relative_seq (int|null): Relative delivery sequence (if used)
  7. m_optimised (int 0/1): Was run optimised
Order identity
  1. id (int): Order ID
  2. TypeId (int): Order type ID
  3. StatusId (int): Order status ID
  4. OrderNumber (string|null): External/internal order number
  5. InvoiceNr (string|null): Invoice number
  6. cust_ref (string|null): Customer reference (commonly mapped to an external system reference)
Locations
  1. dest_address, dest_lat, dest_lng: Delivery location
  2. pickup_address, pickup_lat, pickup_lng: Pickup location
Assignment
  1. vehicle_id, vehicle_name
  2. driver_id, driver_name
Timing
  1. dt (ISO datetime): Primary scheduled datetime
  2. pdt / ddt: Planned pickup/delivery datetime
  3. apdt / addt: Actual pickup/delivery datetime
  4. ptol / dtol: Pickup/Delivery tolerance (minutes)
ETA/status feed
  1. mc_statuscode (string|null): Status code from mobile/courier feed
  2. mc_eta (ISO datetime|null): ETA from mobile/courier feed
  3. PickupEnrouteStart / DeliveryEnrouteStart (datetime|null)
Load units
  1. LoadUnits (array): Preferred structured load units
  2. LoadUnitString (string): Legacy JSON string version of load units
  3. units (string/array): Raw units breakdown (format may vary by account)



3. Get Order Details


Endpoint
POST /API/orders/getOrder/{orderId}

Purpose
Returns full details for a specific order including settings, notifications, photos, and operational timestamps.

Headers

Header

Value

Content-Type

application/json

Accept

application/json

Cookie

(set automatically if using session cookies)



Path Parameter
  1. orderId (int): SolBox Order ID

Request Body (example)
{
  "onlyShowTodaysOrders": 0,
  "loadOrdersBetweenDates": 1,
  "loadOrdersEndDate": "2026-03-16",
  "loadOrdersStartDate": "2026-02-14",
  "loadOrdersModifiedAfter": "2025-01-15 19:00:00",
  "excludeManifestOrders": 0,
  "excludeUnattachedOrders": 0,
  "loadPickupOrders": 1,
  "loadDeliveryOrders": 1,
  "loadServiceOrders": 1,
  "loadPendingOrders": 1,
  "loadDeliveringOrders": 1,
  "loadDeliveredOrders": 1,
  "loadCancelledOrders": 1,
  "start": 0,
  "len": 100
}

Response (example shape)
{
  "orderDetails": {
    "TypeId": 1,
    "id": 7887398,
    "manifest_id": 802446,
    "manifest_name": "Run Sas1",
    "manifest_date": "2026-02-20T00:00:00Z",
    "forceUnlinkManifest": false,
    "client_name": "To Alex test 13",
    "pickup_client_state": null,
    "pickup_client_suburb": null,
    "delivery_client_state": "NSW 2125",
    "delivery_client_suburb": "Taylor Street  West Pennant Hills",
    "delivery_client_name": "Alex test 13",
    "pickup_client_name": null,
    "payer_name": null,
    "AccountId": 12,
    "CreationSource": null,
    "DateCreated": null,
    "LastModified": "2026-03-05T05:08:32.2565011Z",
    "invoiceLink": null,
    "PickupStartedAt": null,
    "PIckupFinishedAt": null,
    "DeliveryStartedAt": null,
    "DeliveryFinishedAt": null,
    "dest_address": "23 Taylor Street  West Pennant Hills NSW 2125 Australia",
    "pickup_address": null,
    "dest_lat": -33.750560,
    "dest_lng": 151.025511,
    "pickup_lat": null,
    "pickup_lng": null,
    "units": [],
    "start_address": null,
    "start_lat": null,
    "time_min": null,
    "time_max": null,
    "earliest_arrival": null,
    "OnTime": 0,
    "DeliveryKey": "RJdB_0im5UqVWRLGYvY5lw2",
    "PickupKey": null,
    "travel_time": null,
    "travel_dist": null,
    "orderAttributes": [],
    "OrderDetails": "https://smartmove.solbox.it,
    "DeliveryComment": null,
    "PickupComment": null,
    "CancellationComment": "Futile comment",
    "DeliveryTime": "2026-02-20T07:30:00Z",
    "PickupTime": null,
    "dt": null,
    "DeliveryTolerance": 750,
    "DeliveryServiceTime": 25,
    "PickupTolerance": null,
    "PickupServiceTime": null,
    "DeliveryClientID": 663573,
    "PickupClientID": null,
    "PayerID": null,
    "totalTrolleys": null,
    "TrolleysCollected": null,
    "TrolleysUnloaded": null,
    "StatusId": 5,
    "AddInfo": null,
    "CustomerReference": "",
    "IsPickup": 0,
    "DeviceSyncStatus": null,
    "DeliveredTime": null,
    "PickedUpTime": null,
    "DeliverySignedBy": null,
    "PickupSignedBy": null,
    "delivery_not_emails": "alex @gmail.com",
    "delivery_not_sms": "0412345678",
    "pickup_not_emails": null,
    "pickup_not_sms": null,
    "delivery_price": null,
    "amount_payed": null,
    "payment_type": null,
    "orderItems": [],
    "orderBarcodes": [],
    "orderSettings": [
      {
        "Id": 0,
        "OrderId": 7887398,
        "SettingId": 1,
        "SettingType": 1,
        "SettingTypeName": "Delivery",
        "SettingName": "Mandatory Signature",
        "IsSet": null
      }
    ],
    "photos": [
      {
        "orderId": 7887398,
        "pictureId": 9885816,
        "thumbnailPictureId": 10002712,
        "latitude": -27.483725,
        "longitude": 153.069802,
        "accuracy": null,
        "pictureUrl": "/api/v3/picture/9885816/90726966E3264B4F8450D9BCD8C73D10",
        "thumbnailPictureUrl": "/api/v3/picture/10002712/90726966E3264B4F8450D9BCD8C73D10",
        "createDate": "2026-02-27T23:54:58Z",
        "uploadDate": "2026-02-27T12:54:58.3562906Z",
        "typeId": 1
      }
    ]
  }
}

Key Field Notes
  1. delivery_not_emails (string): Notification emails for delivery updates (comma-separated list supported).
  2. delivery_not_sms (string): Notification SMS recipients for delivery updates.
  3. pickup_not_emails / pickup_not_sms: Pickup notification channels (if pickup workflow used).
  4. photos[].pictureUrl and photos[].thumbnailPictureUrl are relative URLs. Compose full URL like: https://live.solbox.it + pictureUrl




Minimal flow


1. POST /API/Auth/Login with x-www-form-urlencoded credentials
2. Store and resend session cookie(s) automatically
3. POST /API/v2/Order/orderList to retrieve summaries
4. POST /API/orders/getOrder/{orderId} for a specific order’s full detail




    • Related Articles

    • API

      API import is available through the SolBox API protocols and documentation which can be utilised here - for more help on an API integration current or new please raise a ticket with SolBox Support. The key calls of API request are: SaveOrderWithItems ...
    • SolBox SmartMove Release Notes

      SolBox SmartMove Release Notes We’re committed to continuously improving our software to provide you with the best possible experience. This page keeps you informed about the latest updates, new features, enhancements, and bug fixes in our platform. ...
    • Enabling Fresho Integration

      Fresho, an innovative platform, redefines how businesses handle inventory, procurement, and distribution. SolBox seamlessly integrates with Fresho, facilitating smooth collaboration between the two platforms. Instructions on how to set up integration ...
    • Enabling Ordermentum Integration

      The Ordermentum integration allows for seamless import of orders into SolBox. Instructions on how to set up integration with Ordermentum. Select Settings menu Click on INTEGRATION tab Scroll down and tick Ordermentum Configuring Integration Settings ...
    • SmartMove Vehicle Integration with Telematics

      This article outlines the process of integrating vehicles from the SmartMove platform into Telematics. 1. Enable Integration on SmartMove. Log in to SmartMove: https://smartmove.solbox.it/login Go to the Settings menu, select the Integration tab and ...