InterShipper® API

Version: 3.1

 

 

 

 

 

 

PRODUCT: InterShipper API

Version: 3.1

ADDRESS: calc.intershipper.net (port 4000)

Effective Date: April 11, 2000

Overview
This is a technical overview, documenting usage of the InterShipper API, which will allow you to integrate InterShipper services into your Internet application. Knowledge of the Internet, XML, TCP Sockets and a high-level programming or scripting language is assumed.

In order to use InterShipper, an Internet connection is required at runtime

This document will focus on the XML API implementation for both shipment and tracking data. Other implementations are available at www.intershipper.net.

Terms and Conditions of Use
The use of InterShipper and the InterShipper API is governed by the InterShipper Terms and Conditions Agreement, which can be found at http://www.intershipper.net/legal.asp. Before using the InterShipper API, you must register for an InterShipper account and agree to the terms and conditions agreement. In exchange for providing this free component, you also agree to the following conditions:

  1. You will not alter the response when showing it to your customer, except to adjust the price for your handling charges. Primarily, this means that you will display the complete name of the carrier and service that InterShipper returns to you (ex. "UPS Next Day Air" instead of "Overnight" or "Next Day").
  2. If using InterShipper on a web site, you must display either the InterShipper logo, or either the words "Shipping Rates provided by InterShipper" or "Tracking information provided by InterShipper" on the page of your site where the results are displayed. The logo or text must hyperlink to http://www.intershipper.net, but you are allowed to use a new window or specify a different target. You can either take the InterShipper logo from the top of this document (scale it to your needs), or you can get logos from the InterShipper web site.

Implementation

The server at port 4000 of calc.intershipper.net accepts an XML encoded request and returns an XML encoded response. The specifications for these are defined in the next section. To perform this transaction, do the following:

  1. Generate an XML request.
  2. Open a TCP socket to calc.intershipper.net on port 4000.
  3. Strip out any carriage returns or linefeeds from your request.
  4. Send your request as plain ASCII text. Send a CrLf when done.
  5. InterShipper will execute your request, and return an XML response, terminated by a CrLf.
  6. Interpret that response and use it in your application.
  7. You can then either send another request, or close the socket.

 

Why XML?

Very simply, because XML allows for complex structured data to be easily manipulated. It is also self-defining, which allows us to append to this specification very easily.

For more information on XML refer to the following web sites:

What about security?

Previous versions of the InterShipper API have required the use of SSL for complete encryption of the request and response. We have found that this is unnecessary and is difficult to implement. If we look at the information being transmitted, we see that the only piece of information that needs to be secured is the InterShipper login email and password. Recognizing this, we have developed four levels of security for you to choose from:

  • At the lowest level, you can send your entire request in clear text. This provides no security.
  • At a medium level, you can use a DES-56 encryption algorithm and encrypt your login and password. You need to Base64 encode the encrypted text before putting the values in the EMAIL and PASSWORD attributes of your XML request. You will need to use your current IP address as the encryption key, so that InterShipper knows how to decode the encrypted text.
  • At a higher level, you can use the same medium-level process, but using a different key. To set this key, login to the InterShipper website and go to the Account Information area. Once the key is set, use this key for your encryption. With this level of security, InterShipper must be able to recognize you by IP address. This means that if you use a dynamic IP, or are behind a firewall that uses a dynamic IP, you cannot use this level of security.
  • At the highest level, we have created an HTTPS gateway. Instead of creating a socket call, you will need to send the XML request to https://www.intershipper.net/xml.asp?xml=<request>. Make sure you apply URL Encoding rules to the request.

How do I do this on Windows?

We recommend w3Sockets from Dimac Web Solutions (http://www.dimac.net) to create the socket call, and Alvaro Redondo’s implementation of DES-56 (http://sevillaonline.com/ActiveX/vb5/DES.htm). Both are freeware, and work well from ASP, Visual Basic, or any other Windows environment.

 

How do I do this on other operating systems?

Your best bet is to search the web for the appropriate libraries for your OS and language. TCP Sockets are natively available to Unix platforms, and DES-56 is found in many formats on the web. If all else fails, take a look at ftp://scss3.cl.msu.edu/pub/crypt/docs/des-algorithm-details.txt for complete details of DES-56.

Where can I get support?

We will be happy to help with minor issues or anything that appears to be a "bug". Please contact us via email at support@intershipper.net. Make sure that you let us know which implementation and version you are using (i.e. "XML API v3.1").

How much does this cost?

Absolutely nothing. InterShipper is completely free. We can however integrate InterShipper into your solution for you, or provide high-level support for a fee. Contact us for more information.

Shipping Rates

XML Request

The following is an overview of the XML request that you will need to send to InterShipper to retrieve shipping rates. Please note that the indentation and carriage returns are for readability purposes only. Although XML ignores white space, the InterShipper server uses CrLf combination to signal the end of a request. Make sure you strip out any Cr or Lf characters from your request except for the final CrLf at the end.

 

<INTERSHIPPER REQUEST="QUOTE" EMAIL="" PASSWORD="">

<CARRIERS>ALL</CARRIERS>

<ORIGIN>

<ADDRESS></ADDRESS>

<CITY></CITY>

<STATE></STATE>

<POSTALCODE></POSTALCODE>

<COUNTRY></COUNTRY>

</ORIGIN>

<DESTINATION>

<ADDRESS></ADDRESS>

<CITY></CITY>

<STATE></STATE>

<POSTALCODE></POSTALCODE>

<COUNTRY></COUNTRY>

</DESTINATION>

<SHIPMENT>

<WEIGHT UNITS=""></WEIGHT>

<DIMENSIONS UNITS="">

<LENGTH></LENGTH>

<WIDTH></WIDTH>

<HEIGHT></HEIGHT>

</DIMENSIONS>

<PACKAGING MATERIAL="" STYLE=""></PACKAGING>

<CONTENT DANGEROUS=""></CONTENT>

<LIQUIDVOLUME UNITS=""></LIQUIDVOLUME>

</SHIPMENT>

<SERVICE>

<SHIPDATE></SHIPDATE>

<SHIPMETHOD></SHIPMETHOD>

<ACCESSORIES>

<CODVALUE></CODVALUE>

<DECLAREDVALUE></DECLAREDVALUE>

<DUTIABLE></DUTIABLE>

<RESIDENTIALDELIVERY></RESIDENTIALDELIVERY>

<RESIDENTIALPICKUP></RESIDENTIALPICKUP>

</ACCESSORIES>

</SERVICE>

</INTERSHIPPER>

 

XML Request (continued)

Each tag is described below.

 

<INTERSHIPPER REQUEST="QUOTE" EMAIL="" PASSWORD="">

Begins the InterShipper request. REQUEST should always be QUOTE to indicate that a rate quote is requested. EMAIL and PASSWORD are always required, and must correspond to your InterShipper account. If you have not yet registered for a free InterShipper account, you must go to www.intershipper.net and register. If you would like to encrypt your email and password, see the section above entitled "What about security?"

 

<CARRIERS>ALL</CARRIERS>

Carriers should be either ALL or one or more of the following:

ABX (Airborne Express)

ANX (Airnet Express)

BAX (BAX Global)

DHL (DHL Airways)

EWW (Emery Worldwide)

FDX (FedEx Express)

RPS (FedEx Ground – formerly RPS)

UPS (United Parcel Service)

USPS (US Postal Service)

If you want to specify more than one carrier, but not ALL, use a pipe character (|) to separate the carrier codes. For example, <CARRIERS>ABX|DHL|FDX</CARRIERS> would request rates from Airborne Express, DHL Airways, and FedEx Express only. If omitted, ALL will be assumed.

 

<ORIGIN>

Describes the origin. Only POSTALCODE is required.

 

<DESTINATION>

Describes the destination. Only POSTALCODE is required if country is US. CITY is also required on most other countries.

 

<ADDRESS></ADDRESS>

Street Address. Optional.

 

<CITY></CITY>

City. Required on destination when destination country is not US.

 

<STATE></STATE>

State. Optional.

<POSTALCODE></POSTALCODE>

Postal Code or ZIP Code. Required unless destination country has no postal code system.

 

<COUNTRY></COUNTRY>

Country. Optional – defaults to "US" if omitted. InterShipper is smart about how you state this country name. You can use the standard two or three digit abbreviation, or you can specify the full name or shortened name of the country. In some cases, you can even specify the native name. It uses technology from SmartCountry (www.smartcountry.com) to determine this.

</ORIGIN> and </DESTINATION>

Closes the respective section. Required.

 

XML Request (continued)

 

<SHIPMENT>

Describes the physical attributes of the item being shipped.

 

<WEIGHT UNITS=""></WEIGHT>

The weight of the shipment. Required. Can be any numeric value, including decimals. UNITS should be one of the following:

LB (Pounds)

OZ (Ounces)

KG (Kilograms)

G (Grams)

 

<DIMENSIONS UNITS="">

Describes the dimensions of the item being shipped. Optional – but rates will not account for any dimensional weight rules unless supplied. UNITS should be one of the following:

IN (Inches)

FT (Feet)

CM (Centimeters)

M (Meters)

 

<LENGTH></LENGTH>

The length (or longest side) of the shipment. Required if dimensions are supplied. Can be any numeric value, including decimals.

 

<WIDTH></WIDTH>

The width (or next longest side) of the shipment. Required if dimensions are supplied. Can be any numeric value, including decimals.

 

<HEIGHT></HEIGHT>

The height (or smallest side) of the shipment. Required if dimensions are supplied. Can be any numeric value, including decimals. If the item is flat and relatively thin then set this value to zero (0). If there is any thickness to the item, it should be entered here.

 

</DIMENSIONS>

Closes the dimensions section. Required if dimensions are supplied.

 

<PACKAGING MATERIAL="" STYLE=""></PACKAGING>

Describes the packaging of the shipment. Optional – defaults to BOX. Should be one of the following:

BOX Any standard or specialized, square or rectangular, box.

LTR Any flat item resembling a letter that is longer than 11.5 inches or taller than 6.125 inches or thicker than 0.25 inches. In most cases, you will also want to set STYLE to CAR to use the carrier’s letter packaging. You will also want to make sure you enter the exact weight of the letter, because most carriers charge more for letters that weigh over 8 ounces.

ENV Any flat item in an envelope that is too small to be classified as a letter under the terms above.

PAK Indicates that you will be using a ‘pak’, which is an envelope for shipping items larger than a regular ‘letter’ can hold. It is usually made of Mylar, Tyvek, or another waterproof material. In most cases, you will also want to set STYLE to CAR to use the carrier’s packaging.

TUB Any item that is shipped in a tube.

XML Request (continued)

ROL Any item that is shipped on a roll or spool.

TIR Used when shipping tires.

FLM Indicates that the item you’re shipping is a film case.

CAN Used when you are shipping a can or pail that is not completely enclosed in a box.

TRE Used when shipping a shrub or a tree that isn’t completely enclosed in a box.

ENC Indicates that the item you are shipping is not completely enclosed in any shipping container defined in this list.

The MATERIAL attribute is optional, and used to define the material that is external to the package. The default is CBP. It should be one of the following:

CBP Cardboard or Paper

GLS Glass

MTL Metal

PLA Plastic

WOD Wood

The STYLE attribute is also optional, and used to define special styles of packaging. It is optional and defaults to NON. It should be one of the following:

NON None of the below options.

CAR Indicates that the packaging material you will be using is provided by the carrier, and has the carrier’s name and logo imprinted on it. This is usually used for letters, paks, tubes, and specialty boxes.

BND Indicates that the package is bound with metal straps. Straps made of other material do not require this attribute.

STR Indicates that the package has strap-type closures. This is typically used in conjunction with a film case.

 

<CONTENT DANGEROUS=""></CONTENT>

Describes the contents of the shipment. Optional – defaults to NON. Should be one of the following:

NON None of the below options.

JWL Jewelry. (Do not select this for costume jewelry.)

ADV Advertising, or other bound printed material.

BOK Books, or other unbound printed material.

BLD Matter for the blind.

ELC Electronic media such as tapes, CD’s, videos or computer software.

PER Perishables or live animals.

MED Medical materials.

The DANGEROUS attribute is optional, and used when shipping hazardous materials. Defaults to NON. Should be one of the following:

NON None.

IDG Inaccessible dangerous goods. This includes toxic, infectious substances, radioactive material, dry ice, ORM-D and non-flammable gas without a "Cargo Aircraft Only" label.

ADG Accessible dangerous goods. This includes explosives, flammable gas, liquid and solid (spontaneously combustible, dangerous when wet), corrosive material, and oxidizer, organic peroxide and non-flammable gas with a "Cargo Aircraft Only" label.

If you are not sure which classification your shipment falls into, Federal Express can help. You can reach their dangerous goods hotline at 1-800-GO-FEDEX (press 81).

 

XML Request (continued)

 

<LIQUIDVOLUME UNITS=""></LIQUIDVOLUME>

If the shipment contains liquid, this tag is required and should contain the volume of liquid. Can be any numeric value, including decimals. UNITS should be one of the following:

OZ (Ounces)

G (Gallons)

QT (Quarts)

L (Liters)

 

</SHIPMENT>

Closes the shipment section. Required.

 

<SERVICE>

Describes the service that you are requesting.

 

<SHIPDATE></SHIPDATE>

The date of shipment. Required. Should be formatted as mm/dd/yyyy.

 

<SHIPMETHOD></SHIPMETHOD>

The method that you will get your shipment to the carrier. Required. Should be one of:

SCD Regularly scheduled pickup

DRP Drop-off at a carrier’s location

PCK On-call pickup

 

<ACCESSORIES>

Describes extra services you may need. Optional.

 

<CODVALUE></CODVALUE>

Amount in US Dollars to collect at time of delivery. Optional – defaults to zero. Do not include the dollar sign ($) character.

 

<DECLAREDVALUE></DECLAREDVALUE>

Amount in US Dollars to insure your shipment for. Optional – defaults to zero. Do not include the dollar sign ($) character.

 

<DUTIABLE></DUTIABLE>

Specifies whether your shipment is dutiable when shipped internationally. Optional – defaults to NO. Should be YES or NO. (You can also use TRUE or FALSE.)

 

<RESIDENTIALDELIVERY></RESIDENTIALDELIVERY>

Specifies whether your shipment is being delivered to a residential address. Optional – defaults to NO. Should be YES or NO. (You can also use TRUE or FALSE.) Any building that could be considered residential will be, even if a business is operating there.

 

<RESIDENTIALPICKUP></RESIDENTIALPICKUP>

Specifies whether your shipment is being picked up from a residential address. Optional – defaults to NO. Should be YES or NO. (You can also use TRUE or FALSE.) Any building that could be considered residential will be, even if a business is operating there.

XML Request (continued)

 

</ACCESSORIES>

Closes the accessories section. Required if accessories are requested.

 

</SERVICE>

Closes the service section. Required.

 

XML Response

The following is an overview of the XML response that InterShipper returns to you. Please note that the indentation and carriage returns are for readability purposes only. Although XML ignores white space, the InterShipper server uses CrLf combination to signal the end of a response. In addition, the ellipsis (…) shown below are not part of the actual response, but are shown here to indicate looping.

 

<QUOTE ID="" ELAPSEDTIME="">

<CARRIER ID="" NAME="" ELAPSEDTIME="">

<METHOD CODE="" ID="" NAME="">

<ITEMID></ITEMID>

<RATE></RATE>

<TRANSITDAYS></TRANSITDAYS>

<DATE></DATE>

<TIME></TIME>

<GUARANTEED></GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

...

</CARRIER>

...

</QUOTE>

Each tag is described below.

 

<QUOTE ID="" ELAPSEDTIME="">

Container for the rate quote. The ID attribute gives you a reference to retrieve this quote at a later time. The ELAPSEDTIME attribute will tell you the time in seconds that it took the InterShipper engine to process your request.

 

<CARRIER ID="" NAME="" ELAPSEDTIME="">

Container for each carrier. The ID attribute is always the same for each carrier. The NAME attribute is the text that you can use to describe the carrier to your end user. The ELAPSEDTIME attribute will tell you the time in seconds that it took the InterShipper engine to process that carrier’s rates.

 

<METHOD ID="" CODE="" NAME="">

Container for each shipping method. The ID attribute is always the same for each method. The CODE attribute is a string identifier for the method and is similar to the ID. The NAME attribute is the text that you can use to describe the shipping method to your end user.

 

<ITEMID></ITEMID>

This tag is a unique identifier for each of this particular quote’s methods. You can store this value in your database to determine which option the user chose.

 

<RATE></RATE>

The rate for this shipping method.

 

<TRANSITDAYS></TRANSITDAYS>

The number of business days that the shipment will be in transit. This does not include weekends or holidays.

 

XML Response (continued)

 

<DATE></DATE>

The expected date of delivery. Weekends and holidays are taken into account.

 

<TIME></TIME>

The expected time of delivery. If the shipping method has no time commitment, this value will be 23:59 (end of day).

 

<GUARANTEED></GUARANTEED>

If this value is YES, then the date and time reported are guaranteed by the carrier. If NO, then they are estimates.

 

<LATESTPICKUP></LATESTPICKUP>

This is the latest time that a pickup will be made by the courier. The value returned will either be a time in hh:mm 24 hour format (e.g. ‘18:09’ which is 6:09pm) or blank. If nothing is returned, data is not available for this courier.

 

</METHOD>

Closes the method section. If the carrier has more methods, another method section will follow.

 

</CARRIER>

Closes the carrier section. If there are more carriers, another carrier section will follow.

 

</QUOTE>

Closes the quote.

 

 

Example

The following is an example of an InterShipper request and response. Please note that the indentation and carriage returns are for readability purposes only.

This example shows the minimum required parameters only. It rates a 10-lb. box, to be dropped-off on 9/29/99, shipping from Arizona to New York.

Request:

 

<INTERSHIPPER REQUEST="QUOTE" EMAIL="your@email.com" PASSWORD="your-password">

<CARRIERS>ALL</CARRIERS>

<ORIGIN>

<POSTALCODE>85281</POSTALCODE>

</ORIGIN>

<DESTINATION>

<POSTALCODE>90210</POSTALCODE>

</DESTINATION>

<SHIPMENT>

<WEIGHT UNITS="LB">10</WEIGHT>

</SHIPMENT>

<SERVICE>

<SHIPDATE>09/29/1999</SHIPDATE>

<SHIPMETHOD>SCD</SHIPMETHOD>

</SERVICE>

</INTERSHIPPER>

Response:

 

<QUOTE ID="7DA2C06A" ELAPSEDTIME="20">

<CARRIER ID="919801409" NAME="Airborne" ELAPSEDTIME="9">

<METHOD CODE="ABXSDS" ID="55" NAME="Second Day Service">

<ITEMID>294826</ITEMID>

<RATE>16.00</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>17:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP>16:30</LATESTPICKUP>

</METHOD>

<METHOD CODE="ABXEXP" ID="54" NAME="Express Service">

<ITEMID>294828</ITEMID>

<RATE>32.45</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>12:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP>16:30</LATESTPICKUP>

</METHOD>

</CARRIER>

Example Response (continued)

 

<CARRIER ID="927757907" NAME="BAX" ELAPSEDTIME="9">

<METHOD CODE="BAX1Std" ID="88" NAME="Standard Overnight">

<ITEMID>294830</ITEMID>

<RATE>37.80</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>12:00</TIME>

<GUARANTEED>NO</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="BAX2Std" ID="89" NAME="Standard Second Day">

<ITEMID>294832</ITEMID>

<RATE>25.20</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>NO</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="BAX1G" ID="90" NAME="Guaranteed Overnight">

<ITEMID>294833</ITEMID>

<RATE>125.00</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>12:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

</CARRIER>

<CARRIER ID="919202226" NAME="DHL" ELAPSEDTIME="10">

<METHOD CODE="DHLDOM" ID="46" NAME="USA Overnight">

<ITEMID>294834</ITEMID>

<RATE>47.30</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>23:23</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

</CARRIER>

<CARRIER ID="1044186586" NAME="FedEx" ELAPSEDTIME="18">

<METHOD CODE="1PR" ID="23" NAME="Priority Overnight">

<ITEMID>294835</ITEMID>

<RATE>41.75</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

Example Response (continued)

 

<TIME>10:30</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="1ST" ID="24" NAME="Standard Overnight">

<ITEMID>294836</ITEMID>

<RATE>35.25</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>15:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="2DA" ID="25" NAME="2-Day">

<ITEMID>294837</ITEMID>

<RATE>17.00</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>16:30</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="3DA" ID="26" NAME="Express Saver">

<ITEMID>294838</ITEMID>

<RATE>15.95</RATE>

<TRANSITDAYS>3</TRANSITDAYS>

<DATE>10/4/1999</DATE>

<TIME>16:30</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="1FS" ID="20" NAME="First Overnight">

<ITEMID>294839</ITEMID>

<RATE>66.75</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>08:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

</CARRIER>

<CARRIER ID="918854856" NAME="RPS" ELAPSEDTIME="18">

<METHOD CODE="5DG" ID="43" NAME="Ground">

<ITEMID>294840</ITEMID>

<RATE>4.62</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

Example Response (continued)

 

<DATE>10/1/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="2DA" ID="44" NAME="- RPSAir">

<ITEMID>294841</ITEMID>

<RATE>12.96</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="3DG" ID="45" NAME="3-Day Guaranteed">

<ITEMID>294842</ITEMID>

<RATE>10.10</RATE>

<TRANSITDAYS>3</TRANSITDAYS>

<DATE>10/4/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

</CARRIER>

<CARRIER ID="452235464" NAME="ANX" ELAPSEDTIME="7">

<METHOD CODE="ANXExp" ID="105" NAME="Express Service">

<ITEMID>294843</ITEMID>

<RATE>119.00</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>09:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP>18:09</LATESTPICKUP>

</METHOD>

</CARRIER>

<CARRIER ID="908801501" NAME="UPS" ELAPSEDTIME="20">

<METHOD CODE="1DM" ID="1" NAME="Next DayAir Early AM">

<ITEMID>294844</ITEMID>

<RATE>62.50</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>08:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="1DA" ID="3" NAME="Next Day Air">

<ITEMID>294845</ITEMID>

Example Response (continued)

 

<RATE>37.50</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>10:30</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="1DP" ID="5" NAME="Next Day Air Saver">

<ITEMID>294846</ITEMID>

<RATE>32.75</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>15:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="2DM" ID="7" NAME="2nd Day Air A.M.">

<ITEMID>294847</ITEMID>

<RATE>17.00</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>12:00</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="2DA" ID="8" NAME="2nd Day Air ">

<ITEMID>294848</ITEMID>

<RATE>15.25</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="3DS" ID="11" NAME="3 Day Select ">

<ITEMID>294849</ITEMID>

<RATE>10.10</RATE>

<TRANSITDAYS>3</TRANSITDAYS>

<DATE>10/4/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="GNDCOM" ID="12" NAME="Ground (Commercial)">

<ITEMID>294850</ITEMID>

<RATE>4.62</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

</CARRIER>

<CARRIER ID="918593305" NAME="U.S.P.S." ELAPSEDTIME="5">

<METHOD CODE="ppost" ID="27" NAME="Parcel Post w/ Dlvr. Conf.">

<ITEMID>294851</ITEMID>

<RATE>7.59</RATE>

<TRANSITDAYS>4</TRANSITDAYS>

<DATE>10/3/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>NO</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="prity" ID="28" NAME="Priority Mail w/ Dlvr. Conf.">

<ITEMID>294852</ITEMID>

<RATE>8.85</RATE>

<TRANSITDAYS>2</TRANSITDAYS>

<DATE>10/1/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>NO</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

<METHOD CODE="express" ID="29" NAME="Express Mail">

<ITEMID>294853</ITEMID>

<RATE>33.00</RATE>

<TRANSITDAYS>1</TRANSITDAYS>

<DATE>9/30/1999</DATE>

<TIME>23:59</TIME>

<GUARANTEED>YES</GUARANTEED>

<LATESTPICKUP></LATESTPICKUP>

</METHOD>

</CARRIER>

</QUOTE>

Tracking Information

XML Request

The following is an overview of the XML request that you will need to send to InterShipper to retrieve tracking information. Please note that the indentation and carriage returns are for readability purposes only. Although XML ignores white space, the InterShipper server uses CrLf combination to signal the end of a request. Make sure you strip out any Cr or Lf characters from your request except for the final CrLf at the end. The vertical ellipsis shown below should not be included as part of the request, but are shown here to indicate looping.

You may send up to 10 tracking numbers per request to InterShipper. You may send requests for any of the carriers that we support in any combination that you wish.

 

<INTERSHIPPER REQUEST="TRACK" EMAIL="" PASSWORD="">

<TRACKREQUEST1>

<CARRIER></CARRIER>

<TRACKINGNUMBER></TRACKINGNUMBER>

</TRACKREQUEST1>

<TRACKREQUEST2>

<CARRIER></CARRIER>

<TRACKINGNUMBER></TRACKINGNUMBER>

</TRACKREQUEST2>

<TRACKREQUEST3>

<CARRIER></CARRIER>

<TRACKINGNUMBER></TRACKINGNUMBER>

</TRACKREQUEST3>

.

.

. (up to 10 <TRACKREQUEST>)

</INTERSHIPPER>

XML Request (continued)

Each tag is described below.

 

<INTERSHIPPER REQUEST="TRACK" EMAIL="" PASSWORD="">

Begins the InterShipper request. REQUEST should always be TRACK to indicate that tracking information is requested. EMAIL and PASSWORD are always required, and must correspond to your InterShipper account. If you have not yet registered for a free InterShipper account, you must go to www.intershipper.net and register. If you would like to encrypt your email and password, see the section above entitled "What about security?"

<TRACKREQUESTn>

This is the beginning of your tracking request. ‘n’ is an integer that must be incremented by 1 for each ‘<TRACKREQUEST>’. You are only allowed 10 tracking numbers per XML request sent.

 

<CARRIER></CARRIER>

Carriers should be one of the following:

ABX (Airborne Express)

ANX (Airnet Express)

BAX (BAX Global)

DHL (DHL Airways)

EWW (Emery Worldwide)

FDX (FedEx Express)

RPS (FedEx Ground – formerly RPS)

UPS (United Parcel Service)

USPS (US Postal Service)

You may not specify more than one carrier as you can with a ‘QUOTE’ request. You must list a separate ‘<TRACKREQUESTn>’ for each tracking number even if they are all from the same carrier.

 

<TRACKINGNUMBER></TRACKINGNUMBER>

This is the tracking number supplied by the carrier with which you are tracking your package. Please enter the tracking number in its entirety.

 

</TRACKREQUESTn>

This is the end of your tracking request. ‘n’ must match the ‘n’ in your ‘<TRACKREQUEST>’ tag.

 

XML Response

The following is an overview of the XML response that InterShipper returns to you. Please note that the indentation and carriage returns are for readability purposes only. Although XML ignores white space, the InterShipper server uses CrLf combination to signal the end of a response. In addition, the vertical ellipsis shown below are not part of the actual response, but are shown here to indicate looping.

 

<TRACK ELAPSEDTIME="">

<TRACKRESULTS1>

<CARRIER NAME="" TRACKINGNUMBER="">

<SERVICETYPE></SERVICETYPE>

<STATUS>

<STATUSLEVEL ID=""></STATUSLEVEL>

<STATUSDATE></STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE></SCANDATE>

<SCANLOCATION></SCANLOCATION>

<DELIVERY>

<DELIVERYDATE></DELIVERYDATE>

<DELIVEREDTO></DELIVEREDTO>

<SIGNATORY></SIGNATORY>

<LOCATION></LOCATION>

<CITY></CITY>

<STATE></STATE>

<COUNTRY></COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS1>

.

.

.

</TRACK>

Each tag is described below.

 

<TRACK ELAPSEDTIME="">

Container for the tracking information. The ELAPSEDTIME attribute will tell you the time in seconds that it took the InterShipper engine to process your request.

 

<TRACKRESULTSn>

This tag contains your first set of tracking results. The ‘n’ will correspond to the integer that you sent in your request.

 

<CARRIER NAME="" TRACKINGNUMBER="">

This tag contains a three character code referencing the carrier’s name in the name parameter. The tracking number which you entered for this carrier is also in the <CARRIER> tag. Please see the list on page 19 for the key to the three character codes.

 

 

<SERVICETYPE></SERVICETYPE>

This tag lists the service that this package was shipped with. It will contain a string variable. If InterShipper experienced a problem connecting with the carrier, this field will contain ‘NO DATA RETURNED FROM CARRIER’. If the tracking number comes up as invalid or no data is available, this field will contain ‘INVALID OR NOT FOUND’.

 

<STATUS></STATUS>

This tag opens your tracking status information.

 

<STATUSLEVEL ID=""></STATUSLEVEL>

This tag contains a unique identifier specifying the status level as the ‘ID’ parameter. Inside the status level tag, text will give you the status of your shipment. The ID numbers along with their corresponding text is listed below.

1 – Delivered

2 – In Transit

3 – Delayed

4 – Delivery was attempted

5 - Unknown

 

<STATUSDATE></STATUSDATE>

This is the date that you requested the shipment status. It will contain both a date and time in Mountain Standard Time which is GMT-07:00.

 

</STATUS>

Closes the status section.

<LASTSCAN>

The last scan section, which includes all delivery information if available, begins here.

 

<SCANDATE></SCANDATE>

The date that the carrier last scanned this package is contained here. It will contain both a date and time. This time will be listed as the carrier lists in their records; it usually corresponds to the time zone in which the package was scanned.

 

<SCANLOCATION></SCANLOCATION>

This is the location where the package was last scanned. This will contain a city name and usually a state (if applicable) and/or country.

 

<DELIVERY>

If the package has been delivered, this tag will open the section for the delivery information. If the package has not yet been delivered, no data will be inside the following tags. Not all data is given by each carrier. Therefore, only data retrieved will be listed. Otherwise the tags will be blank.

 

<DELIVERYDATE></DELIVERYDATE>

The date that the package was delivered to its final destination is contained here. This will contain both a date and time.

 

<DELIVEREDTO></DELIVEREDTO>

The ‘DELIVEREDTO’ tag will contain text referring to where the package was delivered at its destination, when available. Examples include, "LEFT WITH RECEPTIONIST" or "FRONT DESK".

 

<SIGNATORY></SIGNATORY>

This tag will identify who signed for this package when delivered.

 

<LOCATION></LOCATION>

If a company name is given for the delivery location, it will be specified inside this tag.

 

 

<CITY></CITY>

The city in which the package was delivered.

 

<STATE></STATE>

The state in which the package was delivered. If it is not a domestic delivery, a province may be listed, or the field will be blank.

 

<COUNTRY></COUNTRY>

This tag will list the country of delivery.

 

</DELIVERY>

This closes the ‘Delivery’ section.

 

</LASTSCAN>

This closes the scan information section.

 

</CARRIER>

This closes the ‘Carrier’ section.

 

</TRACKRESULTSn>

This closes the results of your tracking request.

 

 

 

Example

The following is an example of an InterShipper request and response. Please note that the indentation and carriage returns are for readability purposes only.

**Testing**

If you would like to test the InterShipper API and you do not have any valid tracking numbers, please send a request in the same format using the syntax below for your tracking number. You may send the request for any carrier and you may send up to 10 requests with each request.

Each testing tracking number must be 7 characters in length.

0 – 4 = ‘test’

5 – 7 = nnn (3 digits – 0 through 9)

Please note, your each response will contain ‘Testing data’ in the ‘<SERVICETYPE>’ tag.

This example shows a request and response for 8 different tracking numbers each from a different carrier. You are not required to request more than one tracking number or use more than one carrier. You may list as many as 10 tracking numbers with each request.

Request:

 

<INTERSHIPPER REQUEST="TRACK" EMAIL="" PASSWORD="">

<TRACKREQUEST1>

<CARRIER>UPS</CARRIER>

<TRACKINGNUMBER>1Z12AR190395027411</TRACKINGNUMBER>

</TRACKREQUEST1>

<TRACKREQUEST2>

<CARRIER>FDX</CARRIER>

<TRACKINGNUMBER>752456864426</TRACKINGNUMBER>

</TRACKREQUEST2>

<TRACKREQUEST3>

<CARRIER>ABX</CARRIER>

<TRACKINGNUMBER>9440534762</TRACKINGNUMBER>

</TRACKREQUEST3>

<TRACKREQUEST4>

<CARRIER>USPS</CARRIER>

<TRACKINGNUMBER>EK201322197US</TRACKINGNUMBER>

</TRACKREQUEST4>

<TRACKREQUEST5>

<CARRIER>DHL</CARRIER>

<TRACKINGNUMBER>4423267365</TRACKINGNUMBER>

</TRACKREQUEST5>

<TRACKREQUEST6>

<CARRIER>EWW</CARRIER>

<TRACKINGNUMBER>548018163</TRACKINGNUMBER>

</TRACKREQUEST6>

<TRACKREQUEST7>

<CARRIER>RPS</CARRIER>

<TRACKINGNUMBER>027051300001522</TRACKINGNUMBER>

</TRACKREQUEST7>

<TRACKREQUEST8>

<CARRIER>BAX</CARRIER>

<TRACKINGNUMBER>577048883</TRACKINGNUMBER>

</TRACKREQUEST8>

</INTERSHIPPER>

 

 

Response:

 

<TRACK ELAPSEDTIME="28">

<TRACKRESULTS1>

<CARRIER NAME="UPS" TRACKINGNUMBER="1Z12AR237395027411">

<SERVICETYPE>GROUNDTRAC</SERVICETYPE>

<STATUS>

<STATUSLEVEL ID="1">Delivered</STATUSLEVEL>

<STATUSDATE>3/27/00 11:27:45 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE>2/8/00 11:11:00 AM</SCANDATE>

<SCANLOCATION>PLEASANTON CA US</SCANLOCATION>

<DELIVERY>

<DELIVERYDATE>2/8/00 11:11:00 AM</DELIVERYDATE>

<DELIVEREDTO>FRONT DESK</DELIVEREDTO>

<SIGNATORY>J SMITH</SIGNATORY>

<LOCATION></LOCATION>

<CITY>PLEASANTON</CITY>

<STATE>CA</STATE>

<COUNTRY>US</COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS1>

<TRACKRESULTS2>

<CARRIER NAME="FDX" TRACKINGNUMBER="752123864426">

<SERVICETYPE></SERVICETYPE>

<STATUS>

<STATUSLEVEL ID="1">Delivered</STATUSLEVEL>

<STATUSDATE>3/27/00 11:27:47 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE>1/26/00 12:30:00 PM</SCANDATE>

<SCANLOCATION>TEMPE AZ</SCANLOCATION>

<DELIVERY>

<DELIVERYDATE>1/26/00 12:30:00 PM</DELIVERYDATE>

<DELIVEREDTO></DELIVEREDTO>

<SIGNATORY>J DOE</SIGNATORY>

Example Response (continued)

 

<LOCATION></LOCATION>

<CITY>TEMPE</CITY>

<STATE>AZ</STATE>

<COUNTRY>US</COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS2>

<TRACKRESULTS3>

<CARRIER NAME="ABX" TRACKINGNUMBER="9442334762">

<SERVICETYPE>SECOND DAY</SERVICETYPE>

<STATUS>

<STATUSLEVEL ID="1">Delivered</STATUSLEVEL>

<STATUSDATE>3/27/00 11:27:49 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE>1/13/00 5:13:00 PM</SCANDATE>

<SCANLOCATION>LEXINGTON KY</SCANLOCATION>

<DELIVERY>

<DELIVERYDATE>1/13/00 5:13:00 PM</DELIVERYDATE>

<DELIVEREDTO>LEFT WITH RECEPTIONIST</DELIVEREDTO>

<SIGNATORY>CUNNINGHAM</SIGNATORY>

<LOCATION>ABC</LOCATION>

<CITY>LEXINGTON</CITY>

<STATE>KY</STATE>

<COUNTRY>US</COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS3>

<TRACKRESULTS4>

<CARRIER NAME="USPS" TRACKINGNUMBER="EK201552197US">

<SERVICETYPE></SERVICETYPE>

<STATUS>

<STATUSLEVEL ID="1">Delivered</STATUSLEVEL>

<STATUSDATE>3/27/00 11:27:50 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

Example Response (continued)

<SCANDATE>2/16/00 9:12:00 AM</SCANDATE>

<SCANLOCATION></SCANLOCATION>

<DELIVERY>

<DELIVERYDATE>2/16/00 9:12:00 AM</DELIVERYDATE>

<DELIVEREDTO></DELIVEREDTO>

<SIGNATORY></SIGNATORY>

<LOCATION></LOCATION>

<CITY>ORLANDO</CITY>

<STATE>FL</STATE>

<COUNTRY>US</COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS4>

<TRACKRESULTS5>

<CARRIER NAME="DHL" TRACKINGNUMBER="4423284365">

<SERVICETYPE></SERVICETYPE>

<STATUS>

<STATUSLEVEL ID="3">Delayed</STATUSLEVEL>

<STATUSDATE>3/27/00 11:27:52 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE>3/24/00 5:13:00 PM</SCANDATE>

<SCANLOCATION>PRAGUE</SCANLOCATION>

<DELIVERY>

<DELIVERYDATE></DELIVERYDATE>

<DELIVEREDTO></DELIVEREDTO>

<SIGNATORY></SIGNATORY>

<LOCATION></LOCATION>

<CITY></CITY>

<STATE></STATE>

<COUNTRY></COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS5>

<TRACKRESULTS6>

<CARRIER NAME="EWW" TRACKINGNUMBER="5483358163">

<SERVICETYPE>INTL STANDARD</SERVICETYPE>

Example Response (continued)

<STATUS>

<STATUSLEVEL ID="1">Delivered</STATUSLEVEL>

<STATUSDATE>3/27/00 11:27:54 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE>2/24/00 10:58:00 AM</SCANDATE>

<SCANLOCATION></SCANLOCATION>

<DELIVERY>

<DELIVERYDATE>2/24/00 10:58:00 AM</DELIVERYDATE>

<DELIVEREDTO></DELIVEREDTO>

<SIGNATORY>M JORDAN</SIGNATORY>

<LOCATION></LOCATION>

<CITY>TORONTO</CITY>

<STATE></STATE>

<COUNTRY>ON</COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS6>

<TRACKRESULTS7>

<CARRIER NAME="RPS" TRACKINGNUMBER="027051300001522">

<SERVICETYPE>NO DATA RETURNED FROM CARRIER</SERVICETYPE>

<STATUS>

<STATUSLEVEL ID="5">Unknown</STATUSLEVEL>

<STATUSDATE>3/27/00 11:27:57 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE></SCANDATE>

<SCANLOCATION></SCANLOCATION>

<DELIVERY>

<DELIVERYDATE></DELIVERYDATE>

<DELIVEREDTO></DELIVEREDTO>

<SIGNATORY></SIGNATORY>

<LOCATION></LOCATION>

<CITY></CITY>

<STATE></STATE>

<COUNTRY></COUNTRY>

</DELIVERY>

</LASTSCAN>

Example Response (continued)

</CARRIER>

</TRACKRESULTS7>

<TRACKRESULTS8>

<CARRIER NAME="BAX" TRACKINGNUMBER="577858883">

<SERVICETYPE>2 - SECOND DAY</SERVICETYPE>

<STATUS>

<STATUSLEVEL ID="1">Delivered</STATUSLEVEL>

<STATUSDATE>3/27/00 11:28:12 AM (GMT-07:00)</STATUSDATE>

</STATUS>

<LASTSCAN>

<SCANDATE>2/7/00 11:51:00 AM</SCANDATE>

<SCANLOCATION></SCANLOCATION>

<DELIVERY>

<DELIVERYDATE>2/7/00 11:51:00 AM</DELIVERYDATE>

<DELIVEREDTO></DELIVEREDTO>

<SIGNATORY>JOHNSON</SIGNATORY>

<LOCATION>XYZ CO.</LOCATION>

<CITY>TAMPA</CITY>

<STATE>FL</STATE>

<COUNTRY>US</COUNTRY>

</DELIVERY>

</LASTSCAN>

</CARRIER>

</TRACKRESULTS8>

</TRACK>