The following details how to track a package with Mercury via an API request.
Usage Note
The Track Request API should be used to look up tracking information for individual shipments on an ad-hoc basis. Each package may be tracked once per hour (24 times per day). If you need updates for multiple shipments at once, please use the tracking file.
Overview
The protocol is based on XML data exchange with HTTP used as a transport. A non-validating parser is used and hence no internal or external DTD needs to be specified. The data must be well formed and all validation is handled at the application (not parser) level. Error handling will be done by always including the <Errors> container in the response. The Errors element will not be returned if no errors are found.
Connection
To connect to the site use the following HTTPS URL via regular POST method with the parameter RQXML=<your xml document> https://api.landmarkglobal.com/v2/Track.php
Encoding
Mercury uses UTF-8 for character encoding. If your system outputs in an encoding other than UTF-8, please include an encoding flag in your XML header.
Example: <?xml version="1.0" encoding="UTF-8"?>
Example: <?xml version="1.0" encoding="ISO-8859-1"?>
Test Mode
When first given access to the API, the client will be placed in Test mode. Requests made while in test mode will not act on live data. After approval has been received to go live from Landmark, all requests are active unless the <Test> flag is passed. During a test API call, orders will not be cancelled but errors will be reported when appropriate.
During a test API call, validation will be very basic, focusing on fields being required and passing sane values. Assuming the request passes the basic validation, responses are randomized. Some requests will succeed and some will fail with different error messages. This is done so that the programmer has an opportunity to see a wide variety of responses and can be prepared to handle many potential results.
TrackRequest
<TrackRequest>
<Login>
<Username>demoapi</Username>
<Password>demo123</Password>
</Login>
<Test>true</Test>
<ClientID>218</ClientID> <!-- Required if more than one client under user, otherwise Optional -->
<!-- Reference OR TrackingNumber OR PackageReference is required, but not all three -->
<Reference/>
<TrackingNumber>LTN123121</TrackingNumber>
<PackageReference/>
<RetrievalType>Historical</RetrievalType> <!-- Optional Node. Will return all tracking statuses for a packages if populated. Will return last tracking status if empty or node not present -->
</TrackRequest>
TrackResponse
<TrackResponse>
<Errors> <!-- Only if Error(s) occur is this element included-->
<Error>
<ErrorCode>Invalid</ErrorCode>
<ErrorMessage>No shipment found</ErrorMessage>
</Error>
</Errors>
<Result>
<Success>true</Success>
<ShipmentDetails>
<EndDeliveryCarrier>Canada Post</EndDeliveryCarrier>
</ShipmentDetails>
<Packages>
<Package>
<TrackingNumber>1Z123971A4</TrackingNumber>
<LandmarkTrackingNumber>LTN123121</LandmarkTrackingNumber>
<PackageReference/>
<Events>
<Event>
<Status>Delivered</Status>
<DateTime>10/21/2025 6:48 AM</DateTime> <!-- YYYY-MM-DD HH:MM:SS 24h format in America/Chicago time per the IANA TimeZone Database https://www.iana.org/time-zones -->
<Location>Windsor, ON</Location> <!-- If available-->
<EventCode>500</EventCode> <!-- Only included if the request RetrievalType = "Historical" -->
<EventSubCode>5000</EventSubCode> <!-- Only included if available and if the request RetrievalType = "Historical" -->
</Event>
</Events>
</Package>
</Packages>
</Result>
</TrackResponse>
Landmark Tracking Codes and Subcodes
Note: The following are general explanations of the meaning of each status code; the text of actual status updates may differ. It is also possible to receive other statuses not shown here, depending on your destination and service type.
Click for LGI Codes Table
Description | Code | Mercury EN Label | Comment |
|---|---|---|---|
Shipment Information Transmitted To Carrier | 100 | Can be used to map when we submit data to the final mile carrier. | |
Customs Payment Update | 110 | ||
Customs Transmitted | 120 | Can be mapped in case the carrier is also the customs broker. | |
Customs Cleared | 125 | Can be mapped in case the carrier is also the customs broker. | |
Customs Issue | 135 | Can be mapped in case the carrier is also the customs broker. | |
Arrival At Airport | 200 | Shipment has arrived at depot | |
Departure Scan | 225 | Shipment has departed from depot/airport OR Incoming/outgoing scan at facility | |
Departure To Airport | 250 | Shipment has departed from depot | |
Item Touched By Carrier | 275 | Parcel processed by carrier | |
Item Out For Delivery | 300 | Parcel in delivery | |
Attempted Delivery | 400 | Attempted delivery | |
Item At Pickup Location | 410 | Parcel available for pick-up | |
Item Redirected To New Address | 450 | Parcel redirect to new address | |
Item Successfully Delivered | 500 | Parcel delivered | |
Proof Of Delivery Received | 510 | Proof of delivery | |
Claim Issued | 800 | Usually comes from the carrier. | |
Delivery Refused | 900 | Consignee refused parcel |
Click for LGI Subcodes Table
Description | Mercury Code | Mercury Subcode | Mercury EN Label |
|---|---|---|---|
Payment Denied | 110 | 1101 | Customs Payment Denied |
Payment Received | 110 | 1102 | Customs Payment Received |
Payment Requested | 110 | 1103 | Customs Payment Requested |
Arrival at airport | 200 | N/A | Shipment has arrived at depot |
Incoming Scan at facility | 225 | 2250 | Incoming Scan at facility |
Outgoing Scan at facility | 225 | 2251 | Outgoing Scan at facility |
Departure from depot | 225 | 2000 | Shipment has departed from depot |
Arrival at depot | 225 | N/A | Shipment has arrived at depot |
Departure from airport | 250 | 2000 | Shipment has departed from airport |
Departure Scan | 275 | 2000 | Parcel departed |
Shipment On Hold | 275 | 2001 | Parcel on hold |
Shipment Has Customs Issue | 275 | 2002 | Parcel has customs issues |
Shipment Available For Pickup | 275 | 2003 | Parcel ready for pick-up |
Shipment Scheduled For Return | 275 | 2004 | Parcel will be returned |
Corrected Address May Be Delayed | 275 | 2005 | Parcel may be delayed for address correction |
Weather Delay | 275 | 2006 | Parcel may be delayed due to weather |
Carrier Network Delay | 275 | 2007 | Parcel may be delayed |
Remote Area Delay | 275 | 2008 | Parcel may be delayed for remote area |
Delay For Customer Update | 275 | 2009 | Parcel delayed - need customer update |
Mechanical Failure Delay | 275 | 2010 | Parcel may be delayed - mechanical failure |
Shipment On Hold For Incorrect Address | 275 | 2011 | Parcel on hold for incorrect address |
Shipment On Hold Needs Info For Customs | 275 | 2012 | Parcel on hold for missing customs information |
Shipment On Hold For Missing Apt | 275 | 2013 | Parcel on Hold, missing apartment |
Shipment On Hold For Incorrect Street | 275 | 2014 | Parcel on hold for incorrect Street |
Shipment On Hold For Incorrect City State | 275 | 2015 | Parcel on hold for incorrect City/State |
Shipment On Hold For Incorrect Postal | 275 | 2016 | Parcel on hold for incorrect Zip |
Bulky Shipment Delay | 275 | 2017 | Bulk Shipment may be delayed |
Shipment Repacked | 275 | 2018 | Parcel reconditioned |
No Time For Delivery | 275 | 2019 | No time for delivery |
Sorting Scan | 275 | 2020 | Parcel sorted |
Origin Package Handoff | 275 | 2021 | Parcel handed off |
No Space At Pickup Location | 275 | 2022 | No Space at pick-up location |
Dangerous Goods Shipment Delay | 275 | 2023 | Parcel may be delayed - Dangerous Goods |
Customer Dropped Off At Postal Facility | 275 | 2024 | Customer drop-off at postal facility |
Pickup Location Assigned | 275 | 2025 | Pick-up location assigned |
Package Damaged | 275 | 2750 | Parcel damaged |
Notification Send To Receiver | 275 | 2751 | Notification sent to consignee |
Package With No Info Scanned | 275 | 2753 | Package scanned - no information |
Bad Address Returning To Sender | 400 | 4001 | Failed delivery - incorrect address, parcel will be returned to sender |
First Unsuccessful Attempt | 400 | 4002 | First delivery attempt |
Second Unsuccessful Attempt | 400 | 4003 | Second delivery attempt |
Final Unsuccessful Attempt | 400 | 4004 | Final delivery attempt, parcel will be returned |
Other Unsuccessful Attempt | 400 | 4005 | Failed delivery attempt |
Attempt Refused | 400 | 4007 | Attempt Refused |
Consignee Not Present | 400 | 4008 | Consignee Not Present |
Business Not Open | 400 | 4009 | Business Not Open |
Shipment Delivered To Pickup Location | 400 | 4101 | Failed delivery attempt - parcel delivered to pick-up point |
Incorrect Sort | 275 | 4501 | Parcel incorrectly sorted |
Delivered To Signatory | 500 | 5000 | Parcel delivered to signatory |
Delivered To Front Door | 500 | 5001 | Parcel delivered at front door |
Delivered To Side Door | 500 | 5002 | Parcel delivered at side door |
Delivered To Back Door | 500 | 5003 | Parcel delivered at back door |
Delivered To Garage | 500 | 5004 | Parcel delivered in garage |
Delivered To Superintendent | 500 | 5005 | Parcel delivered to superintendent |
Delivered To Parcel Box | 500 | 5006 | Parcel delivered to parcel box |
Delivered To Lock Box | 500 | 5007 | Parcel delivered to lock box |
Delivered To Neighbor | 500 | 5008 | Parcel delivered to neighbour |
Picked Up Held Package | 500 | 5009 | Parcel delivered - Collected at pick-up point |
Delivered Inbound To Landmark | 500 | 5010 | In transit- handed over to Landmark |
Imminent Delivery | 500 | 5011 | Parcel ready for imminent delivery to consignee- Untracked mail |
Return Delivered To Sender | 900 | 9000 | Parcel returned to sender |
Addressee Not At Address | 900 | 9001 | Failed delivery, consignee absent, parcel will be returned to sender |
Shipment Undeliverable | 900 | 9002 | Failed delivery, parcel will be returned to sender |
Shipment Unclaimed | 900 | 9003 | Parcel not collected by consignee |
Return Pending | 900 | 9004 | Parcel will be returned to sender |
Failed To Forward To New Address | 900 | 9005 | Failed delivery, cannot be routed to new address, parcel will be returned to sender |
Seized By Customs | 900 | 9006 | Parcel seized by customs |
Shipment Stolen | 900 | 9007 | Parcel stolen and undeliverable |
Did Not Order | 900 | 9008 | Consignee did not order, parcel will be returned to sender |
Cancelled Order | 900 | 9009 | Oder cancelled, parcel will be returned to sender |
Duplicate Order | 900 | 9010 | Duplicate order, parcel will be returned to sender |
Late Delivery | 900 | 9011 | Late delivery, parcel will be returned to sender |
Refused Damaged | 900 | 9012 | Consignee refused parcel for damage, will be returned to sender |
Import Restricted | 900 | 9013 | Restricted import, parcel will be returned to sender |
Wrong Label | 900 | 9014 | Parcel undeliverable, label to be reprinted |
Possible Errors
This table lists all errors that may be returned by the Track API endpoint. [Brackets] in the ErrorMessage are used to represent to the value passed for the related element. An example is provided when an ErrorMessage is variable.
Related Element(s) | ErrorMessage | Details/Action |
|---|---|---|
General Errors | ||
User, API | User [username] does not have permissions to this API | |
Failure authenticating user | ||
User is not available. Check your username/password | ||
N/A | Unable to parse characters | Ensure that special characters are properly encoded and an encoding flag is included in your XML header. Example: <?xml version=""1.0"" encoding=""UTF-8""?> Example: <?xml version=""1.0"" encoding=""ISO-8859-1""?> |
<Login> Errors | ||
Login | Required element Login not found | Provide login credentials and verify the XML can be parsed |
Login name not provided | ||
| Request is missing client ID | |
Unable to authenticate the user credentials | ||
Client is inactive | ||
Client has been deactivated. Permission denied | ||
User [username] does not have permissions to client: [clientID] | ||
Unable to determine desired client for this user | If user has access to more than one client, the ClientID is required | |
Username, password | The username/password combination provided is invalid | |
The username/password combination provided is disabled | ||
Password not provided | ||
Errors Specific to Track API | ||
Reference | Either Reference, Package Reference or TrackingNumber is required, none were found | |
N/A | Insufficient data provided to determine shipment. Must provide a valid reference or tracking number | |
Could not find shipment in our system | ||
Duplicate results found. Shipment could not be tracked | ||
No data available for shipment | ||
For more information on tracking, please see the Tracking Overview.