System Shipment Status Update Methods
In order to gain broad compliance, we have built a very simple electronic data exchange format for communications with our transportation service providers.
Shipment status updates from carriers, brokers, agents and 3PL’s are accomplishedby posting an XML document to our web service at the following address:
Currently, we can accept 17 types of status updates to the system. Each update is sent in a very similar format. Each update refers to a route segment, or “Leg” from an origin Point-A to a destination Point-B.
Status Update Types:
- ETA ORIGIN:When the shipment is dispatched.
- ATA ORIGIN:When the driver/pilot arrives at cargo origination.
- LOADED-ONBOARD:When Loaded
- ETD ORIGIN:When known, at cargo origination.
- ATD ORIGIN:When departing cargo origination.
- ETA DESTINATION:When known en-route to destination
- ATA DESTINATION:When arriving destination
- UNLOADED-DISCHARGED:When cargo is unloaded
- ETD DESTINATION:When known at cargo destination
- ATD DESTINATION:When departing cargo destination
- ETA BORDER:When known
- ARRIVE BORDER:When arriving at International Border
- DEPART BORDER:When departing International Border
- CUSTOMS ENTRY : When goods enter customs
- CUSTOMS RELEASE : When goods released from customs.
- ONBOARD CONFIRMATION : Ocean – When onboard confirmation has been received from steamship line.
- POSITION UPDATE – Sent any time en-route
Data Element Definitions:
LOGIN: Assigned to you by operations.
Alpha Numeric 50 characters max
Example: username
Requiredfor authentication
Occurrence: All Updates
PASSWORD : Assigned to you by operations.
Alpha Numeric12 characters max
Example: password
Required for authentication
Occurrence: All updates
CONTROLID: YOUR unique identifier for the update.
Alpha Numeric 20 characters max
Example: S1234XYZ
Required
Occurrence: All updates
EVENTTYPE: Name of the update type being sent
Alpha Numeric 30 characters max
Example: ETA ORIGIN, ARRIVE BORDER, etc…
Required
Occurrence: All updates
EVENTDATETIME:Date and time of event being reported.
Alpha Numeric 16 characters max including spaces. 24hr. format MM/dd/yyyy HH:mm
Example: 01/01/2005 14:40
Required
Occurrence: All updates
TIMEZONEOFFSET: Integer value indicating offset from GMT/Zulu (UTC) for the event reported.
Numeric
Example: -5 (see table of valid time zone offset values in this document)
Required – Daylight savings time is automatically accounted for in our system.
Occurrence: All updates
SHIPMENTID:OUR unique identifier for the shipment.
Numeric 10 digits max
Preferred, but not required. Our system matches your update to our shipment first by this shipment ID if available, next by pro number or bill of lading number. Updates that do not match an active shipment in our system by one of these three identifiers are recorded as an exception and forwarded to operations.
Occurrence: All updates
PROBOOKINGNO:Carrier PRO number or booking number
Alpha Numeric 20 characters max
Example: PRO12345-12345
Required for ETA ORIGIN update, optional on others if SHIPMENTID is provided.
Occurrence: All updates
BOL:Bill of Lading or Master Bill of Lading for this shipment
Alpha Numeric 20 characters max
Example: BOL12345-12345
Required for LOADED-ONBOARD update, optional on others if SHIPMENTID is provided.
Occurrence: All updates
Data Element Definitions: (cont)
ORIGCODE:Origin Postal Code or Airport Code
Alpha Numeric 10 characters max.
Example: 48083 (Postal Code) or LAX (IATA or ICAO airport code)
Required
Occurrence: All updates
DESTCODE:Destination Postal Code or Airport Code
Alpha Numeric 10 characters max.
Example: 48083 (Postal Code) or LAX (IATA or ICAO airport code)
Required
Occurrence: All updates
UNIT:Vehicle ID or Aircraft Tail Number assigned
Alpha Numeric 20 characters max
Example: 53102 or N175XY
Optional
Occurrence: ETA ORIGIN update
EQUIPDESC:Vehicle or Aircraft Size, Type, Model
Alpha Numeric 50 characters max
Example: 53ft Trailer – Power Unit 12345
Optional
Occurrence: ETA ORIGIN update
QUANTITY: Pieces / Packages / Passengers Loaded at Origin
Numeric
Example: 19
Optional
Occurrence: LOADED-ONBOARD update
WEIGHT: Weight of cargo Loaded at Origin
Numeric
Example: 10870
Optional
Occurrence: LOADED-ONBOARD update
PACKINGSLIP: Packing Slip Number
Alpha Numeric 20 characters max
Example: PS248561
Optional
Occurrence: LOADED-ONBOARD update
POD: Proof Of Delivery / Signatory
Alpha Numeric 50 characters max
Example: John Johnson
Optional
Occurrence: UNLOADED-DISCHARGED update
COMMENT: Free form text describing any important information regarding the update.
Alpha Numeric 500 characters max
Example: “30 miles south of Indianapolis, IN” (as in POSITION UPDATE)
Optional
Occurrence: All updates
CITY: Name of Most Nearby City to Current Position
Alpha Numeric 30 characters max
Example: Louisville
Optional
Occurrence: POSITION UPDATE
Data Element Definitions: (cont)
STATECODE: State or Province Code of Current Position
Alpha Numeric 3 characters max
Example: NY, ON, JAL
Optional
Occurrence: POSITION UPDATE
POSTALCODE: Most Nearby Postal Code of Current Position
Alpha Numeric 10 characters max
Example: 46514
Optional
Occurrence: POSITION UPDATE
LATITUDE : Coordinate of Current Position
Alpha Numeric 14 Format: ###d ##m ##s H
Example: 041d 12m 22s N
Optional
Occurrence: POSITION UPDATE
LONGITUDE : Coordinate of Current Position
Alpha Numeric 14 Format: ###d ##m ##s H
Example: 089d 13m 28s W
Optional
Occurrence: POSITION UPDATE
IMPORTANT: Use of a Soap Envelope around Data
As a .NET web service, all transmissions require a soap envelope, although we are not using the soap envelope for any purpose at this time.
The proper soap envelope before and after the <XMLDATA> tak is shown in the first example ETA ORIGIN.
Update Method One:
Transmission of an XML document.
All XML formats will look very similar with slightly different fields of information required for each. XML documents are posted to our web service interface in the following formats. The change in each transmission has been highlighted.
Examples contain sample data.
ETA ORIGIN
<?xmlversion="1.0"encoding="utf-8"?>
soap:Envelopexmlns:xsi="
soap:Body
StatusUpdatexmlns="
<XMLDATA>
STATUSUPDATE
LOGINLOGIN</LOGIN
PASSWORDPASSWORD</PASSWORD
CONTROLIDABC123</CONTROLID
SHIPMENTID15132</SHIPMENTID
EVENTTYPEETA ORIGIN</EVENTTYPE
EVENTDATETIME09/01/200514:15</EVENTDATETIME
TIMEZONEOFFSET-5</TIMEZONEOFFSET
PROBOOKINGNOPRO123ABC</PROBOOKINGNO
BOLBOL123ABC</BOL
ORIGCODE60615</ORIGCODE
DESTCODE48228</DESTCODE
COMMENTComments up to 500 characters here</COMMENT UNIT53102</UNIT
EQUIPDESC53ft Tractor Trailer</EQUIPDESC
</STATUSUPDATE
</XMLDATA>
</StatusUpdate
</soap:Body
</soap:Envelope
ATA ORIGIN
<?xmlversion="1.0"encoding="utf-8"?>
<XMLDATA>
STATUSUPDATE
LOGINLOGIN</LOGIN
PASSWORDPASSWORD</PASSWORD
CONTROLIDABC123</CONTROLID
SHIPMENTID15132</SHIPMENTID
EVENTTYPEATA ORIGIN</EVENTTYPE
EVENTDATETIME09/01/200514:15</EVENTDATETIME
TIMEZONEOFFSET-5</TIMEZONEOFFSET
PROBOOKINGNOPRO123ABC</PROBOOKINGNO
BOLBOL123ABC</BOL
ORIGCODE60615</ORIGCODE
DESTCODE48228</DESTCODE
COMMENTComments up to 500 characters here</COMMENT
</STATUSUPDATE
</XMLDATA>
ETD ORIGIN, ATD ORIGIN, ETA DESTINATION, ATA DESTINATION,
ETD DESTINATION, ATD DESTINATION, ETA BORDER, ARRIVE BORDER,
DEPART BORDER, CUSTOMS ENTRY, CUSTOMS RELEASE,
ONBOARD CONFIRMATION
All are the same as ATA ORIGIN above except for EVENTTYPE element.
LOADED-ONBOARD
<?xmlversion="1.0"encoding="utf-8"?>
<XMLDATA>
STATUSUPDATE
LOGINLOGIN</LOGIN
PASSWORDPASSWORD</PASSWORD
CONTROLIDABC123</CONTROLID
SHIPMENTID15132</SHIPMENTID
EVENTTYPEATA ORIGIN</EVENTTYPE
EVENTDATETIME09/01/200514:15</EVENTDATETIME
TIMEZONEOFFSET-5</TIMEZONEOFFSET
PROBOOKINGNOPRO123ABC</PROBOOKINGNO
BOLBOL123ABC</BOL
ORIGCODE60615</ORIGCODE
DESTCODE48228</DESTCODE
COMMENT>124 Pieces in 12 cartons</COMMENT
QUANTITY124</QUANTITY
WEIGHT12345</WEIGHT
PACKINGSLIPPS12345ABCDE</PACKINGSLIP
</STATUSUPDATE
</XMLDATA>
UNLOADED-DISCHARGED
<?xmlversion="1.0"encoding="utf-8"?>
<XMLDATA>
STATUSUPDATE
LOGINLOGIN</LOGIN
PASSWORDPASSWORD</PASSWORD
CONTROLIDABC123</CONTROLID
SHIPMENTID15132</SHIPMENTID
EVENTTYPEUNLOADED-DISCHARGED</EVENTTYPE
EVENTDATETIME09/01/200514:15</EVENTDATETIME
TIMEZONEOFFSET-5</TIMEZONEOFFSET
PROBOOKINGNOPRO123ABC</PROBOOKINGNO
BOLBOL123ABC</BOL
ORIGCODE60615</ORIGCODE
DESTCODE48228</DESTCODE
COMMENT>124 Pieces in 12 cartons</COMMENT
PODJOHN SMITH</POD
</STATUSUPDATE
</XMLDATA>
POSITION UPDATE
<?xmlversion="1.0"encoding="utf-8"?>
<XMLDATA>
STATUSUPDATE
LOGINLOGIN</LOGIN
PASSWORDPASSWORD</PASSWORD
CONTROLIDABC123</CONTROLID
SHIPMENTID15132</SHIPMENTID
EVENTTYPEATA ORIGIN</EVENTTYPE
EVENTDATETIME09/01/200514:15</EVENTDATETIME
TIMEZONEOFFSET-5</TIMEZONEOFFSET
PROBOOKINGNOPRO123ABC</PROBOOKINGNO
BOLBOL123ABC</BOL
ORIGCODE60615</ORIGCODE
DESTCODE48228</DESTCODE
COMMENTComments up to 500 characters here</COMMENT
CITYSOUTH BEND</CITY
STATECODEIN</STATECODE
POSTALCODE46613</POSTALCODE
LATITUDE041d 42m 26s N</LATITUDE
LONGITUDE086d 18m 59s W</LONGITUDE
</STATUSUPDATE
</XMLDATA>
OPTION: SEND ALL DATA ELEMENTS
You may send all elements in the status update document with every transmission. Data that does not apply to the EVENTTYPE specified is ignored.
<?xmlversion="1.0"encoding="utf-8"?>
<XMLDATA>
STATUSUPDATE
LOGINLOGIN</LOGIN
PASSWORDPASSWORD</PASSWORD
CONTROLIDABC123</CONTROLID
SHIPMENTID15132</SHIPMENTID
EVENTTYPE>UNLOADED-DISCHARGED</EVENTTYPE
EVENTDATETIME09/01/200514:15</EVENTDATETIME
TIMEZONEOFFSET-5</TIMEZONEOFFSET
PROBOOKINGNOPRO123ABC</PROBOOKINGNO
BOLBOL123ABC</BOL
ORIGCODE60615</ORIGCODE
DESTCODE48228</DESTCODE
UNIT</UNIT
COMMENT</COMMENT
EQUIPDESC</EQUIPDESC
QUANTITY</QUANTITY
WEIGHT</WEIGHT
PACKINGSLIP</PACKINGSLIP
PODJOHN SMITH</POD
CITY</CITY
STATECODE</STATECODE
POSTALCODE</POSTALCODE
LATITUDE</LATITUDE
LONGITUDE</LONGITUDE
</STATUSUPDATE
</XMLDATA>
Valid Time Zone Offset Values
VALUEDESC
-12GMT-12 Eniwetok
-11GMT-11 Samoa
-10GMT-10 Hawaii
-9GMT-9 Alaska
-8GMT-8 PST, Pacific US
-7GMT-7 MST, Mountain US
-6GMT-6 CST, Central US
-5GMT-5 EST, Eastern US
-4GMT-4 Atlantic, Canada
-3GMT-3 Brazilia, Buenos Aries
-2GMT-2 Mid-Atlantic
-1GMT-1 CapeVerdes
0GMT Greenwich Mean Time, Dublin
1GMT+1 Berlin, Rome
2GMT+2 Israel, Cairo
3GMT+3 Moscow, Kuwait
4GMT+4 Abu Dhabi, Muscat
5GMT+5 Islamabad, Karachi
6GMT+6 Almaty, Dhaka
7GMT+7 Bangkok, Jakarta
8GMT+8 Hong Kong, Beijing
9GMT+9 Tokyo, Osaka
10GMT+10 Sydney, Melbourne, Guam
11GMT+11 Magadan, Soloman Is.
12GMT+12 Fiji, Wellington, Auckland
SAMPLE ASP.NET (VB) TEST CODE FOR SENDING XML DOCUMENT
Of course, there are several ways to do this, but in case you are looking for some guidance, the following should help get you started.
Imports System.Xml
Imports System.net
Imports System.io
In your Page_Load sub:
Dim sFullPath AsString = Server.MapPath("XMLTEST.xml")
Dim sURL AsString = "
Dim resp AsString = sendXML(sURL, sFullPath)
Response.Write(resp) ‘to display response
Here is a sub that I have used for testing that works:
PublicFunction sendXML(ByVal strURl AsString, ByVal strFullPath AsString) AsString
Dim request As HttpWebRequest
Dim xmlDoc As System.Xml.XmlDocument
xmlDoc = New System.Xml.XmlDocument
xmlDoc.Load(strFullPath)
Dim strXML AsString
Dim strResponse AsString
Dim strExep AsString
strXML = xmlDoc.InnerXml
Dim myRequest As System.Net.HttpWebRequest = CType(HttpWebRequest.Create(strURl), System.Net.HttpWebRequest)
myRequest.AllowAutoRedirect = False
myRequest.Method = "POST"
myRequest.ContentType = "text/xml; charset=""UTF-8"""
myRequest.Accept = "True"
myRequest.Timeout = 50000
Dim strRequest AsByte() = System.Text.Encoding.UTF8.GetBytes(strXML)
myRequest.ContentLength = strRequest.Length
Dim temp AsString = myRequest.Headers.Item("host")
Dim xmlHTTPResponse As System.Net.HttpWebResponse
Dim xmlResponse AsNew System.Xml.XmlDocument
Dim RequestStream As System.IO.Stream = myRequest.GetRequestStream()
RequestStream.Write(strRequest, 0, strRequest.Length)
RequestStream.Close()
Try
Dim myResponse As System.Net.HttpWebResponse = CType(myRequest.GetResponse(), System.Net.HttpWebResponse)
Dim ResponseStream As System.IO.Stream = myResponse.GetResponseStream
xmlResponse.Load(ResponseStream)
strResponse = xmlResponse.InnerXml
myResponse = Nothing
Return strResponse
Catch eException As Exception
strExep = eException.Message
Return strExep
Finally
EndTry
EndFunction
SAMPLE XML DOCUMENT
Copy and paste the text below into a file named :XMLTEST.xml
<?xmlversion="1.0"encoding="utf-8"?>
soap:Envelopexmlns:xsi="
soap:Body
StatusUpdatexmlns="
XMLDATA
STATUSUPDATE
</LOGIN
PASSWORDtestcarr</PASSWORD
CONTROLIDABC123</CONTROLID
SHIPMENTID15132</SHIPMENTID
EVENTTYPEUNLOADED-DISCHARGED</EVENTTYPE
EVENTDATETIME09/01/2005 14:15</EVENTDATETIME
TIMEZONEOFFSET-5</TIMEZONEOFFSET
PROBOOKINGPRO123ABC</PROBOOKING
BOLBOL123ABC</BOL
ORIGCODE60615</ORIGCODE
DESTCODE60660</DESTCODE
UNIT531045</UNIT
COMMENT />
EQUIPDESC53 FT TRAILER</EQUIPDESC
QUANTITY200</QUANTITY
WEIGHT20000</WEIGHT
PACKINGSLIPPKSLP12345</PACKINGSLIP
PODJOHN SMITH</POD
CITYCHICAGO</CITY
STATECODEIL</STATECODE
POSTALCODE60660</POSTALCODE
LATITUDE041d 42m 26s N</LATITUDE
LONGITUDE086d 18m 59s W</LONGITUDE
</STATUSUPDATE
</XMLDATA
</StatusUpdate
</soap:Body
</soap:Envelope