Legacy XML API

Note about the Legacy XML API

In September 2014, we launched a new RESTful API (see documentation here). The new API replicates all the functionality of our legacy XML API while providing a foundation for future API enhancements.

In order to focus on adding new features to the RESTful API (see our API Roadmap), we are deprecating the legacy XML API. This means that Shipwire will continue to provide the legacy XML API for existing integrations, but new features will not be added to it. The legacy XML API documentation may be found below. Developers of new integrations should use the RESTful API.

If you already have an integration with Shipwire’s legacy API, migrating to the new API is recommended so you can take advantage of new features as we add them (see our API Roadmap).

Getting started

Shipwire makes it easy for web developers and designers to connect their applications to the Shipwire platform and take advantage of rating, fulfillment, inventory, and tracking update web services.

  • Shipwire XML APIs provide direct, electronic access to key platform services.
  • Our help section has a lot of information to make integrating web sites and applications easy.
  • If you are looking for a pre-integrated solution, Shipwire already connects with many shopping carts and marketplaces. You can find a list of pre-existing connections here.

Available APIs

Next Steps

  1. Look over the available APIs, and familiarize yourself with what you can do. Use the Shipwire test form to play with sample requests/responses.
  2. Sign-up for a free Shipwire test sandbox account. This will allow you to test your API calls in an isolated test environment that mimics our production system.
  3. Sign-up for a free Shipwire trial account. This will allow you to test your API calls in a production environment.

API Conventions

HTTP Requests

All of our service APIs are invoked via HTTP POST requests to a secure (HTTPS) endpoint.

Content and Encoding

Unless otherwise specified, requests should be posted with a Content-Type of application/xml, UTF-8 encoded.

<Server> element

You’ll find that most of our APIs let you specify your server environment, either Test or Production.  Requests posted with the “Test” server environment specified simply return well-formatted responses for basic testing of your parser.  Requests posted with the “Production” server specified return actual data based on information in the associated Shipwire account. If “Production” requests are posted against your sandbox account, these simulate expected behavior in a real Shipwire account.

Response Status

Most of our APIs return a <Status> element. In the case of a successful request, this element will have a “0” or “OK” value. In the case of a failed request, the element will have an “Error” value.

Rate services

Our Rate Services API gives you real-time shipping quotes for your Shipwire orders. Our rating engine automatically optimizes rates, selecting the best warehouse and packing configuration for orders and returning a list of available service options and prices. Information available from the Rate Services API includes:

  • Best shipping quotes for each available shipping service level
  • Delivery date range estimates

API Endpoints

Example Request

POST /exec/RateServices.php
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE RateRequest SYSTEM "https://www.shipwire.com/exec/download/RateRequest.dtd">
<RateRequest>
<Username>api_user@example.com</Username>
<Password>yourpassword</Password>
<Order id="12579">
<Warehouse>0</Warehouse>
<AddressInfo type="ship">
<Address1>321 Foo bar lane</Address1>
<Address2>Apartment #2</Address2>
<City>Nowhere</City>
<State>CA</State>
<Country>US</Country>
<Zip>12345</Zip>
</AddressInfo>
<Item num="0">
<Code>12345</Code>
<Quantity>1</Quantity>
</Item>
</Order>
</RateRequest>

Example Response

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE RateResponse SYSTEM "https://www.shipwire.com/exec/download/RateResponse.dtd">
<RateResponse>
<Status>OK</Status>
<Order sequence="1">
<Quotes>
<Quote method="GD">
<Warehouse>Chicago</Warehouse>
<Service deliveryConfirmation="YES" trackable="YES" signatureRequired="NO">USPS Priority Mail Flat Rate Small
Box</Service>
<CarrierCode>USPS PMFS</CarrierCode>
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="5.90">5.90</Cost>
<Subtotals>
<Subtotal type="Freight">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="5.90">5.90</Cost>
</Subtotal>
<Subtotal type="Insurance">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
<Subtotal type="Packaging">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
<Subtotal type="Handling" includedInCost="NO">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
</Subtotals>
<DeliveryEstimate>
<Minimum units="days">2</Minimum>
<Maximum units="days">3</Maximum>
</DeliveryEstimate>
</Quote>
<Quote method="2D">
<Warehouse>Chicago</Warehouse>
<Service deliveryConfirmation="YES" trackable="YES" signatureRequired="NO">UPS Second Day Air</Service>
<CarrierCode>UPS 2D</CarrierCode>
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="30.41">30.41</Cost>
<Subtotals>
<Subtotal type="Freight">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="30.41">30.41</Cost>
</Subtotal>
<Subtotal type="Insurance">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
<Subtotal type="Packaging">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
<Subtotal type="Handling" includedInCost="NO">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
</Subtotals>
<DeliveryEstimate>
<Minimum units="days">2</Minimum>
<Maximum units="days">2</Maximum>
</DeliveryEstimate>
</Quote>
<Quote method="1D">
<Warehouse>Chicago</Warehouse>
<Service deliveryConfirmation="YES" trackable="YES" signatureRequired="NO">USPS Express Mail</Service>
<CarrierCode>USPS XP</CarrierCode>
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="34.50">34.50</Cost>
<Subtotals>
<Subtotal type="Freight">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="34.50">34.50</Cost>
</Subtotal>
<Subtotal type="Insurance">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
<Subtotal type="Packaging">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
<Subtotal type="Handling" includedInCost="NO">
<Cost currency="USD" converted="NO" originalCurrency="USD" originalCost="0.00">0.00</Cost>
</Subtotal>
</Subtotals>
<DeliveryEstimate>
<Minimum units="days">1</Minimum>
<Maximum units="days">1</Maximum>
</DeliveryEstimate>
</Quote>
</Quotes>
</Order>
<ProcessingTime units="ms">70</ProcessingTime>
</RateResponse>

Additional Resources

Test Form

XML Documentation

Inventory services

Our Inventory Update API allows you to get real-time inventory information for products in Shipwire’s warehouses or in your own locations. You can query inventory globally, by country, or in a specific warehouse. Information available from the Inventory Update API includes:

Stock Counts

  • Inventory in stock
  • Inventory expected to arrive
  • Backordered inventory
  • Inventory reserved for orders
  • Inventory currently shipping

Stock Statistics

  • Expected inventory availability date
  • Units shipped recently
  • Units ordered recently

API Endpoints

Example Request

POST /exec/InventoryServices.php
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE InventoryUpdate SYSTEM "https://www.shipwire.com/exec/download/InventoryUpdate.dtd">
<InventoryUpdate>
<Username>api_user@example.com</Username>
<Password>yourpassword</Password>
<Server>Test</Server>
</InventoryUpdate>

Example Response

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE InventoryUpdateResponse SYSTEM "https://www.shipwire.com/exec/download/InventoryUpdateResponse.dtd">
<InventoryUpdateResponse>
<Status>Test</Status>
<Product code="GD802-024"
quantity="14"
good="14"
pending="300"
backordered="0"
reserved="15"
shipping="7"
shipped="7013"
consuming="0"
consumed="0"
creating="0"
created="0"
availableDate="2012-01-19"
shippedLastDay="13"
shippedLastWeek="84"
shippedLast4Weeks="401"
orderedLastDay="15"
orderedLastWeek="99"
orderedLast4Weeks="416" />
<Product code="GD201-500"
quantity="32"
good="32"
pending="500"
backordered="0"
reserved="17"
shipping="0"
shipped="1997"
consuming="0"
consumed="0"
creating="0"
created="0"
availableDate="2012-02-21"
shippedLastDay="11"
shippedLastWeek="74"
shippedLast4Weeks="221"
orderedLastDay="19"
orderedLastWeek="90"
orderedLast4Weeks="242" />
<TotalProducts>2</TotalProducts>
<ProcessingTime units="ms">221</ProcessingTime>
</InventoryUpdateResponse>

Additional Resources

Test Form

XML Documentation

Fulfillment services

Our Fulfillment Services API allows you to submit orders to Shipwire, receive acknowledgment of submitted orders, and determine whether any problems were encountered during order submission. Many applications are already integrated with Shipwire for order fulfillment.  See all compatible applications.

API Endpoints

Example Request

POST /exec/FulfillmentServices.php
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE OrderList SYSTEM "https://www.shipwire.com/exec/download/OrderList.dtd">
<OrderList>
<Username>api_user@example.com</Username>
<Password>yourpassword</Password>
<Server>Test</Server>
<Referer>023YAHOO</Referer>
<Order id="test-485">
<Warehouse>00</Warehouse>
<ChannelName>Talk to Shipwire before using</ChannelName>
<AddressInfo type="ship">
<Name>
<Full>Sheridan Rawlins</Full>
</Name>
<Address1>321 Foo bar lane</Address1>
<Address2>Apartment #2</Address2>
<City>Nowhere</City>
<State>CA</State>
<Country>US</Country>
<Zip>12345</Zip>
<Phone>555-444-3210</Phone>
<Email>sheridan@rawlins.com</Email>
</AddressInfo>
<Shipping>GD</Shipping>
<Item num="0">
<Code>12345</Code>
<Quantity>1</Quantity>
</Item>
</Order>
<Order id="test-486">
<Warehouse>00</Warehouse>
<AddressInfo type="ship">
<Name>
<Full>Sheridan Rawlins</Full>
</Name>
<Address1>321 Foo bar lane</Address1>
<Address2>Apartment #2</Address2>
<City>Nowhere</City>
<State>CA</State>
<Country>US</Country>
<Zip>12345</Zip>
<Phone>(555)444-3210</Phone>
<Email>sheridan@rawlins.com</Email>
</AddressInfo>
<Shipping>2D</Shipping>
<Item num="0">
<Code>12345</Code>
<Quantity>1</Quantity>
</Item>
</Order>
<Order id="test-487">
<Warehouse>00</Warehouse>
<AddressInfo type="ship">
<Name>
<Full>Sheridan Rawlins</Full>
</Name>
<Address1>321 Foo bar lane</Address1>
<Address2>Apartment #2</Address2>
<City>Nowhere</City>
<State>CA</State>
<Country>US</Country>
<Zip>12345</Zip>
<Phone>555.444.3210</Phone>
<Email>sheridan@rawlins.com</Email>
</AddressInfo>
<Shipping>1D</Shipping>
<Item num="0">
<Code>654654</Code>
<Quantity>1</Quantity>
</Item>
</Order>
</OrderList>

Example Response

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE InventoryUpdateResponse SYSTEM "https://www.shipwire.com/exec/download/InventoryUpdateResponse.dtd">
<InventoryUpdateResponse>
<Status>Test</Status>
<Product code="GD802-024"
quantity="14"
good="14"
pending="300"
backordered="0"
reserved="15"
shipping="7"
shipped="7013"
consuming="0"
consumed="0"
creating="0"
created="0"
availableDate="2012-01-19"
shippedLastDay="13"
shippedLastWeek="84"
shippedLast4Weeks="401"
orderedLastDay="15"
orderedLastWeek="99"
orderedLast4Weeks="416" />
<Product code="GD201-500"
quantity="32"
good="32"
pending="500"
backordered="0"
reserved="17"
shipping="0"
shipped="1997"
consuming="0"
consumed="0"
creating="0"
created="0"
availableDate="2012-02-21"
shippedLastDay="11"
shippedLastWeek="74"
shippedLast4Weeks="221"
orderedLastDay="19"
orderedLastWeek="90"
orderedLast4Weeks="242" />
<TotalProducts>2</TotalProducts>
<ProcessingTime units="ms">221</ProcessingTime>
</InventoryUpdateResponse>

Additional Resources

Test Form

XML Documentation

Tracking services

Our Tracking Update API lets you get the current status of orders submitted to Shipwire. Information available from the Tracking Update API includes:

  • The date an order shipped
  • Carrier and tracking information
  • Expected delivery date
  • Breakdown of order costs (including shipping, handling, packaging, and insurance costs)
  • Whether the order was returned and the condition in which it was returned
  • Whether the order has been manually edited since being submitted

Integrating with the Tracking Update API can drastically reduce customer service inquiries about orders.
API Endpoints

Example Request

POST /exec/TrackingServices.php
Content-Type: application/xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TrackingUpdate SYSTEM "https://www.shipwire.com/exec/download/TrackingUpdate.dtd">
<TrackingUpdate>
<Username>api_user@example.com</Username>
<Password>yourpassword</Password>
<Server>Test</Server>
<Bookmark>1</Bookmark>
</TrackingUpdate>

Example Response

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE
TrackingUpdateResponse SYSTEM "https://www.shipwire.com/exec/download/TrackingUpdateResponse.dtd">
<TrackingUpdateResponse>
<Status>0</Status>
<Order id="40298"
shipwireId="1234567890-1234567-1"
warehouse="Chicago"
shipped="NO"
shipper=""
shipDate="2011-03-14 11:11:40"
expectedDeliveryDate="2011-03-22 00:00:00"
returned="NO"
href="https://app.shipwire.com/c/t/xxx1:yyy1"
affiliateStatus="canceled"
manuallyEdited="NO"/>
<Order id="40298"
shipwireId="1234567890-1234568-1"
warehouse="Philadelphia"
shipped="YES"
shipper="USPS FC"
shipperFullName="USPS First-Class Mail Parcel + Delivery Confirmation"
shipDate="2011-03-15 10:40:06"
delivered="YES"
expectedDeliveryDate="2011-03-22 00:00:00"
handling="0.00"
shipping="4.47"
packaging="0.00"
total="4.47"
returned="YES"
returnDate="2011-05-04 17:33:25"
returnCondition="GOOD"
href="https://app.shipwire.com/c/t/xxx1:yyy2"
affiliateStatus="shipwireFulfilled"
manuallyEdited="NO">
<TrackingNumber carrier="USPS"
delivered="YES"
deliveryDate="2011-03-21 17:10:00"
href="http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?origTrackNum=9400110200793472606087">
9400110200793472606087</TrackingNumber>
</Order>
<Order id="40298"
shipwireId="1234567890-1234569-1"
warehouse="Chicago"
shipped="YES"
shipper="USPS FC"
shipperFullName="USPS First-Class Mail Parcel + Delivery Confirmation"
shipDate="2011-04-08 09:33:10"
delivered="NO"
expectedDeliveryDate="2011-04-15 00:00:00"
handling="0.00"
shipping="4.47"
packaging="0.00"
total="4.47"
returned="NO"
href="https://app.shipwire.com/c/t/xxx1:yyy3"
affiliateStatus="shipwireFulfilled"
manuallyEdited="NO">
<TrackingNumber carrier="USPS"
delivered="NO"
href="http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?origTrackNum=9400110200793596422990">
9400110200793596422990</TrackingNumber>
</Order>
<TotalOrders>3</TotalOrders>
<TotalShippedOrders>2</TotalShippedOrders>
<TotalProducts>8</TotalProducts>
<Bookmark>2011-10-22 14:13:16</Bookmark>
<ProcessingTime units="ms">1192</ProcessingTime>
</TrackingUpdateResponse>

Additional Resources

Test Form

XML Documentation

Rate services FAQ

Use our XML shipping rate request and response Web services calls to integrate shipping rates, from Shipwire or Shipwire Anywhere warehouses, to your buyers, directly into your e-commerce applications. This means instant quotes automatically from the warehouse closest to each customer!

How does international shipping work?

We are going to answer this by looking at valid shipping methods that can be used. In OrderList.dtd there is the example:

Example: <Shipping>1D</Shipping>

Example: <Shipping>2D</Shipping>

Example: <Shipping>GD</Shipping>

Example: <Shipping>E-INTL</Shipping>

Example: <Shipping>INTL</Shipping>

Example: <Shipping>PL-INTL</Shipping>

Example: <Shipping>PM-INTL</Shipping>

A given order can be either domestic (shipping warehouse and customer are in the same country) or international (shipping warehouse and customer are in different countries).

“GD”, “2D”, and “1D” are domestic shipping methods corresponding to Ground (deferred), two-day, and overnight shipping, respectively.

“E-INTL”, “INTL”, “PL-INTL”, and “PM-INTL” correspond to economy, standard, plus, and premium classes of international shipping. Economy shipping methods are more cost-effective at the expense of longer delivery times and less detailed tracking information. Not all international shipping methods are available to all destinations. Generally, the “E-INTL” option returned by our API will be the cheapest service that meets the merchant’s preferences/expectations (e.g. with respect to insurability and trackability). While merchants can manually choose a faster international service in our application, we do not yet support discrete internationall service levels through the rating API.

We decide the optimal warehouse on a per-order basis. Since the shopping cart won’t know ahead of time whether the optimal shipping warehouse for an order will be domestic or international, you should be prepared to show any of the above shipping method options for an order.

Can you show a code example for a Rate Request?

Here is a simple Rating Request PHP example:

$account_email = 'email@address.com'; // SW account API username
$account_password = 'password'; // SW account password

// gather ship-to address data
$address_street1 = 'address1';
$address_street2 = ' address2';
$address_city = 'city';
$address_region = 'state';         // use 2 letter ISO code when possible
$address_country = 'country';   // Use ISO 2 letter code
$address_postcode = 'postal_code';

// loop through cart items
$items = $requestVar->all_items;

$item_xml = '';
$num = 1;
if (count($items) > 0) {
foreach ($items as $item) {
$item_xml .= '<Item num="' . $num++ . '">';
$item_xml .= '<Code>' . htmlentities($item->sku) . '</Code>';
$item_xml .= '<Quantity>' . htmlentities($item->qty) . '</Quantity>';
$item_xml .= '</Item>';
}
}

$xml = '
<RateRequest>
<EmailAddress><![CDATA[' . $account_email . ']]></EmailAddress>
<Password><![CDATA[' . $account_password . ']]></Password>
<Order id="quote123">
<Warehouse>00</Warehouse>
<AddressInfo type="ship">
<Address1><![CDATA[' . htmlentities($address_street1) . ']]></Address1>
<Address2><![CDATA[' . htmlentities($address_street2) . ']]></Address2>
<City><![CDATA[' . htmlentities($address_city) . ']]></City>
<State><![CDATA[' . htmlentities($address_region) . ']]></State>
<Country><![CDATA[' . htmlentities($address_country) . ']]></Country>
<Zip><![CDATA[' . htmlentities($address_postcode) . ']]></Zip>
</AddressInfo>
' . $item_xml . '
</Order>
</RateRequest>';

$xml_request_encoded = ("RateRequestXML=" . $xml);

$xml_submit_url = "https://api.shipwire.com/exec/RateServices.php";

$session = curl_init();
curl_setopt($session, CURLOPT_URL, $xml_submit_url);
curl_setopt($session, CURLOPT_POST, true);
curl_setopt($session, CURLOPT_HTTPHEADER, array("Content-type","application/x-www-form-urlencoded"));
curl_setopt($session, CURLOPT_POSTFIELDS, $xml_request_encoded);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($session, CURLOPT_TIMEOUT, 360);
$response = curl_exec($session);

How many rates will Shipwire respond with?

When you use the shipping rate API to request a shipping rate your system will tell Shipwire that you want a rate for a specific shipping method (ID, 2D, GD…). Shipwire will respond with only 1 shipping rate. This shipping rate will be the match after Shipwire looks up the shipping rates with the carriers and the shipping preferences of the merchant.

What should we send across in the referrer field?

You can ignore this and still submit a valid API request.

How should my address Country and State/Province information be provided?

For best results the Country address information must be provided using the proper two letter ISO Country Code. In addition when possible the proper State or Province abbriviation should be used as well.

What if the merchant has multiple fulfillment centers?

Shipwire returns shipping rates today for products in our warehouses that we have a matching SKU for. Some merchants may carry the same product with Shipwire and in their own warehouse. As of today we don’t pass shipping rates for non-Shipwire held products. We know this is a complex situation so let us know your concerns by e-mailing your thoughts to: partner (at) shipwire (dot) com.

To work around this issue please consider the following:

  1. Can you give the merchant the ability to choose a shipping rate mechanism by product ID/SKU ID? This method will allow even the most complex multi-vendor/shipper merchant to be able to display rates for products they ship from their home warehouse; include Shipwire rates; and, potentially put in rates for other options (example a drop shipped product that they flat rate bill)
  2. Potentially coach the merchant to keep their Shipwire fulfilled product/SKU ID’s distinct from their self-fulfilled products.

Fulfillment Services FAQ

Where do I start?

  1. Sign up for a free Shipwire account – You will need to create a Shipwire API user from within your general account settings.
  2. Walk through the Example XML Order – The example contains three orders (ids test-485, test-486, and test-487). A Shipwire username and password will be in <Username> and <Password> tags. The type of server will be in a <Server> tag, and set to Test or Production. Each order lists the shipping information in the <AddressInfo> tag with the “type” attribute set to “ship”. Each item in the order will be listed in an <Item> tag. All other information, such as Warehouse and Shipping, is optional, since this information can be configured inside the Shipwire account (under Ship | Preferences). Please read the fulfillment request DTD for more information on which fields are optional, which are required, and what is expected in each field.
  3. If you need support please send an e-mail to support+dev “at” shipwire.com.
  4. Use the XML Test Harness to submit a test order directly to us. – Note that it is submitting orders to: https://api.shipwire.com/exec/FulfillmentServices.php

    If you insert your Shipwire API username and password, you will see that the you are now authenticated, and able to further test the API.

  5. If you only want to see the XML being received by Shipwire, use the Echo Only form. – This is useful if your script appears to be producing perfect XML, but you are not getting any response from Shipwire. The most likely culprit is that you’re not posting to the OrderListXML variable. Note that it is submitting orders to: https://api.shipwire.com/exec/FulfillmentServices.test.php

  6. If possible, use the XML Code Samples to build your own script.
  7. Use the DTD to check field requirements and limitations – Server should either be “Test” or “Production”, depending on whether you are sending an order for test purposes or because you intend for it to be shipped. The Warehouse field allows you to designate a specific warehouse (see the DTD for warehouse region information). Omitting the Warehouse element will tell Shipwire to choose the best warehouse for the order.

How can I confirm orders are being received correctly?

  1. Sign up for a test account on the sandbox.
  2. Post to your test account, 1 order, with 1 item. Confirm an XML reply of 1 order, with 1 item.
  3. Post 1 order, with 3 items. Confirm a reply of 1 order, with 3 items.
  4. Post 3 orders, with 1 item each. Confirm a reply of 3 orders, with a total of 3 items.
  5. Post 3 orders, with 3 items each. Confirm a reply of 3 orders, with a total of 9 items.
  6. Sign into your test account, and view each of the 8 orders posted above from Account History. Double-check that all fields look correct.
  7. Contact Support and ask us to double-check each of the 8 orders posted above as well. All we need is your Shipwire email address.

What does the XML Response look like?

Here is a sample response. 3 orders were submitted:

<SubmitOrderResponse>

<Status>0</Status>

<TotalOrders>3</TotalOrders>

<TotalItems>3</TotalItems>

<TransactionId>1172083834-808385-1</TransactionId>

</SubmitOrderResponse>

What do I pass in the “Warehouse” Field?

You generally don’t need to identify a specific warehouse for the order in the XML you send to Shipwire. We provide this field for a very limited set of customer needs and 99.9% of customers don’t need this field as Shipwire will route the order to the warehouse that is holding inventory closest to the buyer. It is best to pass “00” in that field: “<Warehouse>00</Warehouse>”

How should my address Country and State/Province/Region information be provided?

For best results the Country address information must be provided using the proper two letter ISO  Country Code. In addition when possible the proper State or Province abbreviation should be used as well.

What do I pass in the <AffiliateId> field?

If you are a Shipwire Partner building an application connection to Shipwire then we urge you to pass along your partner ID in the AffiliateID field. This will help us associate referred orders to your affiliate account. The partner ID is the numeric identifier found at the end of your Partner URL.

How do I get Developer Support?

Application developers that are integrating to Shipwire can send us an e-mail at support+dev (at) shipwire (dot) com. We will try and get your question answered quickly.

Tracking Services FAQ

Where do I start?

  1. Sign up for a free Shipwire account – You will need a Shipwire email and password, for authentication. Signing up for an account has no cost or obligation associated with it.
  2. Walk through the Example XML Status Request and Response. – A Shipwire email address and password will be in <EmailAddress> and <Password> tags. The type of server will be in a <Server> tag, and set to Test or Production. If you set this tag to Test, and set a valid Shipwire email address and password, then the example response will always be returned.
  3. Use Shipwire Priority Support if you have any questions or problems. – You can also request our MSN Messenger ID.
  4. Use the XML Test Harness to submit a test tracking request directly to us. – Note that it is submitting tracking requests to: https://api.shipwire.com/exec/TrackingServices.php
  5. If you only want to see the XML being received by Shipwire, use the Echo Only form – This is useful, for example, if your script appears to be producing perfect XML, but you are not getting any response from Shipwire. The most likely culprits are that you’re not posting to the TrackingUpdateXML variable, or that you’re not posting with proper URL- encoded syntax (if using a GET request). Note that the echo test form is submitting requests to:https://api.shipwire.com/exec/TrackingServices.test.php

View proper URL encoding?

How to specify which orders you want to track?

There are currently three ways to retrieve tracking update information for orders:

  • Bookmark-based (“Send me all tracking update information posted since the last time I asked for tracking updates.”)
  • Customer order number-based
  • Shipwire order ID-based

Bookmark-based tracking updates

If you want to get tracking information for orders updated since your last tracking request, include a <Bookmark> tag in your <TrackingUpdate> request.

The <Bookmark> tag currently has three options:

  • “1” for a dump of everything in the account
  • “2” for a dump of everything since the last bookmark
  • “3” for a dump of everything since the last bookmark AND reset the bookmark to right now

Please note, if the <Bookmark> tag is not properly set in the Request, then it will default to a setting of “1”. The <Bookmark> tag will only appear in the Response, if in fact a Bookmark is already set.

Customer order number-based tracking updates

If you want to look up order tracking information by your own order number (e.g. your shopping cart order number), use the <OrderNo> tag. Please note that, Shipwire does not prevent orders from having duplicate customer order numbers, so this mode of look-up may return multiple orders for the given customer order number.

Shipwire order-ID based

If you want to look up  order tracking information by the Shipwire ID (e.g. 1234567890-123456-1), use the <ShipwireId> tag.

Inventory Services FAQ

Where do I start?

  1. Sign up for a free Shipwire account- You will need a Shipwire email and password, for authentication. Signing up for an account has no cost or obligation associated with it.
  2. Walk through the Example XML Status Request and Response. – A Shipwire email address and password will be in <EmailAddress> and <Password> tags. The type of server will be in a <Server> tag, and set to Test or Production. If you set this tag to Test, and set a valid Shipwire email address and password, then the example response will always be returned.

    If the <Warehouse> tag is left empty (<Warehouse/>), the sum total of inventory in all Shipwire warehouses will be displayed. Alternately, you can designate specific warehouses, to check inventory on a warehouse by warehouse basis. The tag currently has these option values:

    • CHI: Shipwire Chicago
    • LAX: Shipwire Los Angeles
    • PHL: Shipwire Philadelphia
    • VAN: Shipwire Vancouver
    • TOR: Shipwire Toronto
    • UK: Shipwire UK
    • HKG: Shipwire Hong Kong
    • AUS: Shipwire Australia

    The <ProductCode> tag currently has two options:

    • Leave it empty for all inventory to be displayed
    • Enter a SKU# to get inventory of just that SKU. If the SKU does not exist in the Shipwire account, then the response will include a <TotalProducts> tag set to “0”, and no <Product> tag will be returned.
  3. Use Shipwire Priority Support if you have any questions or problems – You can also request our MSN Messenger ID.
  4. Use the XML Test Harness to submit a test order directly to us – Note that it is submitting orders to: https://api.shipwire.com/exec/InventoryServices.php

    Further note that it is posting the XML, to the InventoryUpdateXML variable, in a URL encoded form: https://api.shipwire.com/exec/InventoryServices.php?InventoryUpdateXML=%3CInventoryUpdate%3E%0A+++%3CEmailAddress%3Eyouremail.com…

  5. If you only want to see the XML being received by Shipwire, use the Echo Only form. This is useful if your script appears to be producing perfect XML, but you are not getting any response from Shipwire. The most likely culprits are that you’re not posting to the InventoryUpdateXML variable, or you’re not posting with proper URL encoded syntax. Note that it is submitting requests to: https://api.shipwire.com/exec/InventoryServices.test.php

View proper URL encoding?