How to use this guide
This guide maps every field in the D2 flat-file layouts to the JSON property that carries it in the D2 v2 API. It is a companion to the D2 API — Vendor Integration Guide. That guide covers authentication, endpoints, validation and the integration flow. This one answers a narrower question: "I populate field X at position N in my flat file today — where does it go in the JSON?"
Layouts covered
| File type | Layout document | API endpoint | Request body |
|---|---|---|---|
| PO / RL — Dispatch | RL-PO_xmit_Paltrack_2022-11-17 | POST /v2/SubmitDispatch | POFileDTO |
| PI — Intake | PI_xmit_Paltrack_2022-11-17 | POST /v2/SubmitIntake | PIFileDTO |
| PS — Stock | PS_xmit_Paltrack_2022-11-17 | POST /v2/SubmitStock | PSFileDTO |
| MT — Mates Receipt | MT_xmit_Paltrack_2022-11-17 | POST /v2/SubmitMates | MTFileDTO |
| DI — Day Instruction | DI xmit Paltrack_2022-04-26 | POST /v2/SubmitDayInstruction | DIFileDTO |
| LI — Loading Instruction | LI_xmit Paltrack_2020-04-02 | POST /v2/SubmitLoadInstruction | LIFileDTO |
The layout documents are on the Paltrack Helpdesk under General → Downloads → Transmission File Layouts. Positions and lengths in this guide are taken from those versions. Payloads you receive through GetPayload have the same shape as the request bodies above.
Reading the tables
Each file type has a short Shape table showing which flat-file record becomes which JSON object. That's followed by Before you start, the points most likely to trip up a migration. Then there is one table per record, listing every field in layout order:
| Column | Meaning |
|---|---|
| Pos / Len | Start position (1-based) and length, as in the layout document |
| Layout field | The field name as the layout document spells it |
| JSON property | The full path of the JSON property. [] marks an array, so Consignments[]. is the SSCC of each pallet in each consignment. — means the field is not in the API |
| Type | The JSON type: string, integer, number, datetime, boolean, object or array |
| Req | REQ means the API rejects the payload if this property is missing |
| Notes | Renames, replaced fields, fixed code values and format rules |
Each type also lists its API-only properties, meaning JSON properties with no flat-file equivalent, and a summary of what is Not in the API.
Rules that apply to every file type
- The batch header and trailer are not records in the API. The
BHheader values that survive become top-level properties:LocationId,BatchNumber, the file creation date and time,ProviderandVersion. TheBTtrailer's record counts and totals are not sent. - Record-type codes are not sent. The JSON object a value sits in tells the API which record it belongs to. The same goes for the flat file's link fields that tie records together (for example a load id repeated on every record). The JSON nesting does that job, although several link fields are still accepted as properties where the tables say so.
- One file name property per payload.
POFileName,PIFileName,PSFileName,MTFileName,DIFileNameandLIFileNamecarry the file name you would have used for the flat file. Keep the same naming convention. The two-letter prefix (PO,RL,PI,PS,MT,DI,LI) matters. - Dates and times. Where the layout splits a value into a date field and a time field, the API has one
datetimeproperty. Send datetimes in ISO 8601, for example2026-09-30T14:05:00. Some older properties are typedstringalthough they hold a date. The tables flag these, and ISO 8601 is recommended for them too. - Numbers. Send JSON numbers with
.as the decimal separator. There's no zero-padding, no implied decimals and no fixed width.12.5means 12.5, not0001250. - Strings. Send the value, trimmed. There's no need to pad to the layout length. The layout lengths still show the longest value receiving systems expect.
- Replaced ("old") fields. Some layouts keep a short field in its original position and add a longer replacement further along the record. In the API, send the value in the property the table points to. The Notes column says which one.
- Paltrack-internal fields. Where the layout says a field is set by Paltrack or should be left blank, it is either not in the API or can be left out. The Notes column says which.
- Pallets are identified by SSCC. Where a layout has both a pallet id and an SSCC field, the SSCC replaces the pallet id. Use the
SSCCproperty. - Part pallets are not accepted. For Dispatch, Intake and Mates, the
PalletQuantityvalues for one SSCC must add up to exactly 1. For Stock they must not exceed 1: a lower total is accepted, because stock can include a broken-down pallet. See Validation in the Vendor Integration Guide.
What the API does not carry
Most layout fields have a JSON property. The main exceptions are listed under Not in the API for each type. The biggest is that the Intake API has no equivalent of the IS (summary) and EV (evaluation) records. PM (pallet movement) records are carried, in PalletMovements[] (see PI).
What changed
- 1 October 2026: Intake carries PM (pallet movement) records in
PalletMovements[]. Each movement is routed on its own fields by the recipient's split rules, and a payload may carry movements only. - 30 September 2026: First version. It reflects two rule changes released the same day. Stock accepts a
PalletQuantitytotal below 1 per SSCC (a broken-down pallet), and Mates identifies pallets bySSCC, withPalletIdnow optional.
PO — Dispatch
Truck dispatches (PO) and railings (RL) are submitted with POST /v2/SubmitDispatch, with a POFileDTO request body. Recipients get the same shape back from POST /v1/GetPayload. This section maps every field of the RL/PO flat-file layout (v2.18, 17 November 2022) to its JSON property.
Shape
| Flat-file record | JSON object | Occurs |
|---|---|---|
| (file name) | POFileName | 1 |
| BH — Batch header | POFileDTO (root properties) | 1 |
| OH — Truck header | TruckHeader | 1 |
OL — Transport location, loading (seq 1, tran_type L) | Consignments[]. | 1 per consignment |
OL — Transport location, discharge (seq 2+, tran_type D) | Consignments[]. | 1 per consignment |
| OC — Truck document | Consignments[] | 1..n |
| OK — Truck container | Consignments[]. | 0..1 per consignment |
| OP — Truck pallet | Consignments[]. | 1..n per consignment |
| BT — Batch trailer | — | Not in the API |
- One truck per payload, as in the flat file.
- Each OC becomes one
Consignments[]element. It carries its own copy of the loading OL (LoadingLocation), the discharge OL it sits under (DispatchLocaton), its OK record (Container) and its OP records (Pallets[]). Containeris a single object, not an array. Sendnullwhen the consignment has no container.Pallets[]has one element per pallet sequence (SSCC +SequenceNumber). Put each pallet only under its own consignment.- Nesting replaces the flat-file record order, but the link fields are still sent:
Container.DocumentNumberandPallets[].ConsignmentNumbercarry the consignment number.
Before you start
- PO and RL share this endpoint and
POFileDTO.POFileNamemust start withPO(dispatch) orRL(railings), and the prefix decides which type the payload is. Follow the flat-file convention:POxxxyyy.zzzorRLxxxyyy.zzz. - Send both
Consignments[].DispatchLocaton.LocationCodeandConsignments[].DestinationCode, with the same value, on every consignment. The destination is taken from them; if either is missing or they differ, the dispatch will not reach the right recipient.DispatchLocatonis spelt that way in the API (no "i"). A property namedDispatchLocationis not read. - Root
LocationCodeis the sending depot's Paltrack depot code. It is required and must be a depot registered with Paltrack, or the payload is rejected. Consignments[].LoadIdis a string. Every otherLoadId(TruckHeader,LoadingLocation,DispatchLocaton,Container,Pallets[]) is an integer. In all of them, send only the internal load id (the 6 digits afterxxx-in the flat-file load_id).- No part pallets. For each
SSCC, the sum ofPallets[].PalletQuantityacross all consignments must be 1 (±0.001), or the payload is rejected withPART_PALLET. - Some properties must be present even when they have no value. Send
"", notnull, and do not leave them out:TruckHeader.NextType,TruckHeader.NextCode,Container.DocumentNumber, and on each palletStackVariance,PackhouseCode,Orchard,TargetRegion,TargetCountry. - Formats: every
datetimetakes ISO 8601, e.g.2026-09-30T14:05:00, and each layout date + time pair is one property. Numbers use.as the decimal separator, with no padding. Send the same value twice where noted:ProductionIdandProductionRun, andSAECSVoyageandExtSAECSVoyage.
BH — Batch header → POFileDTO (root)
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| — | — | File name | POFileName | string | REQ | Format: POxxxyyy. (dispatch) or RLxxxyyy. (railings). Must start with PO or RL. |
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 3 | network address | LocationId | string | REQ | Location id of the sending depot (the xxx in the file name). |
| 6 | 6 | batch number | BatchNumber | string | REQ | Send as a string. Format: 6 digits, zero-padded, e.g. 000123. |
| 12 | 8 | Create date | CreatedDateTime | datetime | Combined with create time into one datetime. Defaults to the time of submission. | |
| 20 | 8 | create time | CreatedDateTime | datetime | Combined with Create date into one datetime. | |
| 28 | 2 | indicator | — | — | Not in the API. | |
| 30 | 30 | provider | Provider | string | Name of the submitting system. Defaults to Paltrack API. | |
| 60 | 30 | version | Version | string | Version of the submitting system. |
OH — Truck header → TruckHeader
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 10 | load_id | TruckHeader. | integer | Internal load id only (the 6 digits after xxx-). | |
| 13 | 10 | load_ref | TruckHeader. | string | Truck number. | |
| 23 | 25 | load_name | TruckHeader. | string | Truck name. | |
| 48 | 1 | transport | TruckHeader. | string | Values: R = rail, T = truck. | |
| 49 | 1 | load_type | TruckHeader. | string | Values: F = flat-bed, R = reefer. | |
| 50 | 1 | load_status | TruckHeader. | string | Values: P = planning, T = timekeeper, B = busy, L = loaded, G = cons generated, D = departed, R = resend. | |
| 51 | 13 | tk_date | — | — | Not in the API. | |
| 64 | 7 | tk_user | — | — | Not in the API. | |
| 71 | 13 | start_date | TruckHeader. | datetime | ||
| 84 | 7 | user_id | — | — | Not in the API. | |
| 91 | 7 | partner_id | — | — | Not in the API. | |
| 98 | 13 | end_date | TruckHeader. | datetime | ||
| 111 | 13 | dep_date | TruckHeader. | datetime | ||
| 124 | 2 | handle_point | TruckHeader. | string | Dispatch handling point. | |
| 126 | 8 | carrier | TruckHeader. | string | ||
| 134 | 5 | plt_qty | TruckHeader. | integer | REQ | Total pallets on the truck. |
| 139 | 8 | ctn_qty | TruckHeader. | integer | REQ | Total cartons on the truck. |
| 147 | 12 | sub_load | TruckHeader. | string | ||
| 159 | 2 | next_type | TruckHeader. | string | REQ | Values: DP = depot, CU = customer. May be "". |
| 161 | 7 | next_code | TruckHeader. | string | REQ | Next location code. May be "". |
| 168 | 6 | saecs_voyage | TruckHeader. | string | Replaced by Ext_saecs_voyage (pos 255). Send the same value here and in TruckHeader.. | |
| 174 | 8 | phyto_no | TruckHeader. | string | ||
| 182 | 1 | full_load | TruckHeader. | string | Values: Y = fully loaded, N = not. | |
| 183 | 1 | instr_type | TruckHeader. | string | Values: D = day, Z = container, N = none. | |
| 184 | 6 | master_ord | TruckHeader. | string | Instruction order number. | |
| 190 | 7 | locn_code | TruckHeader. | string | Current location. | |
| 197 | 4 | season | TruckHeader. | string | REQ | |
| 201 | 6 | client_ref | TruckHeader. | string | ||
| 207 | 8 | trip_no | TruckHeader. | string | ||
| 215 | 1 | xmit_flag | TruckHeader. | string | Values: Y, N. | |
| 216 | 5 | revision | TruckHeader. | integer | ||
| 221 | 8 | mesg_no | — | — | Not in the API. | |
| 229 | 7 | tran_user | TruckHeader. | string | REQ | |
| 236 | 8 | tran_date | TruckHeader. | datetime | Combined with tran_time into one datetime. Always send it. | |
| 244 | 5 | tran_time | TruckHeader. | datetime | Combined with tran_date into one datetime. | |
| 249 | 6 | Temperature | TruckHeader. | number | No reading: omit or send null, not 0. Payloads converted from flat files may carry the flat-file value 99.. | |
| 255 | 15 | Ext_saecs_voyage | TruckHeader. | string | ||
| 270 | 10 | Truck_weight | TruckHeader. | number | Fully loaded truck weight (truck plus load). | |
| 280 | 15 | Trailer1 | TruckHeader. | string | First trailer registration number. | |
| 295 | 15 | Trailer2 | TruckHeader. | string | Second trailer registration number. |
OL — Transport location → Consignments[].LoadingLocation / Consignments[].DispatchLocaton
The loading OL (seq 1, tran_type L) goes into LoadingLocation on every consignment. The discharge OL that a consignment sits under goes into that consignment's DispatchLocaton. Req applies whenever the object is sent. Send DispatchLocaton on every consignment (see Before you start).
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 10 | load_id | Consignments[].<br>Consignments[]. | integer | Internal load id only. | |
| 13 | 2 | locn_type | Consignments[].<br>Consignments[]. | string | REQ | Values: DP = depot, CU = customer, FA = farm. |
| 15 | 7 | locn_code | Consignments[].<br>Consignments[]. | string | REQ | DispatchLocaton. must equal Consignments[].. |
| 22 | 5 | seq_no | Consignments[].<br>Consignments[]. | integer | REQ | 1 = loading point; 2 and up = discharge points. |
| 27 | 1 | tran_type | Consignments[].<br>Consignments[]. | string | REQ | Values: L = loading, D = discharge. |
| 28 | 2 | handle_point | Consignments[].<br>Consignments[]. | string | ||
| 30 | 8 | arr_date | Consignments[].<br>Consignments[]. | datetime | Combined with arr_time into one datetime. | |
| 38 | 5 | arr_time | Consignments[].<br>Consignments[]. | datetime | Combined with arr_date into one datetime. | |
| 43 | 8 | dep_date | Consignments[].<br>Consignments[]. | datetime | Combined with dep_time into one datetime. | |
| 51 | 5 | dep_time | Consignments[].<br>Consignments[]. | datetime | Combined with dep_date into one datetime. | |
| 56 | 10 | conn_flight | Consignments[].<br>Consignments[]. | string | ||
| 66 | 1 | load_status | Consignments[].<br>Consignments[]. | string | ||
| 67 | 1 | xmit_flag | Consignments[].<br>Consignments[]. | string | Values: Y, N. | |
| 68 | 5 | revision | Consignments[].<br>Consignments[]. | integer | ||
| 73 | 8 | mesg_no | — | — | Not in the API. | |
| 81 | 7 | tran_user | Consignments[].<br>Consignments[]. | string | ||
| 88 | 8 | tran_date | Consignments[].<br>Consignments[]. | datetime | Combined with tran_time into one datetime. Always send it. | |
| 96 | 5 | tran_time | Consignments[].<br>Consignments[]. | datetime | Combined with tran_date into one datetime. |
OC — Truck document → Consignments[]
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 10 | load_id | Consignments[]. | string | Send as a string. Internal load id only, e.g. "123456". | |
| 13 | 7 | locn_code | Consignments[]. | string | REQ | The sending depot code (same as root LocationCode). |
| 20 | 2 | orgzn | Consignments[]. | string | REQ | Organisation code. |
| 22 | 10 | cons_no | Consignments[]. | string | REQ | Document number. |
| 32 | 2 | cons_type | Consignments[]. | string | Values: OT = out consignment, DO = delivery note, RL = railings. | |
| 34 | 8 | cons_date | Consignments[]. | datetime | Document date. | |
| 42 | 6 | account | Consignments[]. | string | Depot account number. | |
| 48 | 1 | channel | Consignments[]. | string | REQ | Values: E = export, L = local. |
| 49 | 8 | pro_no | Consignments[]. | integer | ||
| 57 | 6 | grower_alloc | Consignments[]. | string | ||
| 63 | 8 | ctn_qty | Consignments[]. | integer | REQ | Total cartons on the document. |
| 71 | 5 | plt_qty | Consignments[]. | integer | REQ | Total pallets on the document. |
| 76 | 5 | full_pallet | Consignments[]. | integer | ||
| 81 | 5 | inc_pallet | — | — | Not in the API. | |
| 86 | 4 | season | Consignments[]. | string | REQ | |
| 90 | 10 | client_ref | Consignments[]. | string | ||
| 100 | 4 | allow_code | — | — | Not in the API. | |
| 104 | 1 | allow_del | — | — | Not in the API. | |
| 105 | 1 | liner_bd | — | — | Not in the API. | |
| 106 | 1 | plas_cover | — | — | Not in the API. | |
| 107 | 1 | spoor_load | — | — | Not in the API. | |
| 108 | 1 | repack_flag | — | — | Not in the API. | |
| 109 | 2 | endorse1 | — | — | Not in the API. | |
| 111 | 2 | endorse2 | — | — | Not in the API. | |
| 113 | 2 | endorse3 | — | — | Not in the API. | |
| 115 | 2 | endorse4 | — | — | Not in the API. | |
| 117 | 6 | order_no | Consignments[]. | string | ||
| 123 | 2 | dest_type | Consignments[]. | string | Values: DP = depot, CU = customer. | |
| 125 | 7 | dest_code | Consignments[]. | string | Must equal Consignments[].. See Before you start. | |
| 132 | 5 | cnts_on_truck | Consignments[]. | integer | ||
| 137 | 5 | mix_cnt_pals | — | — | Not in the API. | |
| 142 | 5 | cons_count | — | — | Not in the API. | |
| 147 | 5 | pals_unstable | — | — | Not in the API. | |
| 152 | 5 | pals_damage | — | — | Not in the API. | |
| 157 | 5 | pals_sundry | — | — | Not in the API. | |
| 162 | 1 | cons_status | Consignments[]. | string | Values: P = printed. | |
| 163 | 5 | batch | Consignments[]. | integer | ||
| 168 | 1 | xmit_flag | Consignments[]. | string | Values: Y, N. | |
| 169 | 5 | revision | Consignments[]. | integer | ||
| 174 | 8 | mesg_no | — | — | Not in the API. | |
| 182 | 7 | tran_user | Consignments[]. | string | ||
| 189 | 8 | tran_date | Consignments[]. | datetime | Combined with tran_time into one datetime. | |
| 197 | 5 | tran_time | Consignments[]. | datetime | Combined with tran_date into one datetime. | |
| 202 | 1 | pallet_btype | Consignments[]. | string | Values: S = standard, I = Ifco. | |
| 203 | 6 | Temperature | Consignments[]. | number | No reading: omit or send null, not 0. Payloads converted from flat files may carry the flat-file value 99.. | |
| 209 | 2 | Principal | Consignments[]. | string | ||
| 211 | 2 | Steri_flag | Consignments[]. | string | ||
| 213 | 2 | Steri_dest | Consignments[]. | string | ||
| 215 | 6 | Inspector | Consignments[]. | string | Inspector code. |
OK — Truck container → Consignments[].Container
One OK per OC. When a consignment has no container, send Container: null. Req applies whenever the object is sent.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 10 | load_id | Consignments[]. | integer | Internal load id only. | |
| 13 | 7 | locn_code | Consignments[]. | string | REQ | Current location. |
| 20 | 11 | container | Consignments[]. | string | REQ | Also the container of every pallet in the consignment. |
| 31 | 8 | seal_no | — | — | Replaced by Seal_no (pos 226). Use Consignments[].. | |
| 39 | 6 | position | Consignments[]. | string | ||
| 45 | 6 | ateti_no | Consignments[]. | string | If there is no ateti number, the discharge port. | |
| 51 | 8 | pro_no | Consignments[]. | integer | ||
| 59 | 13 | stuff_date | Consignments[]. | datetime | Date the container was stuffed. | |
| 72 | 6 | temp_set | Consignments[]. | number | Leave out if there is no temperature. | |
| 78 | 6 | disch_port | Consignments[]. | string | REQ | |
| 84 | 8 | cto_no | — | — | Replaced by Cto_no (pos 251). Use Consignments[].. | |
| 92 | 1 | ship_line | — | — | Replaced by Ship_line (pos 316). Use Consignments[].. | |
| 93 | 10 | doc_no | Consignments[]. | string | REQ | The consignment's ConsignmentNumber. May be "". |
| 103 | 2 | sender | Consignments[]. | string | ||
| 105 | 2 | agent | Consignments[]. | string | ||
| 107 | 2 | ship_sender | Consignments[]. | string | ||
| 109 | 2 | ship_agent | Consignments[]. | string | ||
| 111 | 2 | orgzn | Consignments[]. | string | Organisation code. | |
| 113 | 7 | load_depot | Consignments[]. | string | REQ | Current location. |
| 120 | 5 | ctn_qty | Consignments[]. | integer | Total cartons in the container. | |
| 125 | 5 | plt_qty | Consignments[]. | integer | Total pallets in the container. | |
| 130 | 7 | tk_user | — | — | Not in the API. | |
| 137 | 7 | in_user | — | — | Not in the API. | |
| 144 | 7 | in_partner | — | — | Not in the API. | |
| 151 | 8 | ryan_no | — | — | Replaced by Ryan_no (pos 261). Use Consignments[].. | |
| 159 | 1 | cont_status | Consignments[]. | string | ||
| 160 | 1 | xmit_flag | Consignments[]. | string | Values: Y, N. | |
| 161 | 5 | revision | Consignments[]. | integer | ||
| 166 | 8 | mesg_no | Consignments[]. | integer | Renamed. | |
| 174 | 7 | tran_user | Consignments[]. | string | ||
| 181 | 8 | tran_date | Consignments[]. | datetime | Combined with tran_time into one datetime. | |
| 189 | 5 | tran_time | Consignments[]. | datetime | Combined with tran_date into one datetime. | |
| 194 | 6 | ship number | Consignments[]. | string | Ship the container will be loaded on. Also the ship number of every pallet in the consignment. | |
| 200 | 1 | pallet_btype | Consignments[]. | string | Values: S = standard, I = Ifco. | |
| 201 | 1 | Container type | Consignments[]. | string | ||
| 202 | 5 | % vents | Consignments[]. | integer | Percentage of vents open. | |
| 207 | 2 | principal | Consignments[]. | string | ||
| 209 | 15 | Container_ref | — | — | Replaced by Container_Ref (pos 346). Use Consignments[].. | |
| 224 | 2 | Container_size | Consignments[]. | string | ||
| 226 | 15 | Seal_no | Consignments[]. | string | REQ | |
| 241 | 10 | Consec_no | Consignments[]. | string | ||
| 251 | 10 | Cto_no | Consignments[]. | string | ||
| 261 | 10 | Ryan_no | Consignments[]. | string | ||
| 271 | 25 | Ship name | Consignments[]. | string | ||
| 296 | 10 | Voyage no | Consignments[]. | string | ||
| 306 | 10 | Ship_call_sign | Consignments[]. | string | ||
| 316 | 2 | Ship_line | Consignments[]. | string | ||
| 318 | 1 | Verification Method | Consignments[]. | integer | SOLAS. Integer in the API (Alpha in the layout). | |
| 319 | 5 | Container Tare Weight | Consignments[]. | integer | ||
| 324 | 10 | Container Gross Mass | Consignments[]. | integer | SOLAS. Format: whole kilograms; the layout's 3 decimals are not carried. | |
| 334 | 10 | SAMSA Accreditation | Consignments[]. | string | ||
| 344 | 2 | Responsible Party | Consignments[]. | string | ||
| 346 | 25 | Container_Ref | Consignments[]. | string |
OP — Truck pallet → Consignments[].Pallets[]
One element per pallet sequence. For each SSCC, PalletQuantity must add up to 1 across all consignments (see Before you start).
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 10 | load_id | Consignments[]. | integer | Internal load id only. | |
| 13 | 9 | pallet_id | — | — | Replaced by Sscc (pos 316). Use Consignments[].. | |
| 22 | 5 | seq_no | Consignments[]. | integer | REQ | |
| 27 | 1 | unit_type | Consignments[]. | string | Values: P = pallet, C = carton. | |
| 28 | 6 | position | Consignments[]. | string | Hatch and deck, for conventional ships. | |
| 34 | 2 | sender | Consignments[]. | string | Renamed. | |
| 36 | 2 | agent | Consignments[]. | string | Renamed. | |
| 38 | 2 | Ship_sender | Consignments[]. | string | Renamed. | |
| 40 | 2 | ship_agent | Consignments[]. | string | Renamed. | |
| 42 | 2 | dest_type | Consignments[]. | string | REQ | Values: DP = depot, CU = customer, PO = port. |
| 44 | 7 | dest_locn | Consignments[]. | string | REQ | |
| 51 | 10 | cons_no | Consignments[]. | string | REQ | Must equal the parent Consignments[].. |
| 61 | 11 | container | — | — | No pallet property. Send it on Consignments[].. | |
| 72 | 1 | cont_split | — | — | Not in the API. | |
| 73 | 1 | channel | Consignments[]. | string | REQ | Values: E = export, L = local. |
| 74 | 2 | orgzn | Consignments[]. | string | REQ | Organisation code. |
| 76 | 2 | country | Consignments[]. | string | REQ | |
| 78 | 2 | comm_grp | Consignments[]. | string | ||
| 80 | 2 | commodity | Consignments[]. | string | REQ | |
| 82 | 2 | var_grp | Consignments[]. | string | ||
| 84 | 3 | variety | Consignments[]. | string | REQ | |
| 87 | 3 | sub_var | Consignments[]. | string | ||
| 90 | 3 | act_var | Consignments[]. | string | ||
| 93 | 4 | pack | Consignments[]. | string | REQ | |
| 97 | 4 | grade | Consignments[]. | string | REQ | |
| 101 | 5 | mark | Consignments[]. | string | REQ | |
| 106 | 5 | size_count | Consignments[]. | string | REQ | |
| 111 | 2 | inv_code | Consignments[]. | string | ||
| 113 | 4 | pick_ref | Consignments[]. | string | ||
| 117 | 7 | farm | Consignments[]. | string | REQ | |
| 124 | 2 | prod_grp | Consignments[]. | string | ||
| 126 | 3 | prod_char | Consignments[]. | string | ||
| 129 | 2 | targ_mkt | Consignments[]. | string | REQ | |
| 131 | 5 | ctn_qty | Consignments[]. | integer | REQ | |
| 136 | 9 | plt_qty | Consignments[]. | number | REQ | Fraction of a pallet, e.g. 0.. Per SSCC the total must be 1. |
| 145 | 1 | mixed_ind | Consignments[]. | string | REQ | Values: N = no, Y = yes, G = generic. |
| 146 | 8 | remarks | Consignments[]. | string | ||
| 154 | 4 | reason | Consignments[]. | string | ||
| 158 | 8 | intake_date | Consignments[]. | datetime | Intake date at the current location. | |
| 166 | 7 | orig_depot | Consignments[]. | string | ||
| 173 | 8 | orig_intake | Consignments[]. | datetime | Intake date at the original depot. | |
| 181 | 1 | shift | — | — | Not in the API. | |
| 182 | 8 | shift_date | — | — | Not in the API. | |
| 190 | 6 | order_no | Consignments[]. | string | Instruction the fruit was loaded out against. | |
| 196 | 7 | locn_code | Consignments[]. | string | REQ | Current location. |
| 203 | 2 | store | Consignments[]. | string | ||
| 205 | 2 | stock_pool | Consignments[]. | string | REQ | e.g. CE = certified, RJ = rejected. |
| 207 | 13 | shipped_date | Consignments[]. | datetime | Date the fruit was loaded out. | |
| 220 | 1 | xmit_flag | Consignments[]. | string | Values: Y, N. | |
| 221 | 5 | revision | Consignments[]. | integer | ||
| 226 | 8 | mesg_no | — | — | Not in the API. | |
| 234 | 7 | tran_user | Consignments[]. | string | ||
| 241 | 8 | tran_date | Consignments[]. | datetime | Combined with tran_time into one datetime. | |
| 249 | 5 | tran_time | Consignments[]. | datetime | Combined with tran_date into one datetime. | |
| 254 | 1 | pallet_btype | Consignments[]. | string | Values: S = standard, I = Ifco. | |
| 255 | 10 | orig_cons | Consignments[]. | string | Original intake document number. | |
| 265 | 6 | ship number | — | — | No pallet property. Send it on Consignments[].. | |
| 271 | 6 | temperature | Consignments[]. | number | No reading: omit or send null, not 0. Payloads converted from flat files may carry the flat-file value 99.. | |
| 277 | 9 | combo_pallet_id | — | — | Not in the API. Replaced by Combo_sscc (pos 474), which is also not in the API. | |
| 286 | 20 | temp_device_id | Consignments[]. | string | ||
| 306 | 2 | temp_device_type | Consignments[]. | string | ||
| 308 | 6 | boe_no | Consignments[]. | string | Bill of entry number. | |
| 314 | 2 | principal | Consignments[]. | string | ||
| 316 | 18 | Sscc | Consignments[]. | string | REQ | Pallet id. The part-pallet rule is checked per SSCC. |
| 334 | 9 | Nett mass | Consignments[]. | number | Format: kg, up to 3 decimals. | |
| 343 | 16 | Saftbin1 | — | — | Not in the API. | |
| 359 | 16 | Saftbin2 | — | — | Not in the API. Grape perforation value. | |
| 375 | 16 | Saftbin3 | — | — | Not in the API. | |
| 391 | 6 | Orig_account | Consignments[]. | string | ||
| 397 | 8 | Inspec_date | Consignments[]. | datetime | ||
| 405 | 1 | Stack_variance | Consignments[]. | string | REQ | May be "". |
| 406 | 1 | Store_type | Consignments[]. | string | ||
| 407 | 20 | Batch_no | Consignments[]. | string | ||
| 427 | 10 | Waybill_no | Consignments[]. | string | ||
| 437 | 14 | Gtin | Consignments[]. | string | ||
| 451 | 7 | Packh_code | Consignments[]. | string | REQ | May be "". |
| 458 | 2 | Steri_flag | Consignments[]. | string | ||
| 460 | 2 | Steri_dest | Consignments[]. | string | ||
| 462 | 1 | Label_type | Consignments[]. | string | ||
| 463 | 1 | Prov_flag | Consignments[]. | string | Provisional intake. | |
| 464 | 10 | SellbyCode | Consignments[]. | string | ||
| 474 | 18 | Combo_sscc | — | — | Not in the API. | |
| 492 | 6 | Inspector | Consignments[]. | string | Inspector code. | |
| 498 | 6 | Inspect_pnt | Consignments[]. | string | ||
| 504 | 10 | Expiry-code | Consignments[]. | string | ||
| 514 | 15 | Orchard | Consignments[]. | string | REQ | May be "". |
| 529 | 5 | Target_region | Consignments[]. | string | REQ | May be "". |
| 534 | 2 | Target_country | Consignments[]. | string | REQ | May be "". |
| 536 | 20 | Global_gap_number | Consignments[]. | string | ||
| 556 | 20 | Lot_no | Consignments[]. | string | ||
| 576 | 20 | Traceability_code | Consignments[]. | string | ||
| 596 | 4 | Season | Consignments[]. | string | REQ | |
| 600 | 8 | Orig_inspec_date | Consignments[]. | datetime | ||
| 608 | 10 | Inner_pack | Consignments[]. | string | ||
| 618 | 5 | Inner_cartons | Consignments[]. | string | Send as a string. | |
| 623 | 20 | Production_id | Consignments[]. | string | Send the same value in Consignments[].. | |
| 643 | 2 | Protocol_exception_indicator | Consignments[]. | string | ||
| 645 | 25 | UPN | Consignments[]. | string | ||
| 670 | 30 | Pallet_treatment | Consignments[]. | string | IPPC treatment code. | |
| 700 | 10 | Pallet Gross Mass | Consignments[]. | number | SOLAS. Send on the first sequence of the pallet only. | |
| 710 | 10 | SAMSA Accreditation | Consignments[]. | string | ||
| 720 | 7 | Weighing Location | Consignments[]. | string | ||
| 727 | 13 | Weighing Date Time | Consignments[]. | datetime | ||
| 740 | 2 | Main Area | Consignments[]. | string | ||
| 742 | 16 | Production Area | Consignments[]. | string | ||
| 758 | 10 | Phyto_data | Consignments[]. | string | Format: 2-char protocol + 2-char FMS pallet status + 6 spaces. | |
| 768 | 40 | Cust_ord | Consignments[]. | string | Customer order number. | |
| 808 | 10 | Re_inspec_doc | Consignments[]. | string | PPECB re-inspection document number. | |
| 818 | 10 | eLot_Key | — | — | Replaced by eLot_Key (pos 998). Use Consignments[].. | |
| 828 | 10 | Agreement code | Consignments[]. | string | ||
| 838 | 140 | Post Treatment | Consignments[]. | string | ||
| 978 | 20 | Reference Number | Consignments[]. | string | ||
| 998 | 15 | eLot_Key | Consignments[]. | string |
BT — Batch trailer → not in the API
The API has no trailer. Counts and totals come from the arrays themselves.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | record type | — | — | Not in the API. | |
| 3 | 3 | network address | — | — | Not in the API. Sent once as LocationId. | |
| 6 | 6 | batch number | — | — | Not in the API. Sent once as BatchNumber. | |
| 12 | 7 | record count | — | — | Not in the API. | |
| 19 | 5 | OH count | — | — | Not in the API. | |
| 24 | 5 | OL count | — | — | Not in the API. | |
| 29 | 5 | OC count | — | — | Not in the API. | |
| 34 | 5 | OK count | — | — | Not in the API. | |
| 39 | 5 | OP count | — | — | Not in the API. | |
| 44 | 8 | total carton count | — | — | Not in the API. | |
| 52 | 9 | total pallet count | — | — | Not in the API. |
API-only properties
| JSON property | Type | Meaning / what to send |
|---|---|---|
LocationCode | string | Required. Paltrack depot code of the sending depot. Must be registered with Paltrack. |
POPreviousFileName | string | Optional. The previous file name, when this is a re-submission. |
Consignments[]. | string | Inspection point for the consignment. No OC layout field. |
Consignments[]. | string | Send the same value as Consignments[]. (Production_id, pos 623). |
Consignments[]. | datetime | Next re-inspection date. No layout field. |
Consignments[]. | boolean | Inspection passed (true) or failed (false). No layout field. |
Consignments[]. | string | Principal producer code. No layout field. |
Consignments[]. | string | Principal producer description. No layout field. |
Consignments[]. | string | Paltrack sets it; do not send. |
Not in the API
Old fields that have a newer replacement are not listed here; the Notes column gives the field to use.
- BH: indicator.
- OH: tk_date, tk_user, user_id, partner_id, mesg_no.
- OL: mesg_no.
- OC: inc_pallet, allow_code, allow_del, liner_bd, plas_cover, spoor_load, repack_flag, endorse1–endorse4, mix_cnt_pals, cons_count, pals_unstable, pals_damage, pals_sundry, mesg_no.
- OK: tk_user, in_user, in_partner.
- OP: cont_split, shift, shift_date, mesg_no, combo_pallet_id, Combo_sscc, Saftbin1, Saftbin2, Saftbin3. Mini-pallet (combo) links cannot be sent. The pallet's container and ship number have no pallet property; they come from
Consignments[].Container. - BT: the batch trailer is not in the API. No record counts or totals are sent.
PI — Intake
Cold-store intakes are submitted with POST /v2/SubmitIntake, with a PIFileDTO request body. Recipients get the same shape back from POST /v1/GetPayload. This section maps every field of the PI flat-file layout (v1.24, 17 November 2022) to its JSON property.
Shape
| Flat-file record | JSON object | Occurs |
|---|---|---|
| (file name) | PIFileName | 1 |
| BH — Batch header | PIFileDTO (root properties) | 1 |
| IC — In consignment | Documents[] | 1..n |
| IC transport fields (pos 221–366 and 381) | Documents[]. | 0..1 per document |
| IS — In summary (fspec) | — | Not in the API |
| IP — In pallet | Documents[]. | 0..n per document |
| EV — Evaluation | — | Not in the API |
| PM — Pallet movement | PalletMovements[] | 0..n per file |
| Dummy IC records before BT | — | Not applicable |
| BT — Batch trailer | — | Not in the API |
- The IS (summary) and EV (evaluation) records are not in the API. There is no summary or evaluation object in
PIFileDTO. - PM (pallet movement) records go in
PalletMovements[]at file level, not under a document. - Pallets sit directly under their document. The IS level between IC and IP falls away.
Pallets[]has one element per pallet sequence (SSCC +SequenceNumber). Each element still carriesDocumentNumber,Organisation,LocationCodeandLoadId.TransferInDetailsis a single object, not an array. Sendnullwhen there are no transport details.- Send only real documents. The dummy IC records that some flat files carry before BT have no place in the API.
Before you start
- IS and EV records are not in the API. Anyone who needs fspec summaries works them out from
Pallets[]. Evaluation results cannot be sent. - Send every PM record as a
PalletMovements[]element.HistoryTypeandSSCCare required on each. Put the SSCC after the movement inNewSSCC. PopulateOrganisation: movements are routed on their own fields, so a movement with a blank organisation does not reach recipients that receive by organisation. PIFileNameis required and must follow the flat-file conventionPIxxxyyy.zzz, wherexxxis your network address. Paltrack uses the name to route the intake to recipients.- Root
LocationCodeis required and must be a depot registered with Paltrack.LocationIdis used to find the depot whenLocationCodedoes not match directly. Send at least one document or one pallet movement. A file of movements only has an emptyDocuments. - Populate
Pallets[].Organisationon every pallet. Routing uses the pallet's organisation, not the document's. A pallet with a blank organisation does not reach recipients that receive by organisation. Use the same value asDocuments[].Organisation. Pallets[].DocumentNumbermust equal the parentDocuments[].DocumentNumber.Pallets[].SequenceNumberis required on every pallet and must be 1 or more.- No part pallets. Send
SSCCandPalletQuantityon every pallet. For eachSSCC, the sum ofPalletQuantityover its sequences must be 1 (±0.001), or the payload is rejected withPART_PALLET. Documents[].DocumentDateandDocuments[].RailDateare strings, not datetimes. Send them in ISO 8601, e.g.2026-09-30T00:00:00. All other dates aredatetimeproperties and also take ISO 8601; each layout date + time pair is one property.Documents[].InspectTemperatureandDocuments[].Batchare strings too. Always sendDocuments[].TransactionDate.
BH — Batch header → PIFileDTO (root)
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| — | — | File name | PIFileName | string | REQ | Format: PIxxxyyy. (xxx = your network address). |
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 3 | network Address | LocationId | string | Your network address (the xxx in the file name). | |
| 6 | 6 | batch Number | BatchNumber | string | Send as a string. | |
| 12 | 8 | create date | CreateDateTime | datetime | Combined with create time into one datetime. Spelt CreateDateTime here (PO uses CreatedDateTime). | |
| 20 | 8 | create time | CreateDateTime | datetime | Combined with create date into one datetime. | |
| 28 | 30 | provider | Provider | string | Name of the submitting system. | |
| 58 | 30 | version number | Version | string | Version of the submitting system. |
IC — In consignment → Documents[] and Documents[].TransferInDetails
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 10 | load_id | — | — | Not in the API. The pallet-level load id is Documents[].. | |
| 13 | 2 | location type | — | — | Not in the API. | |
| 15 | 7 | location code | Documents[]. | string | Defaults to root LocationCode when omitted. | |
| 22 | 10 | document number | Documents[]. | string | Consignment number. | |
| 32 | 1 | truck level | — | — | Not in the API. | |
| 33 | 2 | organisation | Documents[]. | string | Send the same value on every pallet (Pallets[].). | |
| 35 | 2 | document type | Documents[]. | string | Values: TI = transfer in, FI = first intake. | |
| 37 | 8 | document date | Documents[]. | string | Send as a string. Format: ISO 8601, e.g. 2026-09-30T00:00:00. | |
| 45 | 8 | rail date | Documents[]. | string | Send as a string. Format: ISO 8601, e.g. 2026-09-30T00:00:00. | |
| 53 | 6 | account | Documents[]. | string | ||
| 59 | 1 | channel | Documents[]. | string | ||
| 60 | 5 | pro_no | — | — | Not in the API. | |
| 65 | 8 | carton quantity | Documents[]. | integer | ||
| 73 | 9 | pallet quantity | Documents[]. | number | Format: decimal, e.g. 8.. | |
| 82 | 8 | full pallet | — | — | Not in the API. | |
| 90 | 8 | inc_pallet | — | — | Not in the API. | |
| 98 | 4 | season | Documents[]. | string | ||
| 102 | 10 | client_ref | Documents[]. | string | ||
| 112 | 2 | endorse1 | — | — | Not in the API. | |
| 114 | 2 | endorse2 | — | — | Not in the API. | |
| 116 | 2 | endorse3 | — | — | Not in the API. | |
| 118 | 2 | endorse4 | — | — | Not in the API. | |
| 120 | 6 | order_no | Documents[]. | string | ||
| 126 | 2 | from location type | Documents[]. | string | ||
| 128 | 7 | from location code | Documents[]. | string | ||
| 135 | 1 | document status | Documents[]. | string | ||
| 136 | 4 | inspector | Documents[]. | string | ||
| 140 | 1 | inspector flag | Documents[]. | boolean | Format: true / false (flat file Y / N). | |
| 141 | 8 | inspection date | Documents[]. | datetime | Combined with inspection time into one datetime. | |
| 149 | 5 | inspection time | Documents[]. | datetime | Combined with inspection date into one datetime. | |
| 154 | 4 | inspection point | Documents[]. | string | ||
| 158 | 6 | inspection report | Documents[]. | string | ||
| 164 | 6 | Evaluation FROM number | — | — | Not in the API. | |
| 170 | 6 | Evaluation TO number | — | — | Not in the API. | |
| 176 | 6 | Temperature | Documents[]. | number | No reading: omit or send null, not 0. | |
| 182 | 5 | Batch (=Eval Quantity) | Documents[]. | string | Send as a string. | |
| 187 | 1 | Transmission Flag | Documents[]. | boolean | Paltrack sets it; do not send. | |
| 188 | 5 | Revision Number | Documents[]. | integer | ||
| 193 | 8 | Message Number (Inspect Samples) | — | — | Not in the API. | |
| 201 | 7 | Transaction User | Documents[]. | string | ||
| 208 | 8 | Transaction Date | Documents[]. | datetime | Combined with Transaction Time into one datetime. Always send it. | |
| 216 | 5 | Transaction Time | Documents[]. | datetime | Combined with Transaction Date into one datetime. | |
| 221 | 10 | Load Reference | Documents[]. | string | ||
| 231 | 25 | Load Name | Documents[]. | string | ||
| 256 | 1 | Transport Type | Documents[]. | string | ||
| 257 | 1 | Truck Type | Documents[]. | string | ||
| 258 | 8 | Arrival Date | Documents[]. | datetime | Combined with Arrival Time into one datetime. | |
| 266 | 5 | Arrival Time | Documents[]. | datetime | Combined with Arrival Date into one datetime. | |
| 271 | 2 | Intake Point | Documents[]. | string | ||
| 273 | 8 | Carrier | Documents[]. | string | ||
| 281 | 9 | Pallet Quantity | — | — | Not in the API. Same value as pos 73; use Documents[].. | |
| 290 | 8 | Carton Quantity | — | — | Not in the API. Same value as pos 65; use Documents[].. | |
| 298 | 12 | Truck Number | Documents[]. | string | ||
| 310 | 1 | Fully Loaded | Documents[]. | boolean | Format: true / false (flat file Y / N). | |
| 311 | 1 | Instruction Type | Documents[]. | string | ||
| 312 | 6 | Master Order Number | Documents[]. | string | ||
| 318 | 10 | Client Reference | Documents[]. | string | Second client reference. The first is Documents[]. (pos 102). | |
| 328 | 8 | Trip Number | Documents[]. | string | ||
| 336 | 6 | Temperature1 | Documents[]. | number | Renamed. The API has one transport temperature, not four. | |
| 342 | 6 | Temperature2 | — | — | Not in the API. | |
| 348 | 6 | Temperature3 | — | — | Not in the API. | |
| 354 | 6 | Temperature4 | — | — | Not in the API. | |
| 360 | 1 | Load Type | Documents[]. | string | ||
| 361 | 6 | Ship Number | Documents[]. | string | ||
| 367 | 5 | Orchard | Documents[]. | string | ||
| 372 | 8 | Reference number | Documents[]. | string | ||
| 380 | 1 | Pallet Base Type | Documents[]. | string | ||
| 381 | 6 | Bill of Entry Number | Documents[]. | string | Sits in TransferInDetails, not on the document. | |
| 387 | 6 | Inspec Temperature | Documents[]. | string | Send as a string, e.g. "4.. | |
| 393 | 2 | Principal | Documents[]. | string | ||
| 395 | 8 | Phyto date | Documents[]. | datetime | ||
| 403 | 7 | Waybill no | — | — | Replaced by Waybill no (pos 437). Use Documents[].. | |
| 410 | 10 | Lot no | Documents[]. | string | ||
| 420 | 7 | Packh_code | Documents[]. | string | Capital H here; the pallet property is PackhouseCode. | |
| 427 | 10 | SellbyCode | Documents[]. | string | ||
| 437 | 10 | Waybill no | Documents[]. | string | Capital B here; the pallet property is WaybillNumber. |
IS — In summary (fspec) → not in the API
The IS record is not in the API. There is no summary object, and none of its fields can be sent. Recipients get pallet lines only; summaries can be worked out from Documents[].Pallets[].
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | Record Type | — | — | Not in the API. | |
| 3 | 10 | Load Id | — | — | Not in the API. | |
| 13 | 2 | Location Type | — | — | Not in the API. | |
| 15 | 7 | Location Code | — | — | Not in the API. | |
| 22 | 10 | Document Number | — | — | Not in the API. | |
| 32 | 1 | Channel | — | — | Not in the API. | |
| 33 | 2 | Organisation | — | — | Not in the API. | |
| 35 | 2 | Country | — | — | Not in the API. | |
| 37 | 2 | Commodity Group | — | — | Not in the API. | |
| 39 | 2 | Commodity | — | — | Not in the API. | |
| 41 | 2 | Variety Group | — | — | Not in the API. | |
| 43 | 3 | Variety | — | — | Not in the API. | |
| 46 | 3 | Sub Variety | — | — | Not in the API. | |
| 49 | 3 | Actual Variety | — | — | Not in the API. | |
| 52 | 4 | Pack | — | — | Not in the API. | |
| 56 | 4 | Grade | — | — | Not in the API. | |
| 60 | 5 | Mark | — | — | Not in the API. | |
| 65 | 5 | Count | — | — | Not in the API. | |
| 70 | 2 | Inventory Code | — | — | Not in the API. | |
| 72 | 4 | Picking Refernce | — | — | Not in the API. | |
| 76 | 7 | Farm / from code | — | — | Not in the API. | |
| 83 | 2 | Product Group | — | — | Not in the API. | |
| 85 | 3 | Product Characteristic | — | — | Not in the API. | |
| 88 | 2 | Target Market | — | — | Not in the API. | |
| 90 | 4 | Actual Grade | — | — | Not in the API. | |
| 94 | 5 | Cartons on document | — | — | Not in the API. | |
| 99 | 5 | Intake carton quantity | — | — | Not in the API. | |
| 104 | 9 | Pallet Quantity | — | — | Not in the API. | |
| 113 | 1 | Passed Flag | — | — | Not in the API. | |
| 114 | 4 | Reason | — | — | Not in the API. | |
| 118 | 5 | Cartons Rejected | — | — | Not in the API. | |
| 123 | 5 | Cartons Discarded | — | — | Not in the API. | |
| 128 | 5 | Cartons Evaluation | — | — | Not in the API. | |
| 133 | 1 | Mix indicator | — | — | Not in the API. | |
| 134 | 5 | Cartons Damaged | — | — | Not in the API. | |
| 139 | 5 | Cartons from buildup | — | — | Not in the API. | |
| 144 | 1 | Transmission flag | — | — | Not in the API. | |
| 145 | 5 | Revision number | — | — | Not in the API. | |
| 150 | 8 | Message number | — | — | Not in the API. | |
| 158 | 7 | Transaction User | — | — | Not in the API. | |
| 165 | 8 | Transaction Date | — | — | Not in the API. | |
| 173 | 5 | Transaction Time | — | — | Not in the API. | |
| 178 | 5 | Cartons Residue | — | — | Not in the API. | |
| 183 | 1 | Pallet Base Type | — | — | Not in the API. | |
| 184 | 2 | Principal | — | — | Not in the API. | |
| 186 | 15 | Orchard | — | — | Not in the API. |
IP — In pallet → Documents[].Pallets[]
One element per pallet sequence, nested under its document.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | Record Type | — | — | Implied by the object; no property. | |
| 3 | 10 | Load Id | Documents[]. | string | Send as a string. | |
| 13 | 2 | Location Type | Documents[]. | string | Values: DP = depot. | |
| 15 | 7 | Location Code | Documents[]. | string | Defaults to Documents[]. when omitted. | |
| 22 | 10 | Document Number | Documents[]. | string | Must equal the parent Documents[].. | |
| 32 | 9 | Pallet id | — | — | Replaced by Sscc (pos 286). Use Documents[].. | |
| 41 | 5 | Sequence Number | Documents[]. | integer | REQ | Must be 1 or more. |
| 46 | 1 | Unit type | Documents[]. | string | ||
| 47 | 6 | Position | Documents[]. | string | ||
| 53 | 2 | Sender | Documents[]. | string | ||
| 55 | 2 | Agent | — | — | Not in the API. | |
| 57 | 11 | Container Number | Documents[]. | string | ||
| 68 | 1 | Channel | Documents[]. | string | ||
| 69 | 2 | Organisation | Documents[]. | string | Populate on every pallet. See Before you start. | |
| 71 | 2 | Country | Documents[]. | string | ||
| 73 | 2 | Commodity Group | Documents[]. | string | ||
| 75 | 2 | Commodity | Documents[]. | string | ||
| 77 | 2 | Variety Group | Documents[]. | string | ||
| 79 | 3 | Variety | Documents[]. | string | ||
| 82 | 3 | Sub Variety | Documents[]. | string | ||
| 85 | 3 | Actual Variety | Documents[]. | string | ||
| 88 | 4 | Pack | Documents[]. | string | ||
| 92 | 4 | Grade | Documents[]. | string | ||
| 96 | 5 | Mark | Documents[]. | string | ||
| 101 | 5 | Count | Documents[]. | string | Renamed. | |
| 106 | 2 | Inventory Code | Documents[]. | string | ||
| 108 | 4 | Picking Reference | Documents[]. | string | ||
| 112 | 7 | Farm / from_code | Documents[]. | string | Renamed. | |
| 119 | 2 | Product Group | Documents[]. | string | ||
| 121 | 3 | Product Characteristic | Documents[]. | string | ||
| 124 | 2 | Target Market | Documents[]. | string | ||
| 126 | 4 | Actual Grade | — | — | Not in the API. | |
| 130 | 5 | Carton Quantity | Documents[]. | integer | ||
| 135 | 9 | Pallet Quantity | Documents[]. | number | REQ | Fraction of a pallet, e.g. 0.. Required on every pallet with an SSCC; per SSCC the total must be 1. |
| 144 | 1 | Mixed Indicator | Documents[]. | string | ||
| 145 | 8 | Remarks | Documents[]. | string | ||
| 153 | 4 | Reason | Documents[]. | string | ||
| 157 | 8 | Intake Date | Documents[]. | datetime | Combined with Intake Time into one datetime. | |
| 165 | 5 | Intake Time | Documents[]. | datetime | Combined with Intake Date into one datetime. | |
| 170 | 2 | Intake Point | — | — | Not in the API at pallet level. The document-level value is Documents[].. | |
| 172 | 7 | Original Intake Depot | Documents[]. | string | Renamed. Use this, not OriginalIntakeDepot. | |
| 179 | 8 | Original Intake Date | Documents[]. | datetime | Renamed. | |
| 187 | 6 | Order Number | Documents[]. | string | ||
| 193 | 2 | Stock Pool | Documents[]. | string | ||
| 195 | 6 | Temperature | Documents[]. | number | No reading: omit or send null, not 0. | |
| 201 | 1 | Pallet Marks | Documents[]. | string | ||
| 202 | 1 | Transmission flag | — | — | Not in the API. Paltrack sets it. | |
| 203 | 5 | Revision number | Documents[]. | integer | ||
| 208 | 8 | Message number | — | — | Not in the API. | |
| 216 | 7 | Transaction User | Documents[]. | string | ||
| 223 | 8 | Transaction Date | Documents[]. | datetime | Combined with Transaction Time into one datetime. | |
| 231 | 5 | Transaction Time | Documents[]. | datetime | Combined with Transaction Date into one datetime. | |
| 236 | 5 | Cartons Rejected | — | — | Not in the API. | |
| 241 | 5 | Cartons Discarded | — | — | Not in the API. | |
| 246 | 5 | Cartons Evaluation | — | — | Not in the API. | |
| 251 | 1 | Mix indicator | — | — | Not in the API. | |
| 252 | 1 | Pallet Base Type | Documents[]. | string | ||
| 253 | 9 | Combo pallet id | — | — | Not in the API. Replaced by Combo_sscc (pos 452), which is also not in the API. | |
| 262 | 20 | Temperature Device ID | Documents[]. | string | ||
| 282 | 2 | Temperature Device Type | Documents[]. | string | ||
| 284 | 2 | Principal | Documents[]. | string | ||
| 286 | 18 | Sscc | Documents[]. | string | Pallet id. Send on every pallet; the part-pallet rule is checked per SSCC. | |
| 304 | 9 | Nett mass | Documents[]. | number | Format: kg, up to 3 decimals, e.g. 1317.. | |
| 313 | 16 | Saftbin1 | — | — | Not in the API. | |
| 329 | 16 | Saftbin2 | — | — | Not in the API. Grape perforation value. | |
| 345 | 16 | Saftbin3 | — | — | Not in the API. | |
| 361 | 6 | Orig_account | Documents[]. | string | ||
| 367 | 8 | Inspec_date | Documents[]. | datetime | ||
| 375 | 1 | Stack_variance | Documents[]. | string | ||
| 376 | 1 | Store_type | Documents[]. | string | Lower-case t (Storetype). | |
| 377 | 20 | Batch_no | Documents[]. | string | ||
| 397 | 10 | Waybill_no | Documents[]. | string | ||
| 407 | 14 | Gtin | Documents[]. | string | ||
| 421 | 7 | Packh_code | Documents[]. | string | Lower-case h here; the document property is PackHouseCode. | |
| 428 | 2 | Steri_flag | Documents[]. | string | ||
| 430 | 2 | Steri_dest | Documents[]. | string | ||
| 432 | 1 | Label_type | Documents[]. | string | ||
| 433 | 1 | Prov flag | Documents[]. | boolean | Provisional intake. Format: true / false (flat file Y / N). | |
| 434 | 10 | SellbyCode | Documents[]. | string | ||
| 444 | 8 | Orchard | — | — | Replaced by Orchard (pos 480). Use Documents[].. | |
| 452 | 18 | Combo_sscc | — | — | Not in the API. | |
| 470 | 10 | Expiry_code | — | — | Not in the API. | |
| 480 | 15 | Orchard | Documents[]. | string | ||
| 495 | 5 | Target_region | Documents[]. | string | ||
| 500 | 2 | Target_country | Documents[]. | string | ||
| 502 | 20 | Global_gap_number | Documents[]. | string | ||
| 522 | 20 | Lot_no | Documents[]. | string | ||
| 542 | 20 | Traceability_code | Documents[]. | string | ||
| 562 | 4 | Season | Documents[]. | string | If omitted, Documents[]. is used. | |
| 566 | 8 | Orig_inspec_date | Documents[]. | datetime | ||
| 574 | 10 | Inner_pack | — | — | Not in the API. | |
| 584 | 5 | Inner_cartons | — | — | Not in the API. | |
| 589 | 20 | Production_id | Documents[]. | string | Renamed. | |
| 609 | 2 | Protocol_exception_indicator | — | — | Not in the API. | |
| 611 | 25 | UPN | Documents[]. | string | ||
| 636 | 10 | Original Document Number | Documents[]. | string | Renamed. Consignment note number presented at first inspection. | |
| 646 | 30 | Pallet_treatment | Documents[]. | string | IPPC treatment code. | |
| 676 | 10 | Pallet Gross Mass | Documents[]. | number | SOLAS. Send on the first sequence of the pallet only. | |
| 686 | 7 | Weighing Location | Documents[]. | string | ||
| 693 | 13 | Weighing Date Time | Documents[]. | datetime | ||
| 706 | 10 | Phyto_data | Documents[]. | string | Format: 2-char protocol + 2-char FMS pallet status + 6 spaces. | |
| 716 | 40 | Cust_ord | Documents[]. | string | Customer order number. | |
| 756 | 10 | eLot_Key | — | — | Replaced by eLot_Key (pos 916). Use Documents[].. | |
| 766 | 10 | Agreement Code | Documents[]. | string | ||
| 776 | 140 | Post Treatment | Documents[]. | string | ||
| 916 | 15 | eLot_Key | Documents[]. | string |
EV — Evaluation → not in the API
The EV record is not in the API. Evaluation results cannot be sent.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | Record Type | — | — | Not in the API. | |
| 3 | 9 | Pallet id | — | — | Not in the API. | |
| 12 | 8 | Evaluation id | — | — | Not in the API. | |
| 20 | 5 | Size/Count | — | — | Not in the API. | |
| 25 | 7 | Transaction User | — | — | Not in the API. | |
| 32 | 8 | Transaction Date | — | — | Not in the API. | |
| 40 | 5 | Transaction Time | — | — | Not in the API. |
PM — Pallet movement → PalletMovements[]
Pallet movements sit at file level, not under a document: one element per PM record. A movement is routed on its own fields, by the same split rules as pallets, so a recipient receives only the movements that match its rules. A payload can carry movements with no documents.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | Record Type | — | — | Implied by the object; no property. | |
| 3 | 10 | Load Id | — | — | Not in the API. The consignment is in DocumentNumber. | |
| 13 | 2 | Location Type | PalletMovements[]. | string | ||
| 15 | 7 | Location Code | PalletMovements[]. | string | Blank: the root LocationCode is used for routing. | |
| 22 | 10 | Document Number | PalletMovements[]. | string | The consignment the movement belongs to. It need not be one of the file's Documents[]. | |
| 32 | 9 | Orig Pallet id | — | — | Replaced by SSCC (pos 306). Use PalletMovements[].. | |
| 41 | 5 | Sequence Number | PalletMovements[]. | integer | ||
| 46 | 1 | Unit type | PalletMovements[]. | string | ||
| 47 | 6 | Position | PalletMovements[]. | string | ||
| 53 | 2 | Sender | PalletMovements[]. | string | ||
| 55 | 2 | Agent | PalletMovements[]. | string | Renamed. | |
| 57 | 11 | Container Number | PalletMovements[]. | string | ||
| 68 | 1 | Channel | PalletMovements[]. | string | ||
| 69 | 2 | Organisation | PalletMovements[]. | string | Routing uses it. A movement with a blank organisation does not reach recipients that receive by organisation. | |
| 71 | 2 | Country | PalletMovements[]. | string | ||
| 73 | 2 | Commodity Group | PalletMovements[]. | string | ||
| 75 | 2 | Commodity | PalletMovements[]. | string | ||
| 77 | 2 | Variety Group | PalletMovements[]. | string | ||
| 79 | 3 | Variety | PalletMovements[]. | string | ||
| 82 | 3 | Sub Variety | PalletMovements[]. | string | ||
| 85 | 3 | Actual Variety | PalletMovements[]. | string | ||
| 88 | 4 | Pack | PalletMovements[]. | string | ||
| 92 | 4 | Grade | PalletMovements[]. | string | ||
| 96 | 5 | Mark | PalletMovements[]. | string | ||
| 101 | 5 | Count | PalletMovements[]. | string | Renamed. | |
| 106 | 2 | Inventory Code | PalletMovements[]. | string | ||
| 108 | 4 | Picking Reference | PalletMovements[]. | string | ||
| 112 | 7 | Farm / from_code | PalletMovements[]. | string | Renamed. | |
| 119 | 2 | Product Group | PalletMovements[]. | string | ||
| 121 | 3 | Product Characteristic | PalletMovements[]. | string | ||
| 124 | 2 | Target Market | PalletMovements[]. | string | ||
| 126 | 4 | Actual Grade | — | — | Not in the API. | |
| 130 | 5 | Carton Quantity | PalletMovements[]. | integer | ||
| 135 | 9 | Pallet Quantity | PalletMovements[]. | number | Fraction of a pallet. The part-pallet rule does not apply to movements. | |
| 144 | 1 | Mixed Indicator | PalletMovements[]. | string | ||
| 145 | 8 | Remarks | PalletMovements[]. | string | ||
| 153 | 4 | Reason | PalletMovements[]. | string | ||
| 157 | 8 | Intake Date | PalletMovements[]. | datetime | Combined with Intake Time into one datetime. | |
| 165 | 5 | Intake Time | PalletMovements[]. | datetime | Combined with Intake Date into one datetime. | |
| 170 | 2 | Intake Point | PalletMovements[]. | string | ||
| 172 | 7 | Original Intake Depot | PalletMovements[]. | string | Renamed. | |
| 179 | 8 | Original Intake Date | PalletMovements[]. | datetime | Renamed. | |
| 187 | 6 | Order Number | PalletMovements[]. | string | ||
| 193 | 2 | Stock Pool | PalletMovements[]. | string | ||
| 195 | 6 | Temperature | PalletMovements[]. | number | No reading: omit it or send null, not 0 or 99.. | |
| 201 | 1 | Pallet Marks | PalletMovements[]. | string | ||
| 202 | 1 | Transmission flag | — | — | Not in the API (Paltrack internal; leave blank in flat files too). | |
| 203 | 5 | Revision number | PalletMovements[]. | integer | Renamed. | |
| 208 | 8 | Message number | PalletMovements[]. | integer | ||
| 216 | 7 | Transaction User | PalletMovements[]. | string | ||
| 223 | 8 | Transaction Date | PalletMovements[]. | datetime | Combined with Transaction Time into one datetime. | |
| 231 | 5 | Transaction Time | PalletMovements[]. | datetime | Combined with Transaction Date into one datetime. | |
| 236 | 5 | Cartons Rejected | — | — | Not in the API. | |
| 241 | 5 | Cartons Discarded | — | — | Not in the API. | |
| 246 | 5 | Cartons Evaluation | — | — | Not in the API. | |
| 251 | 1 | Mox indicator | — | — | Not in the API. | |
| 252 | 1 | Pallet Base Type | PalletMovements[]. | string | ||
| 253 | 10 | Original Document Number | PalletMovements[]. | string | Renamed. | |
| 263 | 2 | History Type | PalletMovements[]. | string | REQ | The pallet history type code of the movement. |
| 265 | 8 | Cold Date | PalletMovements[]. | datetime | ||
| 273 | 9 | New Pallet ID | — | — | Replaced by New_SSCC (pos 324). Use PalletMovements[].. | |
| 282 | 20 | Temperature Device ID | PalletMovements[]. | string | ||
| 302 | 2 | Temp Device Type | PalletMovements[]. | string | ||
| 304 | 2 | Principal | PalletMovements[]. | string | ||
| 306 | 18 | SSCC | PalletMovements[]. | string | REQ | The pallet's SSCC before the movement. |
| 324 | 18 | New_SSCC (orig pallet_id) | PalletMovements[]. | string | The pallet's SSCC after the movement. Send the same value as SSCC when the SSCC did not change. | |
| 342 | 14 | GTIN | PalletMovements[]. | string | ||
| 356 | 5 | Err Sequence | PalletMovements[]. | integer | Renamed. | |
| 361 | 18 | Pallet_id | — | — | Replaced by SSCC (pos 306). Use PalletMovements[].. | |
| 379 | 6 | Average temperature | — | — | Not in the API. | |
| 385 | 6 | Max temperature | — | — | Not in the API. | |
| 391 | 5 | Above hours | — | — | Not in the API. | |
| 396 | 6 | Mininum temperature | — | — | Not in the API. | |
| 402 | 5 | Below hours | — | — | Not in the API. | |
| 407 | 6 | Truck setting | — | — | Not in the API. | |
| 413 | 7 | Location code | — | — | Not in the API. Same as Location Code (pos 15). | |
| 420 | 1 | Xmit flag | — | — | Not in the API (Paltrack internal; leave blank in flat files too). | |
| 421 | 7 | Tran user | — | — | Not in the API. Same as Transaction User (pos 216). | |
| 428 | 5 | Tran time | — | — | Not in the API. Same as Transaction Time (pos 231). | |
| 433 | 8 | Tran date | — | — | Not in the API. Same as Transaction Date (pos 223). | |
| 441 | 1 | Download | — | — | Not in the API (Paltrack internal; leave blank in flat files too). | |
| 442 | 20 | Prodution_id | PalletMovements[]. | string | Renamed. | |
| 462 | 2 | Protocol_exception_indicator | — | — | Not in the API. | |
| 464 | 4 | Inspector | PalletMovements[]. | string | ||
| 468 | 1 | (re)inspection_flag | PalletMovements[]. | string | As recorded at the depot. | |
| 469 | 8 | (re)inspection_date | PalletMovements[]. | datetime | Combined with (re)inspection_time into one datetime. | |
| 477 | 5 | (re)inspection_time | PalletMovements[]. | datetime | Combined with (re)inspection_date into one datetime. | |
| 482 | 4 | (re)inspection_point | PalletMovements[]. | string | ||
| 486 | 10 | (re)inspection_report | PalletMovements[]. | string | ||
| 496 | 5 | (re)inspection_target_region | PalletMovements[]. | string | ||
| 501 | 2 | (re)inspection_target_country | PalletMovements[]. | string | ||
| 503 | 25 | UPN | PalletMovements[]. | string | ||
| 528 | 15 | Orchard | PalletMovements[]. | string | ||
| 543 | 30 | Pallet_treatment | PalletMovements[]. | string | ||
| 573 | 7 | Packh_code | PalletMovements[]. | string | Renamed. | |
| 580 | 10 | Phyto_data | PalletMovements[]. | string | ||
| 590 | 40 | Cust_ord | PalletMovements[]. | string | Renamed. | |
| 630 | 16 | SAFTBIN2 | PalletMovements[]. | string | Renamed. The inner pack description. |
BT — Batch trailer → not in the API
The API has no trailer. Counts and totals come from the arrays themselves.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1 | 2 | Record Type | — | — | Not in the API. | |
| 3 | 3 | Network Address | — | — | Not in the API. Sent once as LocationId. | |
| 6 | 6 | Batch Number | — | — | Not in the API. Sent once as BatchNumber. | |
| 12 | 7 | Record Count | — | — | Not in the API. | |
| 19 | 5 | IC Record Count | — | — | Not in the API. | |
| 24 | 5 | IS Record Count | — | — | Not in the API. | |
| 29 | 8 | IP Record Count | — | — | Not in the API. | |
| 37 | 8 | EV Record Count | — | — | Not in the API. | |
| 45 | 8 | Total IC cartons | — | — | Not in the API. | |
| 53 | 9 | Total IC pallets | — | — | Not in the API. | |
| 62 | 8 | Total dummy-IC cartons | — | — | Not in the API. | |
| 70 | 9 | Total dummy-IC pallets | — | — | Not in the API. | |
| 79 | 8 | Total IS Cartons | — | — | Not in the API. | |
| 87 | 9 | Total IS Pallets | — | — | Not in the API. | |
| 96 | 8 | Total IP Cartons | — | — | Not in the API. | |
| 104 | 9 | Total IP Pallets | — | — | Not in the API. |
API-only properties
| JSON property | Type | Meaning / what to send |
|---|---|---|
LocationCode | string | Required. Paltrack depot code of the sending depot. Must be registered with Paltrack. |
Documents[]. | string | No layout field. Passed through to recipients. |
Documents[]. | string | No layout field. Optional; passed through to recipients unchanged. |
Documents[]. | string | Paltrack sets it; do not send. |
Documents[]. | string | Do not use. Send the original intake depot in Documents[]. (IP pos 172). |
PalletMovements[]. | string | No PM layout field. The pallet's target region. Send it: split rules can select on it. |
PalletMovements[]. | string | No PM layout field. The pallet's target country. Send it: split rules can select on it. |
PalletMovements[]. | string | No PM layout field. The pallet's season. |
PalletMovements[]. | string | No PM layout field. The pallet's original account. |
PalletMovements[]. | string | No PM layout field. The re-inspection document number. |
Documents[]. | string | Original organisation code. No layout field. Passed through to recipients. |
Documents[]. | string | Pallet-level inspector. The layout has this on IC only (pos 136). Passed through to recipients. |
Documents[]. | string | Pallet-level inspection point. The layout has this on IC only (pos 154). Passed through to recipients. |
Documents[]. | boolean | Inspection passed (true) or failed (false). No IP layout field; the nearest is IS Passed Flag (pos 113). |
Documents[]. | string | Re-inspection document number. No IP layout field. Passed through to recipients. |
Documents[]. | datetime | Re-inspection date. No IP layout field. Passed through to recipients. |
Documents[]. | string | SAMSA accreditation. No PI layout field. |
Documents[]. | string | No PI layout field. Passed through to recipients. |
Documents[]. | string | No PI layout field. Passed through to recipients. |
Documents[]. | string | Pallet-level reference number. The layout has this on IC only (pos 372). Passed through to recipients. |
Not in the API
Old fields that have a newer replacement are not listed here; the Notes column gives the field to use.
- IS (summary): the whole record is not in the API. There is no summary object.
- EV (evaluation): the whole record is not in the API. Evaluation results cannot be sent.
- PM: Load Id, Orig Pallet id, Actual Grade, Transmission flag, Cartons Rejected, Cartons Discarded, Cartons Evaluation, Mox indicator, New Pallet ID, Pallet_id, Average temperature, Max temperature, Above hours, Mininum temperature, Below hours, Truck setting, the second Location code / Xmit flag / Tran user / Tran time / Tran date, Download, Protocol_exception_indicator.
- BT: the batch trailer is not in the API. No record counts or totals are sent.
- Dummy IC records: not applicable. Send only real documents.
- IC: load_id, location type, truck level, pro_no, full pallet, inc_pallet, endorse1–endorse4, Evaluation FROM number, Evaluation TO number, Message Number (Inspect Samples), Temperature2, Temperature3, Temperature4. The transport Pallet Quantity (pos 281) and Carton Quantity (pos 290) are sent once, at document level.
- IP: Agent, Actual Grade, Intake Point, Transmission flag, Message number, Cartons Rejected, Cartons Discarded, Cartons Evaluation, Mix indicator, Combo pallet id, Saftbin1, Saftbin2, Saftbin3, Combo_sscc, Expiry_code, Inner_pack, Inner_cartons, Protocol_exception_indicator. Mini-pallet (combo) links cannot be sent.
PS — Stock
Send a pallet-level stock file (PS) as JSON to POST /v2/SubmitStock. The request body is PSFileDTO: the BH fields sit on the root object, and each PS record is one element of StockRecords[]. GetPayload returns the same shape to recipients.
Shape
| Flat-file record | JSON object | Occurs |
|---|---|---|
| BH — Batch Header | root (PSFileDTO) | 1 |
| PS — Pallet Stock | StockRecords[] (StockRecordDTO) | 1..n (must not be empty) |
| BT — Batch Trailer | none | Not in the API |
- There is no
BatchHeaderobject. The BH fields are properties of the root object. StockRecords[]is a flat list with one element per pallet sequence (pallet × sequence), exactly like the PS records in the file. There is no pallet grouping or nesting.
Before you start
PSFileNameis required and must start withPS. Use the layout's naming convention,PSxxxyyy.zzz.- Root
LocationCodeis required. It has no BH position: send your depot code, the same value as the PS records' Location Code. It must match a depot registered with Paltrack, otherwise the submission is rejected withUNKNOWN_DEPOT(unlessLocationIdis000). - Pallet quantity rule: for each
SSCC, the sum ofPalletQuantityacross its sequences must not exceed 1 (±0.001), otherwise the submission is rejected withPART_PALLET. Unlike the other file types, a sum below 1 is accepted, because stock can include a pallet that has been broken down. SendSSCCon every row. - Pallet ID (pos 3) is replaced by the SSCC (pos 289). Identify every pallet by
StockRecords[].SSCC. TemperatureRule,PoolandStockTypeare not Tracing Temperature, Saftbin2 (perforation grape value) or Store_type, whatever older descriptions of these properties say. They are separate legacy stock properties with no PS layout field. Tracing Temperature, Saftbin2 and Store_type are not in the API.- Dates are ISO 8601 datetimes. Where the layout splits a date and a time into two fields, the API carries one datetime.
IntakeDateis not nullable: if you omit it,0001-01-01T00:00:00is forwarded. StockRecords[].BatchNumberis the PS Batch_no (pos 378). It is not the rootBatchNumber, which is the BH batch number.
BH — Batch Header → root (PSFileDTO)
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| — | — | File name | PSFileName | string | REQ | Must start with PS. Layout convention: PSxxxyyy.. |
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3–5 | 3 | Network Address | LocationId | string | Renamed. 000 = sender with no registered depot. | |
| 6–11 | 6 | Batch Number | BatchNumber | string | Send as a string. Digits only. | |
| 12–19 | 8 | Create date | CreateDateTime | datetime | Combined with Create time into one datetime. Format: ISO 8601, e.g. 2026-09-30T14:05:00+02:00. | |
| 20–27 | 8 | Create time | CreateDateTime | datetime | Combined with Create date into one datetime. | |
| 28–29 | 2 | indicator | — | — | Not in the API. | |
| 30–59 | 30 | provider | Provider | string | Your system or vendor name. | |
| 60–89 | 30 | version | Version | string | Version of your application. | |
| 90 | 1 | cob | — | — | Not in the API. | |
| 91 | 1 | partial | — | — | Not in the API. The API has no partial-stock-file flag. | |
| — | — | (Location Code of the PS records) | LocationCode | string | REQ | Your depot code. Must match a depot registered with Paltrack, otherwise UNKNOWN_DEPOT (unless LocationId is 000). |
PS — Pallet Stock → StockRecords[]
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3–11 | 9 | Pallet ID | — | — | Replaced by sscc (pos 289). Use StockRecords[].. | |
| 12–17 | 6 | Sequence Number | StockRecords[]. | integer | REQ | Must be 1 or more; 0 or missing is rejected. |
| 18 | 1 | Unit Type | StockRecords[]. | string | Values: P = pallets, C = cartons. | |
| 19–20 | 2 | Store | StockRecords[]. | string | ||
| 21–22 | 2 | Bay | StockRecords[]. | string | ||
| 23–32 | 10 | Consignment Number | StockRecords[]. | string | Renamed. | |
| 33–43 | 11 | Pro Number | — | — | Not in the API. | |
| 44–50 | 7 | Location Code | StockRecords[]. | string | Send the same value as the root LocationCode. | |
| 51–52 | 2 | Organisation | StockRecords[]. | string | Renamed. | |
| 53 | 1 | Channel | StockRecords[]. | string | Values: E = export, L = local. | |
| 54–55 | 2 | Country | StockRecords[]. | string | ||
| 56–57 | 2 | Commodity Group | StockRecords[]. | string | ||
| 58–59 | 2 | Commodity | StockRecords[]. | string | ||
| 60–61 | 2 | Variety Group | StockRecords[]. | string | ||
| 62–64 | 3 | Variety | StockRecords[]. | string | ||
| 65–67 | 3 | Sub-Variety | StockRecords[]. | string | ||
| 68–70 | 3 | Actual Variety | StockRecords[]. | string | ||
| 71–74 | 4 | Pack | StockRecords[]. | string | ||
| 75–78 | 4 | Grade | StockRecords[]. | string | ||
| 79–83 | 5 | Size-count | StockRecords[]. | string | ||
| 84–88 | 5 | Mark | StockRecords[]. | string | ||
| 89–90 | 2 | Inventory Code | StockRecords[]. | string | ||
| 91–94 | 4 | Picking Reference | StockRecords[]. | string | Renamed. | |
| 95–96 | 2 | Product Characteristic Group | StockRecords[]. | string | Renamed. | |
| 97–99 | 3 | Product Characteristic Code | StockRecords[]. | string | Renamed. | |
| 100–101 | 2 | Target Market | StockRecords[]. | string | ||
| 102–108 | 7 | Farm | StockRecords[]. | string | ||
| 109–115 | -6 | Carton Quantity | StockRecords[]. | integer | Format: plain JSON integer, no zero padding. | |
| 116–123 | -4.2 | Pallet Quantity | StockRecords[]. | number | REQ | Per SSCC, the sum across sequences must not exceed 1 (±0.001), otherwise PART_PALLET. Below 1 is accepted (broken-down pallet). Format: decimal, e.g. 0.. |
| 124–131 | 8 | Remarks | StockRecords[]. | string | ||
| 132 | 1 | Mixed Indicator | StockRecords[]. | string | Values: Y = mixed, N = not mixed, G = generic. | |
| 133–140 | 8 | Intake Date | StockRecords[]. | datetime | Format: ISO 8601. Not nullable: if omitted, 0001-01-01T00:00:00 is forwarded. | |
| 141–147 | 7 | Original Depot | StockRecords[]. | string | ||
| 148–155 | 8 | Original Intake | StockRecords[]. | datetime | Renamed. Format: ISO 8601. | |
| 156–163 | 8 | Cold Date | StockRecords[]. | datetime | Format: ISO 8601. | |
| 164–168 | -2.2 | Temperature | StockRecords[]. | number | The layout marks this "not used". Optional. | |
| 169 | 1 | Pallet Status | StockRecords[]. | string | Values: I = intake, T = temporary (first stock take), P = permanent (second stock take), B = booked for staging (dispatches). | |
| 170 | 1 | Pallet Marks | StockRecords[]. | string | Values: S = single-user intake, V = verified (two users). | |
| 171–172 | 2 | Stock Pool | StockRecords[]. | string | Values: CE, RJ, UI. | |
| 173–178 | 6 | Revision | — | — | Not in the API. | |
| 179–189 | 11 | Message No | — | — | Not in the API. | |
| 190–196 | 7 | Transaction User | StockRecords[]. | string | Renamed. | |
| 197–204 | 8 | Transaction Date | StockRecords[]. | datetime | Renamed. Combined with Transaction Time into one datetime. Format: ISO 8601. | |
| 205–209 | 5 | Transaction Time | StockRecords[]. | datetime | Combined with Transaction Date into one datetime. | |
| 210 | 1 | Pallet Base Type | StockRecords[]. | string | ||
| 211–220 | 10 | Original Cons No | StockRecords[]. | string | Renamed. | |
| 221–226 | 6 | Order No | StockRecords[]. | string | Renamed. | |
| 227–232 | -2.2 | Tracing Temperature | — | — | Not in the API. Do not use TemperatureRule; it is a different property. | |
| 233–238 | -2.2 | Minimum Temperature | StockRecords[]. | number | Renamed. | |
| 239–244 | -2.2 | Maximum Temperature | StockRecords[]. | number | Renamed. | |
| 245 | 1 | Calculation method | — | — | Not in the API. | |
| 246–251 | 6 | BOE Number | StockRecords[]. | string | ||
| 252–260 | 9 | Combo pallet id | — | — | Not in the API. | |
| 261–280 | 20 | Temperature Device ID | StockRecords[]. | string | ||
| 281–282 | 2 | Temp Device Type | StockRecords[]. | string | Renamed. | |
| 283–284 | 2 | Sender | StockRecords[]. | string | ||
| 285–286 | 2 | Agent | StockRecords[]. | string | ||
| 287–288 | 2 | Principal | StockRecords[]. | string | ||
| 289–306 | 18 | sscc | StockRecords[]. | string | Send on every row. The part-pallet rule groups rows by SSCC. | |
| 307–315 | -4.3 | Nett Mass | StockRecords[]. | number | Renamed. Format: decimal (kg). | |
| 316–331 | 16 | Saftbin1 | — | — | Not in the API. | |
| 332–347 | 16 | Saftbin2 | — | — | Not in the API (perforation grape value). Do not use Pool; it is a different property. | |
| 348–363 | 16 | Original Account | StockRecords[]. | string | Replaced SAFTbin3 in the layout. | |
| 364 | 1 | Pallet_X | StockRecords[]. | string | ||
| 365 | 1 | Pallet_Y | StockRecords[]. | string | ||
| 366–367 | 2 | Pallet_Z | StockRecords[]. | string | Up to 2 characters. | |
| 368–375 | 8 | Inspec_date | StockRecords[]. | datetime | Renamed. Format: ISO 8601. | |
| 376 | 1 | Stack_variance | StockRecords[]. | string | ||
| 377 | 1 | Store_type | — | — | Not in the API. Do not use StockType; it is a different property. | |
| 378–397 | 20 | Batch_no | StockRecords[]. | string | Renamed. Not the same as the root BatchNumber. | |
| 398–407 | 10 | Waybill_no | StockRecords[]. | string | Renamed. | |
| 408–421 | 14 | Gtin | StockRecords[]. | string | ||
| 422–428 | 7 | Packh_code | StockRecords[]. | string | Renamed. | |
| 429–430 | 2 | Steri_flag | StockRecords[]. | string | ||
| 431–432 | 2 | steri_dest | StockRecords[]. | string | Renamed. | |
| 433 | 1 | Label_type | — | — | Not in the API. | |
| 434 | 1 | Prov_flag | — | — | Not in the API. | |
| 435–444 | 10 | Sellbycode | StockRecords[]. | string | ||
| 445–462 | 18 | Combo_sscc | — | — | Not in the API. | |
| 463–472 | 10 | Expiry_code | — | — | Not in the API. | |
| 473–487 | 15 | Orchard | StockRecords[]. | string | ||
| 488–492 | 5 | Target_region | StockRecords[]. | string | ||
| 493–494 | 2 | Target_country | StockRecords[]. | string | ||
| 495–514 | 20 | Global_gap_number | StockRecords[]. | string | ||
| 515–534 | 20 | Lot_no | StockRecords[]. | string | Renamed. | |
| 535–554 | 20 | Traceability_code | StockRecords[]. | string | ||
| 555–558 | 4 | Season | StockRecords[]. | string | ||
| 559–566 | 8 | Orig_inspec_date | StockRecords[]. | datetime | Renamed. The original inspection date. Leave it out if there is none; don't substitute another date. | |
| 567–576 | 10 | Inner_pack | — | — | Not in the API. | |
| 577–581 | 5 | Inner_cartons | — | — | Not in the API. | |
| 582–583 | 2 | Protocol_exception_indicator | — | — | Not in the API. | |
| 584–608 | 25 | UPN | StockRecords[]. | string | ||
| 609–638 | 30 | Pallet_treatment | StockRecords[]. | string | IPPC treatment code. | |
| 639–648 | -5.3 | Pallet Gross Mass | StockRecords[]. | number | Renamed. SOLAS: first sequence of the pallet only. | |
| 649–655 | 7 | Weighing Location | StockRecords[]. | string | ||
| 656–668 | 13 | Weighing Date Time | StockRecords[]. | datetime | Renamed. Format: ISO 8601 (the layout uses yyyymmddhh:mm). | |
| 669–678 | 10 | Phyto_data | StockRecords[]. | string | Format: 2-char protocol + 2-char FMS pallet status + 6-char space filler. | |
| 679–718 | 40 | Cust_ord | StockRecords[]. | string | Renamed. Customer order number. | |
| 719–728 | 10 | eLot_Key | — | — | Replaced by eLot_Key (pos 879). Use StockRecords[].. | |
| 729–738 | 10 | Agreement Code | StockRecords[]. | string | ||
| 739–878 | 140 | Post Treatment | StockRecords[]. | string | ||
| 879–893 | 15 | eLot_Key | StockRecords[]. | string | JSON casing ElotKey. |
BT — Batch Trailer → none
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | Record type | — | — | Not in the API. | |
| 3–5 | 3 | Network Address | — | — | Not in the API. Use root LocationId. | |
| 6–11 | 6 | Batch Number | — | — | Not in the API. Use root BatchNumber. | |
| 12–18 | 7 | Record Count | — | — | Not in the API. The size of StockRecords[] replaces it. | |
| 19–25 | 7 | PS Record Count | — | — | Not in the API. The size of StockRecords[] replaces it. | |
| 26–32 | -7 | Total Cartons | — | — | Not in the API. |
API-only properties
| JSON property | Type | Meaning / what to send |
|---|---|---|
StockRecords[]. | integer | Optional. Send 0 or omit. |
StockRecords[]. | string | Optional. The pallet is identified by SSCC; if you populate this, send the same SSCC value. |
StockRecords[] also carries these legacy stock properties. None has a PS layout field. All are optional: send null or omit them.
SubOrganisation, Pool, Client, ProductionRun, TemperatureRule, StockType, InstructionLine, InstructionSequence, JobNumber, ReservationFlag, OffDate, Conformity, DischargePort, OriginalOrderNumber, OriginalDischargePort, OriginalRemoteLocation, RemoteLocation, StowageSpec, TreatmentFlag, TreatmentType, InspectionDocumentNumber, ReInspectionFlag, ReinspectionDocumentNumber, ReInspectionDate, ShippingPosition, AllocatedFlag, Combined, ConsecNumber, Reason, InspectionRequired, SampleQty, RejectQty, Rejected, PickDate, PackDate, SAMSAAccreditation, PhytoVerificationKey.
TemperatureRule, Pool and StockType are not Tracing Temperature, Saftbin2 or Store_type. Do not use them for those fields.
Not in the API
- BH: indicator (pos 28–29), cob (pos 90), partial (pos 91). The API has no partial-stock-file flag.
- PS: Pro Number, Revision, Message No, Tracing Temperature, Calculation method, Combo pallet id, Saftbin1, Saftbin2, Store_type, Label_type, Prov_flag, Combo_sscc, Expiry_code, Inner_pack, Inner_cartons, Protocol_exception_indicator.
- PS: eLot_Key (old, pos 719) is replaced by eLot_Key (pos 879) →
StockRecords[].ElotKey. - BT: the Batch Trailer record is not in the API. Counts come from
StockRecords[].
MT — Mates Receipt
Send a Mates Receipt (MT) as JSON to POST /v2/SubmitMates. The request body is MTFileDTO: the BH fields sit on the root object, the OL record is ShipHeader, and the ON and OP records nest under it. GetPayload returns the same shape to recipients.
Shape
| Flat-file record | JSON object | Occurs |
|---|---|---|
| BH — batch header | root (MTFileDTO) | 1 |
| OL — ship header detail | ShipHeader | 1 (required) |
ON — transport location, tran_type L (loading port) | ShipHeader. | 1 (required) |
ON — transport location, tran_type D (one per organisation / discharge port) | ShipHeader. | 1..n (required) |
| OP — pallet record (one per pallet + sequence) | ShipHeader. | 1..n per discharge location (required) |
| BT — batch trailer | none | Not in the API |
- In the file, ON and OP records are flat siblings. In the API, each OP record nests under the
DispatchLocation[]entry whoseLocationCodeequals the pallet'sDestinationLocation(OP dest_locn). LoadingLocationandDispatchLocation[]have the same properties. OnlyDispatchLocation[]hasPalletRecords.
Before you start
- Every
DispatchLocation[]entry needsTranType = "D", andLoadingLocationneedsTranType = "L". A discharge location withoutDis not delivered, even though the submission is accepted. EachDispatchLocation[].LocationCodeis the destination for that location's pallets. - Pallet id (pos 58) is replaced by the SSCC (pos 338). Identify every pallet by
PalletRecords[].SSCC. Part-pallet rule: perSSCC, the sum ofPalletQuantitymust be 1 (±0.001), otherwisePART_PALLET. - Populate
PalletRecords[].Organisationon every row. Mates distribution to recipients is driven by the pallet-level Organisation, not byShipHeader.Organisationor the location'sOrganisation. - Populate
ShipHeader.Season, andPalletRecords[].Seasonon every row. Recipients' payloads are listed byShipHeader.Season. - The header timestamp is
CreatedDateTimeon MT. PS, DI and LI spell itCreateDateTime. - These datetimes are not nullable:
ShipHeader.StartDate, the threeTransactionDateproperties,PalletRecords[].IntakeDateandPalletRecords[].ShippedDate. If you omit one,0001-01-01T00:00:00is forwarded. All dates are ISO 8601; where the layout splits a date and a time, the API carries one datetime. - Where the layout has an old and a new field, send the new one: Seal Number (pos 527), Consec_No (pos 546), Ship_Line (pos 720), Combo_sscc (pos 509), eLot_Key (pos 913), and the 25-character Container_Ref (pos 810).
BH — Batch header → root (MTFileDTO)
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| — | — | File name | MTFileName | string | REQ | Must start with MT. Layout convention: MTfffsss-ttt. |
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3–5 | 3 | from depot | LocationId | string | Renamed. 3-character location id of the sending depot. | |
| 6–11 | 6 | sequence number | BatchNumber | string | Renamed. Send as a string. | |
| 12–19 | 8 | date | CreatedDateTime | datetime | Combined with time into one datetime. Format: ISO 8601, e.g. 2026-09-30T14:05:00. Spelled CreatedDateTime on MT. | |
| 20–27 | 8 | time | CreatedDateTime | datetime | Combined with date into one datetime. | |
| 28–57 | 30 | provider | Provider | string | Your system or vendor name. | |
| 58–87 | 30 | version | Version | string | Version of your application. |
OL — Ship header detail → ShipHeader
Layout fields shown in parentheses have no name in the layout; the name is taken from the layout's comment.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3–9 | 7 | tran user | ShipHeader. | string | Renamed. User id. | |
| 10–17 | 8 | (tran date) | ShipHeader. | datetime | Combined with (tran time) into one datetime. Not nullable. | |
| 18–25 | 5 | (tran time) | ShipHeader. | datetime | Combined with (tran date) into one datetime. The layout's size says 5; positions 18–25 hold hh:mm:ss. | |
| 26–35 | 10 | ship number, id | ShipHeader. | string | Format: ship number[1,6] + - + from location id. | |
| 36–37 | 2 | location type | ShipHeader. | string | Values: PO. | |
| 38–44 | 7 | loading port | ShipHeader. | string | Port code. Send the same value as ShipHeader.. | |
| 45–46 | 2 | revision number | ShipHeader. | string | Send as a string. | |
| 47–56 | 10 | ship number | ShipHeader. | string | REQ | Format: 0000 + ship number[1,6]. |
| 57–66 | 10 | out load number | ShipHeader. | string | Layout value: 0000000000. | |
| 67–76 | 10 | UK number | ShipHeader. | string | Layout value: 0000000000. | |
| 77 | 1 | transport | ShipHeader. | string | Transport type. | |
| 78 | 1 | load_type | ShipHeader. | string | Ship type. | |
| 79–86 | 8 | start_date | ShipHeader. | datetime | Start of loading. Not nullable. | |
| 87–94 | 8 | dep_date | ShipHeader. | datetime | Renamed. Combined with (departure time) into one datetime. | |
| 95–99 | 5 | (departure time) | ShipHeader. | datetime | Combined with dep_date into one datetime. | |
| 100–107 | 8 | carrier | ShipHeader. | string | ||
| 108–109 | 2 | next_type | ShipHeader. | string | Next location type. | |
| 110–116 | 7 | next_code | ShipHeader. | string | Next location code. | |
| 117–120 | 4 | season | ShipHeader. | string | Populate it. Recipients' payloads are listed by it. | |
| 121–126 | 6 | saecs_voyage | ShipHeader. | string | ||
| 127–132 | 6 | client_ref | ShipHeader. | string | Renamed. | |
| 133–134 | 2 | (filler) | — | — | Not in the API. | |
| 135–146 | 12 | sub_load | ShipHeader. | string | ||
| 147–158 | 12 | (home AWB number) | — | — | Not in the API. | |
| 159–165 | 7 | (gross weight) | ShipHeader. | number | Layout format 0000.. 0 if omitted. | |
| 166–172 | 7 | (nett weight) | ShipHeader. | number | Layout format 0000.. 0 if omitted. | |
| 173 | 1 | load_status | ShipHeader. | string | ||
| 174–175 | 2 | (organisation) | ShipHeader. | string | The layout leaves this blank. Populate PalletRecords[]. on every pallet instead. | |
| 176–200 | 25 | load_name | ShipHeader. | string | Ship name. | |
| 201 | 1 | full_load | ShipHeader. | string | Values: Y / N (last port of loading). | |
| 202–216 | 15 | ext_saecs_voyage | ShipHeader. | string | Extended 15-character SAECS voyage number. | |
| 217–226 | 10 | Ship_call_sign | ShipHeader. | string |
ON — Transport location → ShipHeader.LoadingLocation / ShipHeader.DispatchLocation[]
The table shows ShipHeader.DispatchLocation[] paths. For the loading-port ON record (tran_type L), the same properties sit on ShipHeader.LoadingLocation.
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | ShipHeader. | string | Values: ON. Optional. | |
| 3–9 | 7 | tran user | ShipHeader. | string | Renamed. User id. | |
| 10–17 | 8 | (tran date) | ShipHeader. | datetime | Combined with (tran time) into one datetime. Not nullable. | |
| 18–25 | 5 | (tran time) | ShipHeader. | datetime | Combined with (tran date) into one datetime. The layout's size says 5; positions 18–25 hold hh:mm:ss. | |
| 26–35 | 10 | ship number, id | ShipHeader. | string | Send the same value as ShipHeader.. | |
| 36–37 | 2 | location type | ShipHeader. | string | Values: PO. | |
| 38–44 | 7 | location code | ShipHeader. | string | On LoadingLocation: the loading port. On DispatchLocation[]: the discharge port or destination; that location's pallets are delivered to it. Must equal the DestinationLocation of the pallets nested under it. | |
| 45 | 1 | tran_type | ShipHeader. | string | Values: L = loading port (LoadingLocation), D = discharge (every DispatchLocation[] entry). A DispatchLocation[] entry without D is not delivered. | |
| 46–53 | 8 | arr_date | ShipHeader. | datetime | Renamed. Combined with arr_time into one datetime. | |
| 54–58 | 5 | arr_time | ShipHeader. | datetime | Combined with arr_date into one datetime. | |
| 59–66 | 8 | dep_date | ShipHeader. | datetime | Renamed. Combined with dep_time into one datetime. | |
| 67–71 | 5 | dep_time | ShipHeader. | datetime | Combined with dep_date into one datetime. | |
| 72–81 | 10 | conn_flight | ShipHeader. | string | Connecting flight. | |
| 82–83 | 2 | (organisation) | ShipHeader. | string | The layout leaves this blank. Populate PalletRecords[]. on every pallet. |
OP — Pallet record → ShipHeader.DispatchLocation[].PalletRecords[]
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | ShipHeader. | string | Values: OP. Optional. | |
| 3–9 | 7 | tran user | ShipHeader. | string | Renamed. User id. | |
| 10–17 | 8 | tran date | ShipHeader. | datetime | Combined with tran time into one datetime. Not nullable. | |
| 18–25 | 5 | tran time | ShipHeader. | datetime | Combined with tran date into one datetime. The layout's size says 5; positions 18–25 hold hh:mm:ss. | |
| 26–27 | 2 | location type | ShipHeader. | string | Values: PO. | |
| 28–34 | 7 | loading port | ShipHeader. | string | Send the same value as ShipHeader.. | |
| 35–41 | 7 | dest_locn | ShipHeader. | string | Renamed. Must equal the parent DispatchLocation[].. | |
| 42–43 | 2 | orgzn | ShipHeader. | string | Renamed. Populate on every row: Mates distribution is driven by this field. | |
| 44–47 | 4 | Season | ShipHeader. | string | Send the same value as ShipHeader.. | |
| 48–57 | 10 | cons number | ShipHeader. | string | Renamed. | |
| 58–66 | 9 | pallet id | — | — | Replaced by Sscc (pos 338). Use ShipHeader.. | |
| 67–69 | 3 | sequence number | ShipHeader. | integer | REQ | Must be 1 or more. Sequence within the same pallet. |
| 70–71 | 2 | comm_grp | ShipHeader. | string | Renamed. | |
| 72–73 | 2 | commodity | ShipHeader. | string | REQ | |
| 74–75 | 2 | country | ShipHeader. | string | ||
| 76–77 | 2 | var_grp | ShipHeader. | string | Renamed. | |
| 78–80 | 3 | variety | ShipHeader. | string | REQ | |
| 81–83 | 3 | act_var | ShipHeader. | string | Renamed. | |
| 84–86 | 3 | sub_var | ShipHeader. | string | Renamed. | |
| 87–90 | 4 | pack | ShipHeader. | string | REQ | |
| 91–94 | 4 | grade | ShipHeader. | string | REQ | |
| 95–99 | 5 | mark | ShipHeader. | string | ||
| 100–104 | 5 | size_count | ShipHeader. | string | ||
| 105–106 | 2 | inv_code | ShipHeader. | string | Renamed. | |
| 107–110 | 4 | pick_ref | ShipHeader. | string | Renamed. | |
| 111–112 | 2 | prod_grp | ShipHeader. | string | Renamed. | |
| 113–115 | 3 | prod_char | ShipHeader. | string | Renamed. | |
| 116–122 | 7 | farm | ShipHeader. | string | REQ | |
| 123–124 | 2 | sender | ShipHeader. | string | ||
| 125–126 | 2 | agent | ShipHeader. | string | ||
| 127–128 | 2 | ship_sender | ShipHeader. | string | ||
| 129–130 | 2 | ship_agent | ShipHeader. | string | ||
| 131 | 1 | channel | ShipHeader. | string | ||
| 132–137 | 6 | load_ref[1,6] | ShipHeader. | string | Renamed. 6-character ship number. | |
| 138–148 | 11 | container | ShipHeader. | string | Container number. | |
| 149–156 | 8 | seal number | — | — | Replaced by Seal Number (pos 527). Use ShipHeader.. | |
| 157 | 1 | (filler) | — | — | Not in the API. | |
| 158–163 | 6 | position | ShipHeader. | string | ||
| 164–165 | 2 | (damaged indicator) | ShipHeader. | string | ||
| 166–171 | 6 | ctn_qty | ShipHeader. | integer | REQ | Renamed. Must be 1 or more. |
| 172–180 | 9 | plt_qty | ShipHeader. | number | REQ | Renamed. Must be greater than 0. Part-pallet rule: per SSCC, the sum across rows must be 1 (±0.001), otherwise PART_PALLET. |
| 181–182 | 2 | targ_mkt | ShipHeader. | string | Renamed. | |
| 183 | 1 | mixed_ind | ShipHeader. | string | Renamed. | |
| 184–191 | 8 | remarks | ShipHeader. | string | ||
| 192–195 | 4 | reason | ShipHeader. | string | ||
| 196–203 | 8 | intake_date | ShipHeader. | datetime | Not nullable. | |
| 204–210 | 7 | orig_depot | ShipHeader. | string | ||
| 211–218 | 8 | orig_intake | ShipHeader. | datetime | ||
| 219–226 | 8 | shipped date | ShipHeader. | datetime | Combined with shipped time into one datetime. Not nullable. | |
| 227–231 | 5 | shipped time | ShipHeader. | datetime | Combined with shipped date into one datetime. | |
| 232–233 | 2 | revision | ShipHeader. | string | Send as a string. | |
| 234–239 | 6 | consec_no | — | — | Replaced by Consec_No (pos 546). Use ShipHeader.. | |
| 240–247 | 8 | stuff_date | ShipHeader. | datetime | Combined with stuff_time into one datetime. | |
| 248–252 | 5 | stuff_time | ShipHeader. | datetime | Combined with stuff_date into one datetime. | |
| 253 | 1 | ship_line | — | — | Replaced by Ship_Line (pos 720). Use ShipHeader.. | |
| 254–263 | 10 | doc_no | ShipHeader. | string | Renamed. Document number on the container record. | |
| 264–270 | 7 | load_depot | ShipHeader. | string | Loading depot. | |
| 271–273 | 3 | variety | ShipHeader. | string | Renamed. Generic variety. | |
| 274–278 | 5 | size_count | ShipHeader. | string | Renamed. Generic count. | |
| 279 | 1 | pallet_btype | ShipHeader. | string | Renamed. e.g. IFCO. | |
| 280–285 | 5.2 | Temperature | ShipHeader. | number | Layout format -&&.. 0 if omitted. | |
| 286 | 1 | Calc_method | ShipHeader. | string | Renamed. | |
| 287–292 | 5.2 | Temp_min | ShipHeader. | number | Renamed. | |
| 293–298 | 5.2 | Temp_max | ShipHeader. | number | Renamed. | |
| 299–304 | 6 | Boe_no | ShipHeader. | string | Renamed. Bill of Entry number. | |
| 305–313 | 9 | combo_pallet_id | ShipHeader. | string | Leave blank, as the layout does. Send the combo pallet id in ComboSSCC (pos 509). | |
| 314–333 | 20 | temp_device_id | ShipHeader. | string | Renamed. | |
| 334–335 | 2 | temp_device_type | ShipHeader. | string | Renamed. | |
| 336–337 | 2 | principal | ShipHeader. | string | ||
| 338–355 | 18 | Sscc | ShipHeader. | string | REQ | 18-character SSCC. Identifies the pallet (replaces pallet id, pos 58). |
| 356–364 | -4.3 | Nett mass | ShipHeader. | number | Layout format -&&&&.. | |
| 365 | 1 | invoiced | ShipHeader. | string | ||
| 366–381 | 16 | Saftbin1 | ShipHeader. | string | ||
| 382–397 | 16 | Saftbin2 | ShipHeader. | string | Grape perforation value. | |
| 398–413 | 16 | Saftbin3 | ShipHeader. | string | Now contains orig_cons. | |
| 414 | 1 | Cont_type | ShipHeader. | string | Renamed. | |
| 415–429 | 15 | Container_ref | ShipHeader. | string | Renamed. Fill it when the reference fits in 15 characters. Always send ContainerReference2 (pos 810). | |
| 430–431 | 2 | Container_size | ShipHeader. | string | Renamed. | |
| 432–439 | 8 | Inspec_date | ShipHeader. | datetime | Renamed. | |
| 440 | 1 | Stack_variance | ShipHeader. | string | ||
| 441–450 | 10 | Waybill_no | ShipHeader. | string | Renamed. | |
| 451–470 | 20 | Batch_no | ShipHeader. | string | Renamed. Pallet batch number; not the root BatchNumber. | |
| 471–484 | 14 | Gtin | ShipHeader. | string | ||
| 485–491 | 7 | Packh_code | ShipHeader. | string | Renamed. | |
| 492–493 | 2 | Steri_flag | ShipHeader. | string | ||
| 494 | 1 | Filler | — | — | Not in the API. | |
| 495–496 | 2 | Steri_dest | ShipHeader. | string | Renamed. | |
| 497 | 1 | Label_type | ShipHeader. | string | ||
| 498 | 1 | Prov flag | ShipHeader. | string | Renamed. Provisional intake. | |
| 499–508 | 10 | Sellbycode | ShipHeader. | string | ||
| 509–526 | 18 | Combo_sscc | ShipHeader. | string | Combo pallet id (SSCC). | |
| 527–541 | 15 | Seal Number | ShipHeader. | string | ||
| 542–545 | 4 | Filler | — | — | Not in the API. | |
| 546–555 | 10 | Consec_No | ShipHeader. | string | ||
| 556–565 | 10 | Expiry_Code | ShipHeader. | string | ||
| 566–580 | 15 | Orchard | ShipHeader. | string | ||
| 581–585 | 5 | Target_Region | ShipHeader. | string | ||
| 586–587 | 2 | Target_Country | ShipHeader. | string | ||
| 588–607 | 20 | Global_gap_no | ShipHeader. | string | ||
| 608–627 | 20 | Lot_No | ShipHeader. | string | ||
| 628–647 | 20 | Traceability_code | ShipHeader. | string | ||
| 648–657 | 10 | Inner_pack | ShipHeader. | string | ||
| 658–662 | 5 | Inner_cartons | ShipHeader. | string | Send as a string. | |
| 663–664 | 2 | Protocol_exception_indicator | ShipHeader. | string | ||
| 665–689 | 25 | UPN | ShipHeader. | string | ||
| 690–719 | 30 | Pallet_treatment | ShipHeader. | string | IPPC treatment code. | |
| 720–721 | 2 | Ship_Line | ShipHeader. | string | ||
| 722 | 1 | Verification Method | ShipHeader. | string | SOLAS. | |
| 723–732 | -5.3 | Pallet Gross Mass | ShipHeader. | number | SOLAS. First sequence of the pallet only. | |
| 733–742 | 10 | SAMSA Accreditation (Pallet Level) | ShipHeader. | string | ||
| 743–752 | 10 | SAMSA Accreditation (Container Level) | ShipHeader. | string | First pallet record of each container only. | |
| 753–757 | 5 | Container Tare Weight | ShipHeader. | number | First pallet record of each container only. | |
| 758–767 | -5.3 | Container Gross Mass | ShipHeader. | number | Renamed. First pallet record of each container only. | |
| 768–774 | 7 | Weighing Location | ShipHeader. | string | ||
| 775–787 | 13 | Weighing Date Time | ShipHeader. | datetime | Format: ISO 8601 (the layout uses yyyymmddhh:mm). | |
| 788–789 | 2 | Main Area | ShipHeader. | string | ||
| 790–805 | 16 | Production Area | ShipHeader. | string | ||
| 806–809 | 4 | Inspection Point | ShipHeader. | string | ||
| 810–834 | 25 | Container_Ref | ShipHeader. | string | Renamed. The full container reference, up to 25 characters. Always send it. | |
| 835–844 | 10 | Phyto_data | ShipHeader. | string | Format: 2-char protocol + 2-char FMS pallet status + 6-char space filler. | |
| 845–884 | 40 | Cust_ord | ShipHeader. | string | Renamed. Customer order number. | |
| 885–894 | 10 | eLot_Key | — | — | Replaced by eLot_Key (pos 913). Use ShipHeader.. | |
| 895–902 | 8 | Common Deck Position | ShipHeader. | string | Vessel planning (cooling sections). | |
| 903–912 | 10 | Agreement Code | ShipHeader. | string | ||
| 913–927 | 15 | eLot_Key | ShipHeader. | string | JSON casing ElotKey. |
BT — Batch trailer → none
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Not in the API. | |
| 3–5 | 3 | from depot | — | — | Not in the API. Use root LocationId. | |
| 6–11 | 6 | sequence number | — | — | Not in the API. Use root BatchNumber. | |
| 12–18 | 7 | total records | — | — | Not in the API. | |
| 19–25 | 7 | Filler | — | — | Not in the API. | |
| 26–32 | 7 | total OP records | — | — | Not in the API. The count of PalletRecords[] replaces it. | |
| 33–39 | 7 | filler | — | — | Not in the API. | |
| 40–46 | 7 | total OP cartons | — | — | Not in the API. |
API-only properties
| JSON property | Type | Meaning / what to send |
|---|---|---|
LocationCode | string | Required. Code of the sending depot. Must match a depot registered with Paltrack, otherwise UNKNOWN_DEPOT (unless LocationId is 000). |
ShipHeader., ShipHeader. | string | The ON record has no season. Optional; if sent, use ShipHeader.. |
ShipHeader. | string | Optional. The pallet is identified by SSCC; if you populate this, send the same SSCC value. |
ShipHeader., ShipHeader. | integer | The ON record has no sequence number. Use 1 for LoadingLocation, then 2, 3, … for the DispatchLocation[] entries in file order. |
ShipHeader., ShipHeader., ShipHeader., ShipHeader. | integer | Set by Paltrack. Do not send. |
ShipHeader. | string | Not in the OP layout. Optional. |
ShipHeader. | string | Original account. Not in the OP layout. Send it if you have it. |
ShipHeader. | datetime | Not in the OP layout. Optional. |
Not in the API
- OL: (filler) pos 133–134, (home AWB number) pos 147–158.
- OP: (filler) pos 157, Filler pos 494, Filler pos 542–545.
- OP, replaced by newer fields: seal number (pos 149) → Seal Number (pos 527); consec_no (pos 234) → Consec_No (pos 546); ship_line (pos 253) → Ship_Line (pos 720); eLot_Key (old, pos 885) → eLot_Key (pos 913).
- BT: the batch trailer record is not in the API. Counts come from the arrays.
DI — Day Instruction
Send a Day Instruction (DI) as JSON to POST /v2/SubmitDayInstruction. The request body is DIFileDTO: the HD fields sit on the root object, the LO record is Order, and the LD lines are Order.OrderDetails[]. GetPayload returns the same shape to recipients.
Shape
| Flat-file record | JSON object | Occurs |
|---|---|---|
| HD — header | root (DIFileDTO) | 1 |
| LO — order (loading instruction) | Order | 1 (required) |
| LD — order detail line | Order. | 1..n (required) |
| BT — batch trailer | none | Not in the API |
- One submission carries one order. The LD lines nest under
Order.OrderDetails[].
Before you start
Order.DestinationCodemust be populated, or the instruction is not delivered. A submission with a blankOrder.DestinationCodeis accepted but reaches no recipient. The instruction is delivered, whole, to the recipients of that destination.DIFileName,LocationCode,OrderandOrder.OrderDetailsare required.OrderDetailsmust hold at least one line.Order.OrderNumberis the document number recipients see for this payload. It is blank for ships and a unique order number for trucks, as in the layout.- Dates are ISO 8601 datetimes. Where the layout splits a date and a time, the API carries one datetime. For ships, send
Order.LoadDateas null rather than00000000. - Use
OrderDetails[].ConsecNumber(pos 190, 10 characters). The old 6-character consec number (pos 50) is not in the API. - The part-pallet rule does not apply to Day Instructions.
HD — Header → root (DIFileDTO)
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| — | — | (file name) | DIFileName | string | REQ | Must start with DI. Use the name you would give the flat file. |
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3–5 | 3 | sending depot | LocationId | string | Renamed. 3-character location id of the sending depot. | |
| 6–11 | 6 | sequence number | BatchNumber | string | Renamed. Send as a string. The file-name sequence (sss), zero-padded to 6. | |
| 12–19 | 8 | date | CreateDateTime | datetime | Combined with time into one datetime. Format: ISO 8601, e.g. 2026-09-30T14:05:00. | |
| 20–27 | 8 | time | CreateDateTime | datetime | Combined with date into one datetime. |
LO — Order → Order
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 1 | transaction type | Order. | string | Values: N = new instruction. | |
| 4–10 | 7 | location code | Order. | string | Sending depot code. Send the same value as the root LocationCode. | |
| 11–16 | 6 | order number | Order. | string | Blank for ships; unique order number for trucks. Recipients see it as the payload's document number. | |
| 17 | 1 | order type | Order. | string | Values: V = conventional ship, T = container ship, D = normal truck, Z = container truck. | |
| 18 | 1 | load id | Order. | string | Layout value: 0. | |
| 19–26 | 8 | load date | Order. | datetime | For ships (00000000 in the file), send null. | |
| 27–32 | 6 | ship number | Order. | string | ||
| 33–57 | 25 | instruction | Order. | string | ||
| 58 | 1 | order status | Order. | string | Values: blank for ships; O = open, C = closed for trucks. | |
| 59–60 | 2 | destination type | Order. | string | Values: PO for ships; DP = depot, CU = customer for trucks. | |
| 61–67 | 7 | destination code | Order. | string | Discharge port (ships) or destination depot/customer (trucks). Must be populated: delivery goes to this destination. | |
| 68–73 | 6 | master order | Order. | string | Same as the order number. | |
| 74 | 1 | cold flag | Order. | string | Values: blank for ships; Y / N for trucks. | |
| 75–81 | 7 | from location | Order. | string | Location where the order was created. Trucks only. | |
| 82–88 | 7 | from user | Order. | string | User who created the order. Trucks only. | |
| 89–96 | 8 | from date | Order. | datetime | Combined with from time into one datetime. Trucks only; send null otherwise. | |
| 97–101 | 5 | from time | Order. | datetime | Combined with from date into one datetime. | |
| 102–104 | 3 | BLANK | — | — | Not in the API. | |
| 105 | 1 | xmit flag | Order. | string | Values: Y / N. | |
| 106 | 1 | revision | Order. | string | Values: 0–8 = revision, 9 = delete. | |
| 107 | 1 | message number | Order. | string | Layout value: 0. | |
| 108–114 | 7 | tran user | Order. | string | Set by Paltrack (user who last accessed the instruction in Paltrack). Do not send. | |
| 115–122 | 8 | tran date | Order. | datetime | Combined with tran time into one datetime. Send the date and time the order was created or last changed. | |
| 123–127 | 5 | tran time | Order. | datetime | Combined with tran date into one datetime (see above). | |
| 128–133 | 6 | Port | Order. | string | ||
| 134–158 | 25 | Ship name | Order. | string |
LD — Order detail → Order.OrderDetails[]
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 1 | load id | Order. | string | ||
| 4–9 | 6 | BLANK | — | — | Not in the API. | |
| 10–16 | 7 | location code | Order. | string | Sending depot code. Send the same value as Order.. | |
| 17–18 | 2 | handling point | — | — | Not in the API. The layout leaves it blank. | |
| 19 | 1 | line type | Order. | string | Values: P = positive, N = negative. | |
| 20 | 1 | line status | Order. | string | Values: O = open, C = closed. | |
| 21 | 1 | line number | Order. | integer | Conventional ships: the order's line number. Container ships: 1 = positive, 0 = negative. Trucks: 1. | |
| 22 | 1 | sequence number | Order. | integer | Starts at 1 within each line number. | |
| 23–24 | 2 | store | Order. | string | ||
| 25–26 | 2 | bay | Order. | string | ||
| 27–32 | 6 | position | Order. | string | Conventional ships only; blank otherwise. | |
| 33–34 | 2 | destination type | Order. | string | Values: PO for ships; DP / CU for trucks. | |
| 35–41 | 7 | destination code | Order. | string | Ships: destination port. Trucks: destination depot or customer code. Populate it, but delivery goes by Order.. | |
| 42–43 | 2 | sender | Order. | string | Ships and container trucks. | |
| 44–45 | 2 | agent | Order. | string | Ships and container trucks. The party who will receive and sell the product overseas. | |
| 46–47 | 2 | shipping sender | Order. | string | Usually the same as the sender. | |
| 48–49 | 2 | shipping agent | Order. | string | Usually the same as the agent. | |
| 50–55 | 6 | consec number | — | — | Replaced by consec number (pos 190). Use Order.. | |
| 56 | 1 | temp set | Order. | string | ||
| 57 | 1 | channel | Order. | string | Values: E = export, L = local. | |
| 58–59 | 2 | stockpool | Order. | string | Values: CE = certified, RJ = rejected. | |
| 60–61 | 2 | organisation | Order. | string | ||
| 62–63 | 2 | country | Order. | string | ||
| 64–65 | 2 | commodity | Order. | string | ||
| 66–67 | 2 | variety group | Order. | string | ||
| 68–70 | 3 | variety | Order. | string | ||
| 71–73 | 3 | sub variety | Order. | string | The layout leaves it blank. | |
| 74–76 | 3 | actual variety | Order. | string | The layout leaves it blank. | |
| 77–80 | 4 | pack | Order. | string | ||
| 81–84 | 4 | grade | Order. | string | ||
| 85–89 | 5 | mark | Order. | string | ||
| 90–94 | 5 | low count | Order. | string | Lower end of the count range. | |
| 95–99 | 5 | high count | Order. | string | Upper end of the count range. | |
| 100–101 | 2 | inventory code | Order. | string | ||
| 102–105 | 4 | picking reference | Order. | string | ||
| 106–107 | 2 | product group | Order. | string | ||
| 108–110 | 3 | product chars | Order. | string | Renamed. | |
| 111–112 | 2 | target market | Order. | string | ||
| 113–119 | 7 | farm | Order. | string | ||
| 120–127 | 8 | remarks | Order. | string | ||
| 128 | 1 | unit type | Order. | string | Values: P = pallet-level instruction, C = carton-level instruction. | |
| 129–132 | 4 | instruction quantity | Order. | integer | Quantity to be shipped. | |
| 133–136 | 4 | Shipped quantity | Order. | integer | Quantity already shipped. | |
| 137 | 1 | xmit flag | Order. | string | Layout value: N. | |
| 138 | 1 | revision | Order. | string | Send as a string. Layout value: 0. | |
| 139 | 1 | message number | — | — | Not in the API. | |
| 140–146 | 7 | tran user | — | — | Not in the API. The layout says leave blank. | |
| 147–154 | 8 | tran date | — | — | Not in the API. The layout says leave blank. | |
| 155–159 | 8 | tran time | — | — | Not in the API. The layout's size says 8; positions 155–159 are 5 characters. | |
| 160–162 | 3 | BLANK | — | — | Not in the API. | |
| 163 | 1 | cpp_ship | Order. | string | Values: Y / N (ship pallets according to the cartons-per-pallet rule). JSON casing CPPShip. | |
| 164 | 1 | pallet base type | Order. | string | e.g. S = standard. | |
| 165–182 | 18 | pallet id/sscc | Order. | string | Pallet number or SSCC. | |
| 183–188 | 6 | Port | Order. | string | ||
| 189 | 1 | Priority | Order. | string | Send as a string. Values: 0–9, loading priority of the order, ascending. | |
| 190–199 | 10 | consec number | Order. | string | Blank for conventional ships and normal trucks. |
BT — Batch trailer → none
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Not in the API. | |
| 3–5 | 3 | receiving depot | — | — | Not in the API. Recipients come from Order.. | |
| 6–11 | 6 | sequence number | — | — | Not in the API. Use root BatchNumber. | |
| 12–18 | 7 | total records | — | — | Not in the API. | |
| 19–25 | 7 | total LD records | — | — | Not in the API. The count of Order. replaces it. | |
| 26–32 | 7 | total instr_qty | — | — | Not in the API. |
API-only properties
| JSON property | Type | Meaning / what to send |
|---|---|---|
LocationCode | string | Required. Sending depot code. Send the same value as Order. and Order.. |
Provider | string | Your system or vendor name. The HD record has no provider field. |
Version | string | Version of your application. The HD record has no version field. |
Not in the API
- LO: BLANK (pos 102–104).
- LD: BLANK (pos 4–9), handling point, message number, tran user, tran date, tran time, BLANK (pos 160–162).
- LD: consec number (old, pos 50) is replaced by consec number (pos 190) →
Order.OrderDetails[].ConsecNumber. - BT: the batch trailer record is not in the API.
LI — Loading Instruction
Send a Loading Instruction (LI) as JSON to POST /v2/SubmitLoadInstruction. The request body is LIFileDTO: the BH fields sit on the root object, each LH record is one element of InstructionHeaders[], and each LD record nests under its header in InstructionDetails[]. GetPayload returns the same shape to recipients.
Shape
| Flat-file record | JSON object | Occurs |
|---|---|---|
| BH — batch header | root (LIFileDTO) | 1 |
| LH — instruction header | InstructionHeaders[] | 1..n (required) |
| LD — instruction detail | InstructionHeaders[]. | 0..n per header (the array is required on every header); at least one line in the submission |
| BT — batch trailer | none | Not in the API |
- In the file, the LD records follow the LH records as a flat list. In the API, each LD nests under its LH. Match them on
OrderNumberandShipNumber, and also onLineNumberfor conventional ships (the layout says these are the same as on the LH record). The API does not check this nesting. - Every header must include
InstructionDetails, even if it is an empty array[].
Before you start
InstructionHeaders[].DestinationCodemust be populated on every header, or that header is not delivered. This applies to container ships too, even though the layout leaves the header destination blank for them. The submission is accepted either way; a header with a blank destination reaches no recipient.InstructionDetails[].DestinationCodedoes not affect delivery.- Each header is delivered separately, to the recipients of its own destination. Recipients see the header's
OrderNumberas the payload's document number. LIFileName,LocationCodeandInstructionHeadersare required. Every header needsInstructionDetails(it may be[]), and at least one header must carry at least one line.- LI property names differ from MT and DI: LI uses
Organization,ProductCharsandCppShipwhere MT/DI useOrganisation,ProductCharacteristicandCPPShip. LD Shipped quantity isInstructionShipped(DI usesShippedQuantity). - Several numeric layout fields are strings in JSON:
LineNumber(header and detail),LowSortSequence,HighSortSequenceandRemoteQuantity. Send them as strings. - Dates are ISO 8601 datetimes. Where the layout splits a date and a time, the API carries one datetime. For ships, send
InstructionHeaders[].LoadDateas null rather than00000000.InstructionDetails[].LoadDatecarries a date and a time. - The part-pallet rule does not apply to Loading Instructions.
BH — Batch header → root (LIFileDTO)
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| — | — | File name | LIFileName | string | REQ | Must start with LI. Layout convention: LIsssddmmyyyyhhmmss.. |
| 1–2 | 2 | record type | — | — | Implied by the object; no property. The layout heads this section "HD", but the record type is BH. | |
| 3–5 | 3 | sending depot | LocationId | string | Renamed. 3-character location id of the sending depot. | |
| 6–11 | 6 | sequence number | BatchNumber | string | Renamed. Send as a string. Zero-padded to 6. | |
| 12–19 | 8 | date | CreateDateTime | datetime | Combined with time into one datetime. Format: ISO 8601, e.g. 2026-09-30T14:05:00. Not nullable. | |
| 20–27 | 8 | time | CreateDateTime | datetime | Combined with date into one datetime. |
LH — Instruction header → InstructionHeaders[]
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3 | 1 | transaction type | InstructionHeaders[]. | string | Values: N = new instruction. | |
| 4–10 | 7 | location code | InstructionHeaders[]. | string | Sending depot code. Send the same value as the root LocationCode. | |
| 11 | 1 | order type | InstructionHeaders[]. | string | Values: V = conventional ship, T = container ship, D = normal truck, Z = container truck. | |
| 12–17 | 6 | order number | InstructionHeaders[]. | string | Blank for ships; unique order number for trucks. Recipients see it as the payload's document number. | |
| 18–23 | 6 | ship number | InstructionHeaders[]. | string | ||
| 24–48 | 25 | Ship name | InstructionHeaders[]. | string | ||
| 49–56 | 8 | load date | InstructionHeaders[]. | datetime | For ships (00000000 in the file), send null. | |
| 57 | 1 | order status | InstructionHeaders[]. | string | Values: blank for ships; O = open, C = closed for trucks. | |
| 58–59 | 2 | destination type | InstructionHeaders[]. | string | Values: PO for conventional ships; blank for container ships; DP = depot, CU = customer for trucks. | |
| 60–66 | 7 | destination code | InstructionHeaders[]. | string | Discharge port (ships) or destination depot/customer (trucks). Must be populated on every header, container ships included: delivery goes to this destination. | |
| 67–72 | 6 | master order | InstructionHeaders[]. | string | Same as the order number. | |
| 73 | 1 | cold flag | InstructionHeaders[]. | string | Values: blank for ships; Y / N for trucks. | |
| 74–80 | 7 | from location | InstructionHeaders[]. | string | Location where the order was created. Trucks only. | |
| 81–87 | 7 | from user | InstructionHeaders[]. | string | User who created the order. Trucks only. | |
| 88–95 | 8 | from date | InstructionHeaders[]. | datetime | Combined with from time into one datetime. Trucks only; send null otherwise. | |
| 96–103 | 8 | from time | InstructionHeaders[]. | datetime | Combined with from date into one datetime. | |
| 104 | 1 | line status | InstructionHeaders[]. | string | Values: O = open, C = closed for conventional ships; blank for container ships and trucks. | |
| 105–108 | 4 | Line number | InstructionHeaders[]. | string | Send as a string. Sequential from 1 for conventional ships; 0 for container ships and trucks. | |
| 109–110 | 2 | Store | InstructionHeaders[]. | string | Store the fruit must come from. | |
| 111–112 | 2 | Bay | InstructionHeaders[]. | string | Bay the fruit must come from. | |
| 113–114 | 2 | Sender | InstructionHeaders[]. | string | ||
| 115–116 | 2 | Agent | InstructionHeaders[]. | string | The party who will receive and sell the product overseas. | |
| 117–118 | 2 | shipping sender | InstructionHeaders[]. | string | Usually the same as the sender. | |
| 119–120 | 2 | Shipping agent | InstructionHeaders[]. | string | Usually the same as the agent. | |
| 121 | 1 | Channel | InstructionHeaders[]. | string | Values: L = local, E = export. | |
| 122–123 | 2 | Stock pool | InstructionHeaders[]. | string | Values: CE = certified, RJ = rejected. | |
| 124–125 | 2 | Organization | InstructionHeaders[]. | string | Spelled with a z (MT/DI use Organisation). | |
| 126–127 | 2 | Country | InstructionHeaders[]. | string | ||
| 128–129 | 2 | Commodity | InstructionHeaders[]. | string | ||
| 130–131 | 2 | Variety group | InstructionHeaders[]. | string | ||
| 132–134 | 3 | Variety | InstructionHeaders[]. | string | ||
| 135–137 | 3 | Sub variety | InstructionHeaders[]. | string | The layout leaves it blank. | |
| 138–140 | 3 | Actual variety | InstructionHeaders[]. | string | The layout leaves it blank. | |
| 141–144 | 4 | Pack | InstructionHeaders[]. | string | ||
| 145–148 | 4 | Grade | InstructionHeaders[]. | string | ||
| 149–153 | 5 | Mark | InstructionHeaders[]. | string | ||
| 154–158 | 5 | low count | InstructionHeaders[]. | string | Lower end of the count range. | |
| 159–162 | 4 | low_sort_seq | InstructionHeaders[]. | string | Renamed. Send as a string. Sort sequence of the low count. | |
| 163–167 | 5 | high count | InstructionHeaders[]. | string | Upper end of the count range. | |
| 168–171 | 4 | high_sort_seq | InstructionHeaders[]. | string | Renamed. Send as a string. Sort sequence of the high count. | |
| 172–173 | 2 | inventory code | InstructionHeaders[]. | string | ||
| 174–177 | 4 | picking reference | InstructionHeaders[]. | string | ||
| 178–179 | 2 | product group | InstructionHeaders[]. | string | ||
| 180–182 | 3 | product chars | InstructionHeaders[]. | string | MT/DI use ProductCharacteristic. | |
| 183–184 | 2 | target market | InstructionHeaders[]. | string | ||
| 185–191 | 7 | farm | InstructionHeaders[]. | string | ||
| 192–199 | 8 | remarks | InstructionHeaders[]. | string | ||
| 200 | 1 | cpp_ship | InstructionHeaders[]. | string | Values: Y / N (ship pallets according to the cartons-per-pallet rule). JSON casing CppShip (DI uses CPPShip). | |
| 201 | 1 | pallet base type | InstructionHeaders[]. | string | e.g. S = standard. | |
| 202 | 1 | unit type | InstructionHeaders[]. | string | Values: P = pallet-level instruction, C = carton-level instruction. | |
| 203–207 | 5 | instruction quantity | InstructionHeaders[]. | integer | Quantity to be shipped. | |
| 208 | 1 | xmit flag | InstructionHeaders[]. | string | Values: Y / N. | |
| 209 | 1 | revision | InstructionHeaders[]. | string | Values: 0–8 = revision, 9 = delete. | |
| 210 | 1 | message number | — | — | Not in the API. | |
| 211–217 | 7 | tran user | — | — | Not in the API. | |
| 218–225 | 8 | tran date | — | — | Not in the API. | |
| 226–233 | 8 | tran time | — | — | Not in the API. |
LD — Instruction detail → InstructionHeaders[].InstructionDetails[]
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Implied by the object; no property. | |
| 3–8 | 6 | Order number | InstructionHeaders[]. | string | Same as the parent header's OrderNumber. | |
| 9–14 | 6 | Ship number | InstructionHeaders[]. | string | Same as the parent header's ShipNumber. | |
| 15–21 | 7 | location code | InstructionHeaders[]. | string | Sending depot code. Same as the parent header's LocationCode. | |
| 22–23 | 2 | handling point | InstructionHeaders[]. | string | The layout leaves it blank. | |
| 24 | 1 | line type | InstructionHeaders[]. | string | Values: P = positive, N = negative. | |
| 25 | 1 | line status | InstructionHeaders[]. | string | Values: O = open, C = closed. | |
| 26–29 | 4 | line number | InstructionHeaders[]. | string | Send as a string. Conventional ships: the header's line number. Container ships: 1 = positive, 0 = negative. Trucks: 1. | |
| 30–33 | 4 | sequence number | InstructionHeaders[]. | integer | Starts at 1 within each line number. | |
| 34–35 | 2 | store | InstructionHeaders[]. | string | ||
| 36–37 | 2 | bay | InstructionHeaders[]. | string | ||
| 38–43 | 6 | position | InstructionHeaders[]. | string | Conventional ships only; blank otherwise. | |
| 44–45 | 2 | destination type | InstructionHeaders[]. | string | Values: PO for ships and container trucks; DP / CU for normal trucks. | |
| 46–52 | 7 | destination code | InstructionHeaders[]. | string | Destination port (ships and container trucks) or depot/customer code (normal trucks). Does not affect delivery; delivery goes by the header's DestinationCode. | |
| 53–54 | 2 | sender | InstructionHeaders[]. | string | Ships and container trucks. | |
| 55–56 | 2 | agent | InstructionHeaders[]. | string | Ships and container trucks. | |
| 57–58 | 2 | shipping sender | InstructionHeaders[]. | string | Usually the same as the sender. | |
| 59–60 | 2 | shipping agent | InstructionHeaders[]. | string | Usually the same as the agent. | |
| 61–66 | 6 | consec number | InstructionHeaders[]. | string | Blank for conventional ships and normal trucks. | |
| 67 | 1 | channel | InstructionHeaders[]. | string | Values: E = export, L = local. | |
| 68–69 | 2 | stockpool | InstructionHeaders[]. | string | Values: CE = certified, RJ = rejected. | |
| 70–71 | 2 | organisation | InstructionHeaders[]. | string | Renamed (spelled with a z). | |
| 72–73 | 2 | country | InstructionHeaders[]. | string | ||
| 74–75 | 2 | commodity | InstructionHeaders[]. | string | ||
| 76–77 | 2 | variety group | InstructionHeaders[]. | string | ||
| 78–80 | 3 | variety | InstructionHeaders[]. | string | ||
| 81–83 | 3 | sub variety | InstructionHeaders[]. | string | The layout leaves it blank. | |
| 84–86 | 3 | actual variety | InstructionHeaders[]. | string | The layout leaves it blank. | |
| 87–90 | 4 | pack | InstructionHeaders[]. | string | ||
| 91–94 | 4 | grade | InstructionHeaders[]. | string | ||
| 95–99 | 5 | mark | InstructionHeaders[]. | string | ||
| 100–104 | 5 | low count | InstructionHeaders[]. | string | Lower end of the count range. | |
| 105–108 | 4 | low_sort_seq | InstructionHeaders[]. | string | Renamed. Send as a string. | |
| 109–113 | 5 | high count | InstructionHeaders[]. | string | Upper end of the count range. | |
| 114–117 | 4 | high_sort_seq | InstructionHeaders[]. | string | Renamed. Send as a string. | |
| 118–119 | 2 | inventory code | InstructionHeaders[]. | string | ||
| 120–123 | 4 | picking reference | InstructionHeaders[]. | string | ||
| 124–125 | 2 | product group | InstructionHeaders[]. | string | ||
| 126–128 | 3 | product chars | InstructionHeaders[]. | string | MT/DI use ProductCharacteristic. | |
| 129–130 | 2 | target market | InstructionHeaders[]. | string | ||
| 131–137 | 7 | farm | InstructionHeaders[]. | string | ||
| 138–145 | 8 | remarks | InstructionHeaders[]. | string | ||
| 146 | 1 | unit type | InstructionHeaders[]. | string | Values: P = pallet-level instruction, C = carton-level instruction. | |
| 147 | 1 | cpp_ship | InstructionHeaders[]. | string | Values: Y / N (ship pallets according to the cartons-per-pallet rule). JSON casing CppShip. | |
| 148 | 1 | pallet base type | InstructionHeaders[]. | string | e.g. S = standard. | |
| 149–152 | 4 | instruction quantity | InstructionHeaders[]. | integer | Quantity to be shipped. | |
| 153–156 | 4 | Shipped quantity | InstructionHeaders[]. | integer | Renamed. Quantity already shipped. | |
| 157 | 1 | xmit flag | InstructionHeaders[]. | string | Layout value: N. | |
| 158 | 1 | revision | InstructionHeaders[]. | string | Send as a string. Layout value: 0. | |
| 159 | 1 | message number | — | — | Not in the API. | |
| 160–166 | 7 | tran user | — | — | Not in the API. The layout says leave blank. | |
| 167–174 | 8 | tran date | — | — | Not in the API. The layout says leave blank. | |
| 175–182 | 8 | tran time | — | — | Not in the API. The layout says leave blank. | |
| 183–186 | 4 | remote_qty | InstructionHeaders[]. | string | Renamed. Send as a string. Stock quantity coming from remote depots. | |
| 187–193 | 7 | Stock_locn | InstructionHeaders[]. | string | Renamed. The remote site the remote quantity comes from. | |
| 194 | 1 | Order_type | InstructionHeaders[]. | string | Values: V = conventional ship, T = container ship, D = normal truck, Z = container truck. Same as the header's OrderType. | |
| 195–219 | 25 | Ship_name | InstructionHeaders[]. | string | Ship name (the layout's comment says "Port"). Same as the header's ShipName. | |
| 220–232 | 13 | Load_date | InstructionHeaders[]. | datetime | Date and time. Format: ISO 8601 (the layout uses yyyymmddhh:mm). | |
| 233–234 | 2 | Berth | InstructionHeaders[]. | string | ||
| 235 | 1 | Xmit_flag2 | InstructionHeaders[]. | string | ||
| 236–237 | 2 | Pool | InstructionHeaders[]. | string | ||
| 238–240 | 3 | Count group | InstructionHeaders[]. | string | ||
| 241–242 | 2 | Warehouse | InstructionHeaders[]. | string | ||
| 243–248 | 6 | Orig account | InstructionHeaders[]. | string | ||
| 249–288 | 40 | Load remarks | InstructionHeaders[]. | string | Sales order comments. | |
| 289–301 | 13 | Gtin | InstructionHeaders[]. | string | ||
| 302–311 | 10 | Sell By code | InstructionHeaders[]. | string | ||
| 312–321 | 10 | AgreementCode | InstructionHeaders[]. | string | eCert agreement code. |
BT — Batch trailer → none
| Pos | Len | Layout field | JSON property | Type | Req | Notes |
|---|---|---|---|---|---|---|
| 1–2 | 2 | record type | — | — | Not in the API. | |
| 3–5 | 3 | receiving depot | — | — | Not in the API. Recipients come from each header's DestinationCode. | |
| 6–11 | 6 | sequence number | — | — | Not in the API. Use root BatchNumber. | |
| 12–18 | 7 | total records | — | — | Not in the API. | |
| 19–25 | 7 | total LD records | — | — | Not in the API. The count of all InstructionDetails[] replaces it. | |
| 26–32 | 7 | total instr_qty | — | — | Not in the API. |
API-only properties
| JSON property | Type | Meaning / what to send |
|---|---|---|
LocationCode | string | Required. Sending depot code. Send the same value as InstructionHeaders[]. and InstructionDetails[].. |
Provider | string | Your system or vendor name. The BH record has no provider field. |
Version | string | Version of your application. The BH record has no version field. |
Not in the API
- LH: message number, tran user, tran date, tran time.
- LD: message number, tran user, tran date, tran time.
- BT: the batch trailer record is not in the API.