Integration Guide For Carriers
Integration Guide For Carriers

Generic Data Fields

This article defines the data fields used in MachShip’s generic carrier integration formats (JSON, XML, and CSV). These field definitions apply across all three formats to ensure consistency. For format-specific implementation details and examples, see the JSON Format, XML Format, or CSV Format guides.

Manifest Structure

A manifest represents a pickup request containing one or more consignments. The manifest can be structured in two ways:
  • Multi-Consignment Manifest: Multiple consignments in a single file (field: consignments array)
  • Single-Line Manifest: One consignment per file (field: consignment object)

Root Level Fields

These fields apply to the entire manifest and all consignments within it:
Field Type Required Description
account String or Object Yes Account code for the shipping customer (applies to all consignments). Can be simple string (“ACMEFRT”) or object with accountCode field
payingAccount String No Account code for carrier billing/payment if different from sender account
despatchDateTime String (ISO 8601 date) Yes Date of despatch in YYYY-MM-DD format (local time)
pickupDateTime String (ISO 8601 datetime) Yes Scheduled pickup date and time (local time)
pickupClosingDateTime String (ISO 8601 datetime) Yes Latest acceptable pickup time (local time)
timeSlot String No Preferred pickup/delivery time window (e.g., “9am-12pm”, “Before 5pm”). Format depends on carrier requirements
pickupAddress Object Yes Common pickup location for all consignments
pickupRequired Boolean No Indicates whether carrier pickup is required (true) or goods will be dropped off (false). Default: true
specialInstructions String No Special handling or pickup instructions for entire manifest
dgsDeclaration Boolean Yes Indicates if ANY consignment contains Dangerous Goods
consignments Array Yes* Array of consignments (multi-consignment format)
consignment Object Yes* Single consignment object (single-line format)
* Use either consignments array OR consignment object, not both

Address Object Fields

Used for both pickupAddress and toLocation:
Field Type Required Description
name String Yes Company or business name
contact String Yes Contact person name
phone String Yes Contact phone number (Australian format)
email String No Contact email address
addressLine1 String Yes Primary street address
addressLine2 String No Secondary address line (suite, unit, etc.)
suburb String Yes Suburb/locality
postcode String Yes Australian postcode (4 digits)
state String Yes Full state name (e.g., “Victoria”, “New South Wales”)
stateCode String Yes State abbreviation code: NSW, VIC, QLD, SA, WA, TAS, NT, ACT

Consignment Fields

Each consignment represents a shipment to a specific destination:
Field Type Required Description
reference String Yes Unique carrier consignment identifier
service String Yes Service level code (e.g., PEXP = Premium Express)
extraReferences Object No Additional reference numbers for tracking
toLocation Object Yes Receiver/delivery location details
specialInstructions String No Consignment-specific delivery instructions
totalWeight Number No Total weight for entire consignment in kilograms (calculated field)
totalVolume Number No Total volume for entire consignment in cubic meters (calculated field)
totalCubic Number No Total cubic measurement for entire consignment in cubic meters (calculated field)
palletTypes Object No Pallet exchange information containing CHEP, LOSCAM, and PLAIN counts for this consignment
items Array Yes List of items in this consignment

Extra References Object

Field Type Description
carrierConsignmentReference String Carrier’s internal consignment reference
customerReference String Customer’s primary reference number
customerReference2 String Customer’s secondary reference (can contain multiple space-separated values)

Item Fields

Each item represents a physical package/pallet in the consignment:
Field Type Required Description UOM
itemType String Yes Type of packaging (e.g., “Pallet”, “Carton”, “Crate”) N/A
name String Yes Item identifier or description N/A
sku String No Stock keeping unit / product code N/A
quantity Integer Yes Number of units of this item Units
height Number Yes Height of item Centimeters (cm)
length Number Yes Length of item Centimeters (cm)
width Number Yes Width of item Centimeters (cm)
weight Number Yes Weight of item Kilograms (kg)
volume Number No Volume of item (calculated field) Cubic meters (m³)
cubic Number No Cubic measurement of item (calculated field) Cubic meters (m³)
Barcode Array No Array of barcode objects – MUST match quantity count N/A
carrierItemTypeName String No Carrier’s description for this item type (e.g., “Standard Pallet”, “Oversized Carton”). Derived from carrier’s item type configuration N/A
carrierItemTypeAbbreviation String No Carrier’s abbreviated code for this item type (e.g., “SPAL”, “OCAR”). Derived from carrier’s item type configuration N/A
palletTypes Object No Pallet exchange information containing CHEP, LOSCAM, and PLAIN counts (moved from item level – this was incorrectly documented earlier) N/A
consignmentItemDgItems Array No Dangerous Goods declarations (required if item contains DG) N/A

Barcode Count Rule

Critical: The number of barcode objects in the Barcode array MUST equal the quantity value:
  • If quantity = 4, there must be exactly 4 barcode objects
  • If quantity = 1, there must be exactly 1 barcode object

Barcode Object

Field Type Description
barcodeNumber String Carrier-generated item tracking barcode

Pallet Types Object

Optional object for specifying pallet exchange requirements:
Field Type Description
palletCHEP Integer Number of CHEP pallets for exchange
palletLOSCAM Integer Number of LOSCAM pallets for exchange
palletPLAIN Integer Number of plain (one-way) pallets

Dangerous Goods Fields

Required when an item contains Dangerous Goods. Each object in the consignmentItemDgItems array represents one DG substance:
Field Type Required Description
unNumber Integer Yes UN Number (e.g., “1203”)
packingGroup String Yes Packing group: “I”, “II”, “III”, or “N/A”
containerType String Yes Container type (see enum values below)
aggregateQuantity Number Yes Total quantity of DG substance (kg or L)
isAggregateQuantityWeight Boolean Yes true = kg, false = litres
numberOfContainers Integer Yes Number of inner receptacles/containers
isMarinePollutant Boolean Yes Marine pollutant indicator
isTemperatureControlled Boolean Yes Requires temperature control
isEmptyDgContainer Boolean Yes Empty uncleaned container
dgClassType String No Primary DG class (see values below)
subDgClassTypes Array[String] No Secondary/subsidiary hazard classes
technicalOrChemicalGroupNames String No Required only when mandated by UN Number
hazchem String No Hazchem code (AU: recommended, NZ: required)
dgHazchemId Integer No Hazchem ID enum (use hazchem OR dgHazchemId, not both)
flashpoint Number No Flashpoint temperature in °C (required for Class 3 DGs)
ProperShippingName String No Official proper shipping name

Container Type Values

Drum, Carton, IBC, Pail, DemountableTank, Bottle, PressureDrum, Tube, MEGCs, Aerosol, Bag, Packaging

Packing Group Values

I, II, III, N/A Note: “N/A” is sent when a packing group does not exist for a given UN number – it will not be blank/empty.

DG Class Values

Valid DG class codes and their descriptions:
DG Class Description
2.1 FlammableGas
2.2 OtherGas
2.3 ToxicGas
3 FlammableLiquid
4.1 FlammableSolid
4.2 SpontaneouslyCombustible
4.3 DangerousWhenWet
5.1 OxidizingAgent
5.2 OrganicPeroxide
6.1 ToxicSubstance
6.2 InfectiousSubstance
7 Radioactive
8 Corrosive
9 Miscellaneous
1.1A – 1.6N Various Explosive subclasses

Hazchem Code Values

1W, 1X, 1Y, 1Z, 2P, 2RE, 2SE, 2T, 2TE, 2WE, 2XE, 2YE, 3W, 3WE, 3X, 3Y, 3YE, 3Z, 4W, 4WE, 4Y, ●2W, ●2WE, ●3W, ●3WE, ●2Y, ●2YE, ●3Y, ●3YE, -2, -3

numberOfContainers Calculation Rules

  • Carton (containerType = “Carton”): Can be set to 1 per carton if DG is not in defined inner receptacles. If shipping multiple cartons on a pallet (e.g., 12 boxes), set to 12.
  • If item quantity > 1: numberOfContainers should reflect containers per unit, NOT total. Example: quantity = 3, each has 1 drum → numberOfContainers = 1
  • Other container types (Bottle, Drum, Aerosol, etc.): Must specify actual number of inner receptacles per package. Example: 1 carton containing 12 bottles → numberOfContainers = 12

Implementation Notes

  • Date/Time Format: All dates and times use ISO 8601 format and represent local time at the pickup location
  • Australian Addressing: Both full state names (e.g., “Victoria”) and state codes (e.g., “VIC”) are required in address objects
  • Service Field: The service field contains the service code/abbreviation (e.g., “PEXP” for Priority Express, “GEN” for General, “STD” for Standard)
  • Reference Fields: The reference field contains the primary consignment identifier. Additional references can be provided in extraReferences: carrierConsignmentReference, customerReference, and customerReference2
  • Carrier Item Types: The carrierItemTypeName and carrierItemTypeAbbreviation fields identify the item type for carrier handling (e.g., “Carton”, “CTN”)
  • Measurements: All dimensions in centimeters (cm), all weights in kilograms (kg)
  • Boolean Values: Use true/false (not 1/0 or yes/no)
  • Dangerous Goods: The manifest-level dgsDeclaration should be true if ANY consignment contains DG items
  • Special Instructions: Can be specified at both manifest level (pickup instructions) and consignment level (delivery instructions)
  • Pallet Exchange: Use palletTypes object at consignment level with palletCHEP, palletLOSCAM, and palletPLAIN fields to specify pallet exchange requirements
  • Field Order: In JSON, Barcode array appears at the end of item structure after all other fields

Next Steps

For format-specific implementation details and complete examples:
  • JSON Format Guide: JSON structure, syntax, and complete manifest examples
  • XML Format Guide: XML structure, tags, and complete manifest examples
  • CSV Format Guide: CSV structure, column headers, and row formatting

Support

For integration assistance, contact MachShip carrier support via our carrier integrations form here.