Custom Store Development Guide

How to create a Custom Store integration for ShipStation, XML field definitions, and examples of expected XML request and response.

The Custom Store option in ShipStation allows a developer to build a custom connection for a selling channel that does not have a native integration with ShipStation.

A Custom Store connection allows you to import orders into ShipStation in a single click, and enables ShipStation to automatically send shipment status and tracking information updates back to your cart or marketplace once a label is created.

Requires Advanced Development Skills

Please note that the Custom Store requires advanced development skills to set up. Many ShipStation customers with those skills have used this documentation to integrate their Custom Stores from start to finish.

ShipStation's support for Custom Stores is limited, but if you do encounter errors during the setup process, our support team can provide additional insight so that you or your developer can take corrective action.

Introduction

How the Custom Store Works

To integrate with the Custom Store, you must expose a Web Endpoint that returns XML according to the format in this guide.

The Web Endpoint will be used to handle two major requests:

  • GET: Allows ShipStation to pull in order information from your Custom Store, including recipient address, products, customers, etc. 

  • POST: Allows ShipStation to post shipment information back to the shopping cart of marketplace when an order is shipped, including shipping method, shipping status, tracking number, and more.

When your Web Endpoint is ready, you can then connect ShipStation to your store via the Custom Store connection option. Once connected, you can then import order information and send back shipment information.

Authentication

ShipStation uses Basic HTTP Authentication when calling your Web Endpoint.

Use a Basic Authentication Header to pass the credentials.

Build Your Web Endpoint

To allow ShipStation access to your cart or marketplace so it can GET and POST data, you must build your Custom Store endpoint to the specifications defined in this guide.

GET Call

ShipStation will make a GET API call to pull order information from the connected store. 

ShipStation will request order information from the Web Endpoint you expose. It must render XML that adheres to the specification defined in the following sections.

GET Endpoint URL

ShipStation will use the following URL format when requesting order information from the Web Endpoint you build:

[Your Web Endpoint]?action=export&start_date=[Start Date]&end_date=[End Date]&page=1 [Your Web Endpoint]?action=export&start_date=[Start Date]&end_date=[End Date]&page=1

Here is a description of each URL parameter: 

GET call URL Parameters

action

This value will always be "export" when ShipStation is requesting order information.

start_date

The start date in UTC time. Format: MM/dd/yyyy HH:mm (24 hour notation).

For example: 03/23/2012 21:09

end_date

The end date in UTC time. Same format as start_date.

Your page should return data for any order that was modified between the start and end date, regardless of the order's status. The order data should be returned in an XML format as shown in the following example. All free text fields should be enclosed in a CDATA section to ensure there aren't any parsing errors.

A CDATA section starts with "<![CDATA[" and ends with "]]>".

Paging

For stores with hundreds or thousands of orders per day, we recommend paging your results. To do this, simply choose the maximum number of records to return with each reply. Then include the total number of pages as an attribute in the root-level Orders element.

On the first request to your endpoint, ShipStation will append a URL parameter called "page". For example:

https://www.yourstore.com/shipstationxml.php?action=export&start_date=01%2f23%2f2012+17%3a28&end_date=01%2f23%2f2012+17%3a33&page=1 

If the Orders node indicates that there are additional pages, ShipStation will then request subsequent pages until all orders have been retrieved.

Example GET Response Body

Below is an example of the XML response body that ShipStation is expecting when a GET call is made for order information. You can find detailed definitions of the fields in the Custom Store Reference Guide.

<?xml version="1.0" encoding="utf-8"?>
<Orders pages="1">
  <Order>
    <OrderID><![CDATA[123456]]></OrderID>
    <OrderNumber><![CDATA[ABC123]]></OrderNumber>
    <OrderDate>10/18/2019 21:56 PM</OrderDate>
    <OrderStatus><![CDATA[paid]]></OrderStatus>
    <LastModified>12/8/2011 12:56 PM</LastModified>
    <ShippingMethod><![CDATA[USPSPriorityMail]]></ShippingMethod>
    <PaymentMethod><![CDATA[Credit Card]]></PaymentMethod>
    <CurrencyCode>EUR</CurrencyCode> 
    <OrderTotal>123.45</OrderTotal>
    <TaxAmount>0.00</TaxAmount>
    <ShippingAmount>4.50</ShippingAmount>
    <CustomerNotes><![CDATA[Please make sure it gets here by Dec. 22nd!]]></CustomerNotes>
    <InternalNotes><![CDATA[Ship by December 18th via Priority Mail.]]></InternalNotes>
    <Gift>false</Gift>
    <GiftMessage></GiftMessage>
    <CustomField1></CustomField1>
    <CustomField2></CustomField2>
    <CustomField3></CustomField3>
    <Customer>
      <CustomerCode><![CDATA[customer@mystore.com]]></CustomerCode>
      <BillTo>
        <Name><![CDATA[The President]]></Name>
        <Company><![CDATA[US Govt]]></Company>
        <Phone><![CDATA[512-555-5555]]></Phone>
        <Email><![CDATA[customer@mystore.com]]></Email>
      </BillTo>
      <ShipTo>
        <Name><![CDATA[The President]]></Name>
        <Company><![CDATA[US Govt]]></Company>
        <Address1><![CDATA[1600 Pennsylvania Ave]]></Address1>
        <Address2></Address2>
        <City><![CDATA[Washington]]></City>
        <State><![CDATA[DC]]></State>
        <PostalCode><![CDATA[20500]]></PostalCode>
        <Country><![CDATA[US]]></Country>
        <Phone><![CDATA[512-555-5555]]></Phone>
      </ShipTo>
    </Customer>
    <Items>
      <Item>
        <SKU><![CDATA[FD88821]]></SKU>
        <Name><![CDATA[My Product Name]]></Name>
        <ImageUrl><![CDATA[http://www.mystore.com/products/12345.jpg]]></ImageUrl>
        <Weight>8</Weight>
        <WeightUnits>Ounces</WeightUnits>
        <Quantity>2</Quantity>
        <UnitPrice>13.99</UnitPrice>
        <Location><![CDATA[A1-B2]]></Location>
        <Options>
          <Option>
            <Name><![CDATA[Size]]></Name>
            <Value><![CDATA[Large]]></Value>
            <Weight>10</Weight>
          </Option>
          <Option>
            <Name><![CDATA[Color]]></Name>
            <Value><![CDATA[Green]]></Value>
            <Weight>5</Weight>
          </Option>
        </Options>
      </Item>
      <Item>
        <SKU></SKU>
        <Name><![CDATA[$10 OFF]]></Name>
        <Quantity>1</Quantity>
        <UnitPrice>-10.00</UnitPrice>
        <Adjustment>true</Adjustment>
      </Item>
    </Items>
  </Order>
</Orders>

POST Call

The POST call allows ShipStation to post shipment information back to your cart or marketplace when you ship orders.

ShipStation will contact the same Web Endpoint when an order is shipped so your system can be notified that the order has been shipped. ShipStation takes an action called shipNotify when sending this notification. Your Web Endpoint should be able to determine when ShipStation is requesting order information (action = export) and when it is sending a shipping notification (action = shipnotify).

Your Web Endpoint should return a 200 (or 2xx) HTTP status code to indicate that the tracking information was received successfully.

POST Endpoint URL

ShipStation will use the following URL format when sending shipment and tracking information to the Web Endpoint you build:

[Your Web Endpoint]?action=shipnotify&order_number=[Order Number]&carrier=[Carrier]&service=&tracking_number=[Tracking Number]

For example:

https://www.yourstore.com/shipstationxml.php?action=shipnotify&order_number=ABC123&carrier=USPS&service=&tracking_number=9511343223432432432

Here is a description of each URL parameter:

action

The value will always be "shipnotify" when sending shipping notifications.

order_number

This is the order's unique identifier.

carrier

  • USPS

  • UPS

  • FedEx

  • DHL

  • DHLGlobalMail

  • Other

  • UPSMI

  • BrokersWorldWide

  • FedExInternationalMailService

  • CanadaPost

  • FedExCanada

  • OnTrac

  • Newgistics

  • FirstMile

  • Globegistics

  • LoneStar

  • Asendia

  • RoyalMail

  • APC

  • AccessWorldwide

  • AustraliaPost

  • DHLCanada

  • IMEX

service

This will be the name of the shipping service that was used to ship the order.

tracking_number

This is the tracking number for the package.

Example POST Request Body

Below is an example of the XML request body that will be included when ShipStation makes a POST API call for a shipment notification. You can find detailed definitions of the fields in the Custom Store Reference Guide.

<?xml version="1.0" encoding="utf-8"?>
<ShipNotice>
  <OrderNumber>ABC123</OrderNumber>
  <OrderID>123456</OrderID>
  <CustomerCode>customer@mystore.com</CustomerCode>
  <CustomerNotes></CustomerNotes>
  <InternalNotes></InternalNotes>
  <NotesToCustomer></NotesToCustomer>
  <NotifyCustomer></NotifyCustomer>
  <LabelCreateDate>10/19/2019 12:56</LabelCreateDate>
  <ShipDate>10/19/2019</ShipDate>
  <Carrier>USPS</Carrier>
  <Service>Priority Mail</Service>
  <TrackingNumber>1Z909084330298430820</TrackingNumber>
  <ShippingCost>4.95</ShippingCost>
  <CustomField1></CustomField1>
  <CustomField2></CustomField2>
  <CustomField3></CustomField3>
  <Recipient>
    <Name>The President</Name>
    <Company>US Govt</Company>
    <Address1>1600 Pennsylvania Ave</Address1>
    <Address2></Address2>
    <City>Washington</City>
    <State>DC</State>
    <PostalCode>20500</PostalCode>
    <Country>US</Country>
  </Recipient>
  <Items>
    <Item>
      <SKU>FD88821</SKU>
      <Name>My Product Name</Name>
      <Quantity>2</Quantity>
      <LineItemID>25590</LineItemID>
    </Item>
  </Items>
</ShipNotice> 

Connect to ShipStation

Connecting a custom store to ShipStation works the same was as adding any other direct store integration. See the detailed instructions below.

Add a Custom Store as a Selling Channel

To connect your custom store to ShipStation, do the following:

  1. Choose the Custom Store option.

    Custom Store tile.
  2. Enter the requested information into the form and test your connection using the Test Connection button.

    The table below provides details about the form fields in the connection window:

    URL to custom CML Page

    This is the location of your Web Endpoint. HTTPS is recommended.

    Unpaid Status

    This is the name of the status in your system that indicates an order is not yet paid for and not yet ready to be shipped.

    Multiple statuses may be separated by a comma.

    Paid Status

    This is the name of the status in your system that indicates an order is paid and ready to ship.

    Shipped Status

    This is the name of the status in your system that indicates an order is shipped.

    Cancelled Status

    This is the name of the status in your system that indicates an order is cancelled.

    On-Hold Status

    This is the name of the status in your system that indicates an order is on hold.

The status fields map your order statuses to ShipStation's order statuses. This determines where orders will import to in ShipStation. These fields are case sensitive.

Once the connection is complete, ShipStation will begin communicating with your Web Endpoint to obtain order information.

Import Orders from the Custom Store

ShipStation requests order information from your Web Endpoint during ShipStation's  updates using a GET call.

ShipStation users can trigger store updates manually by hovering over the import icon and opting to update all stores or individual stores.

Additionally, users can enable an auto-update feature so that ShipStation periodically update a store's orders. The auto-update frequency depends the user's history of manual updates and several other factors.

Send Shipment Notifications

By default, ShipStation uses a POST call to post shipment notifications to your Web Endpoint whenever a label is created in ShipStation.

These notifications can be delayed, if the user prefers, by setting the Notification options in the Custom Store Settings window.

If the ShipStation user creates labels outside of ShipStation, the user can choose the Mark as Shipped action within ShipStation, which will move the order to the shipped status in ShipStation and also post a shipment notification to your Web Endpoint.

Custom Store Reference Guide

The section includes Order Information and ShipNotify field definitions, and the XML Schema for validating order information.

Order Information Field Definitions

* Indicates required fields

Name

XPath

Max Allowed

Type

Length

Description

Orders *

Orders

1

Container

n/a

Root node

Order *

Orders/Order

Unlimited

Container

n/a

Container node for an individual order

OrderID *

Orders/Order/OrderID

1 per Order

String

n/a

Unique identifier for an order. Not displayed to anyone.

OrderNumber *

Orders/Order/OrderNumber

1 per Order

String

1...50

User-visible order number. This value can be the same as the OrderID.

OrderDate *

Orders/Order/OrderDate

1 per Order

Date/time

16

The date the order was placed. UTC time. Format: MM/dd/yyyy HH:mm. Both 12 and 24 hour notation are allowed.

OrderStatus *

Orders/Order/OrderStatus

1 per Order

String

1---50

The status of the order in your system. You will be able to map this status to a ShipStation status when connecting your Web Endpoint as a Selling Channel within ShipStation.

LastModified *

Orders/Order/LastModified

1 per Order

Date/time

16

The last time the order was modified in your system. UTC time. Format: MM/dd/yyyy HH:mm

ShippingMethod

Orders/Order/ShippingMethod

1 per Order

String

0...100

Recommended if you know the shipping method that will be used to ship the order. ShipStation can map your shipping methods to actual services.

PaymentMethod

Orders/Order/PaymentMethod

1 per Order

String

0...50

Order payment method (e.g. PayPal, Check, Money Order)

CurrencyCode

Orders/Order/CurrencyCode

1 per Order

String

3

Must be ISO 4217 currency code (USD, EUR, etc)

OrderTotal *

Orders/Order/OrderTotal

1 per Order

Decimal

9,2 (Precision, Scale)

Total amount of the order. (Nine total digits, up to 7 digits before the decimal point, and up to 2 after.)

TaxAmount

Orders/Order/TaxAmount

1 per Order

Decimal

9,2

Tax amount, if any.

ShippingAmount *

Orders/Order/ShippingAmount

1 per Order

Decimal

9,2

Shipping amount.

CustomerNotes

Orders/Order/CustomerNotes

1 per Order

String

0...1000

Notes left by the customer when placing the order.

InternalNotes

Orders/Order/InternalNotes

1 per Order

String

0...1000

Private notes that are only viewed by your company.

Gift

Orders/Order/Gift

1 per Order

Bool

"true" if this order is a gift

GiftMessage

Orders/Order/GiftMessage

1 per Order

String

0...1000

Contains the customer's gift message.

CustomField1

Orders/Order/CustomField1

1 per Order

String

0...100

Custom field that will show up in ShipStation's Orders grid. Can also be used in the criteria for ShipStation's filters and automation rules.

CustomField2

Orders/Order/CustomField2

1 per Order

String

0...100

Custom Field 2

CustomField3

Orders/Order/CustomField3

1 per Order

String

0...100

Custom Field 3

RequestedWarehouse

Orders/Order/RequestedWarehouse

1 per Order

String

0...100

Ship From Location (must match Name)

Source

Orders/Order/Source

1 per Order

String

0...50

Order source (e.g. eBay, US, Amazon, Buy.com)

Customer *

Orders/Order/Customer

1 per Order

Container

n/a

Container node for the customer's information.

CustomerCode *

Orders/Order/Customer/CustomerCode

1 per Order

String

1...50

A unique identifier of the customer in your system. This is often a username or email address.

BillTo *

Orders?Order/Customer/BillTo

1 per Order

Container

n/a

Container node for the customer's billing information.

Name *

Orders/Order/Customer/BillTo/Name

1 per Order

String

1...100

The billing name.

Company

Orders/Order/Customer/BillTo/Company

1 per Order

String

1...100

The billing company.

Phone

Orders/Order/Customer/BillTo/Phone

1 per Order

String

0...50

The billing phone.

Email

Orders/Order/Customer/BillTo/Email

1 per Order

String

0...100

Recommended so that ShipStation can notify the buyer when an order ships.

ShipTo *

Orders/Order/Customer/ShipTo

1 per Order

Container

n/a

Container node for the customer's shipping information.

Name *

Orders/Order/Customer/ShipTo/Name

1 per Order

String

1...100

Recipient's name.

Company

Orders/Order/Customer/ShipTo/Company

1 per Order

String

1...100

Recipient's company.

Address1 *

Orders/Order/Customer/ShipTo/Address1

1 per Order

String

1...200

Recipient's address line 1.

Address2

Orders/Order/Customer/ShipTo/Address2

1 per Order

String

1...200

Recipient's address line 2.

City *

Orders/Order/Customer/ShipTo/City

1 per Order

String

1...100

Recipient's city.

State *

Orders/Order/Customer/ShipTo/State

1 per Order

String

2...100

US and Canadian addresses require the 2 character state/territory code.

PostalCode *

Orders/Order/Customer/ShipTo/PostalCode

1 per Order

String

0...50

Required for domestic addresses and many international addresses.

Country *

Orders/Order/Customer/ShipTo/Country

1 per Order

String

2

2-character ISO 3116-1 country code.

Phone

Orders/Order/Customer/ShipTo/Phone

1 per Order

String

0...50

Required in some cases (e.g. overnight or international shipping). No specific format.

Items *

Orders/Order/Items

1 per Order

Container

Container node for the order's items.

Item

Orders/Order/Items/Item

Unlimited

Container

Container node for an individual order line item.

LineItemID

Orders/Order/Items/Item/LineItemID

1 per Item

String

1...50

Unique identifier for the line item.

SKU *

Orders/Order/Items/Item/SKU

1 per Item

String

1...50

Unique identifier for the product that was ordered.

Name *

Orders/Order/Items/Item/Name

1 per Item

String

1...200

Name of the product

ImageUrl

Orders/Order/Items/Item/ImageUrl

1 per Item

String

0...500

URL for the product's image

Weight

Orders/Order/Items/Item/Weight

1 per Item

Decimal

9,2

Weight of a single line item.

WeightUnits

Orders/Order/Items/Item/WeightUnits

1 per Item

Enum

Value should be one of the following: Pounds, Ounces, Grams

Quantity *

Orders/Order/Items/Item/Quantity

1 per Item

Integer

1...99999

Quantity of items ordered.

UnitPrice *

Orders/Order/Items/Item/UnitPrice

1 per Item

Decimal

9,2

Price of a single item.

Location

Orders/Order/Items/Item/Location

1 per Item

String

0...100

Location of the product in the Warehouse

Adjustment

Orders/Order/Items/Item/Adjustment

1 per Item

Bool

"true" if the line item represents a coupon, discount, or other adjustment. Note that any line item that is an adjustment must have a negative "UnitPrice" value.

Options

Orders/Order/Items/Item/Options

1 per Item

Container

Container note for item options (e.g. color, size, etc.)

Option

Orders/Order/Items/Item/Options/Option

10 per Item

Container

Container node for an individual option value.

Name *

Orders/Order/Items/Item/Options/Option/Name

1 per Option

String

1...100

The name of the option (e.g. Size).

Value *

Orders/Order/Items/Item/Options/Option/Value

1 per Option

String

1...100

The value of the option (e.g. XL).

Weight

Orders/Order/Items/Item/Options/Option/Weight

1 per Option

Decimal

9 (with 2 decimal precision)

If the option adds to the item weight, you may specify the additional weight here. This should be in the same units specified in WeightUnits. It should be the additional weight for a single quantity.

XML Schema for Validating Order Information

The Order XML will be validated against the following schema:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="Orders">  
  <xs:complexType>
   <xs:sequence>
    <xs:element name="Order" maxOccurs="unbounded" minOccurs="0">
     <xs:complexType>
      <xs:all>
       <xs:element type="String50" name="OrderID" minOccurs="0"/>
       <xs:element type="String50" name="OrderNumber"/>
       <xs:element type="DateTime" name="OrderDate"/>
       <xs:element type="String50" name="OrderStatus"/>
       <xs:element type="DateTime" name="LastModified"/>
       <xs:element type="String100" name="ShippingMethod" minOccurs="0"/>
       <xs:element type="String50" name="PaymentMethod" minOccurs="0"/>
       <xs:element type="xs:decimal" name="OrderTotal"/>
       <xs:element type="xs:decimal" name="TaxAmount" minOccurs="0"/>
       <xs:element type="xs:decimal" name="ShippingAmount" minOccurs="0"/>
       <xs:element type="String1000" name="CustomerNotes" minOccurs="0"/>
       <xs:element type="String1000" name="InternalNotes" minOccurs="0"/>
       <xs:element type="xs:boolean" name="Gift" minOccurs="0"/>
       <xs:element type="String1000" name="GiftMessage" minOccurs="0"/>
       <xs:element type="String100" name="CustomField1" minOccurs="0"/> 
       <xs:element type="String100" name="CustomField2" minOccurs="0"/>
       <xs:element type="String100" name="CustomField3" minOccurs="0"/>
       <xs:element type="String100" name="RequestedWarehouse" minOccurs="0"/>
       <xs:element type="String50" name="Source" minOccurs="0" />
       <xs:element name="Customer">   
         <xs:complexType>
          <xs:all>
           <xs:element type="String100" name="CustomerCode"/>
           <xs:element name="BillTo">
             <xs:complexType>
              <xs:all>
               <xs:element type="String100" name="Name"/>
               <xs:element type="String100" name="Company" minOccurs="0"/>
               <xs:element type="String50" name="Phone" minOccurs="0"/>
               <xs:element type="Email" name="Email" minOccurs="0"/>
               <xs:element type="String200" name="Address1" minOccurs="0"/>
               <xs:element type="String200" name="Address2" minOccurs="0"/>
               <xs:element type="String100" name="City" minOccurs="0"/>
               <xs:element type="String100" name="State" minOccurs="0"/>
               <xs:element type="String50" name="PostalCode" minOccurs="0"/>
               <xs:element type="StringExactly2" name="Country" minOccurs="0"/>
              </xs:all>
             </xs:complexType>
           </xs:element>
           <xs:element name="ShipTo">
            <xs:complexType>
              <xs:all>
               <xs:element type="String100" name="Name"/>
               <xs:element type="String100" name="Company" minOccurs="0"/>
               <xs:element type="String200" name="Address1"/>
               <xs:element type="String200" name="Address2" minOccurs="0"/>
               <xs:element type="String100" name="City"/>
               <xs:element type="String100" name="State" minOccurs="0"/>
               <xs:element type="String50" name="PostalCode" minOccurs="1"/>
               <xs:element type="StringExactly2" name="Country"/>
               <xs:element type="String50" name="Phone" minOccurs="0"/>
            </xs:all>
           </xs:complexType>
          </xs:element>
         </xs:all>
        </xs:complexType>
       </xs:element>
       <xs:element name="Items">
        <xs:complexType>
          <xs:sequence>
           <xs:element name="Item" maxOccurs="unbounded" minOccurs="0">
            <xs:complexType>
              <xs:all>
               <xs:element type="String50" name="LineItemID" minOccurs="0"/>
               <xs:element type="String100" name="SKU"/>
               <xs:element type="String200" name="Name"/>
               <xs:element type="xs:boolean" name="Adjustment" minOccurs="0"/>
               <xs:element type="xs:anyURI" name="ImageUrl" minOccurs="0"/>
               <xs:element type="xs:decimal" name="Weight" minOccurs="0"/>
               <xs:element name="WeightUnits" minOccurs="0">
               <xs:simpleType>
               <xs:restriction base="xs:string">
               <xs:patternvalue="pound|pounds|lb|lbs|gram|grams|gm|oz|ounces|Pound|Pounds|Lb|Lbs|Gram|Grams|Gm|Oz|Ounces|POUND|POUNDS|LB|LBS|GRAM|GRAMS|GM|OZ|OUNCES"/>
              </xs:restriction>
             </xs:simpleType>
            </xs:element>
            <xs:element type="xs:int" name="Quantity"/>
            <xs:element type="xs:decimal" name="UnitPrice"/>
            <xs:element type="String100" name="Location" minOccurs="0"/>
            <xs:element name="Options" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Option" maxOccurs="100" minOccurs="0">
                    <xs:complexType>
                      <xs:all>
                        <xs:element type="String100" name="Name"/>
                        <xs:element type="String100" name="Value"/>
                        <xs:element type="xs:decimal" name="Weight" minOccurs="0"/>
                     </xs:all>
                    </xs:complexType>
                   </xs:element>
                 </xs:sequence>
                </xs:complexType>
               </xs:element>
              </xs:all>
             </xs:complexType>
            </xs:element>
           </xs:sequence>
          </xs:complexType>
         </xs:element>
        </xs:all>
       </xs:complexType>
      </xs:element>
     </xs:sequence>
     <xs:attribute type="xs:short" name="pages"/>
    </xs:complexType>
   </xs:element>
   <xs:simpleType name="DateTime">  
    <xs:restriction base="xs:string">
     <xs:pattern value="[0-9][0-9]?/[0-9][0-9]?/[0-9][0-9][0-9]?[0-9]? [0-9][0-9]?:[0-9][0-9]?:?[0-9]?[0-9]?. ?[aApP]?[mM]?"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="Email">
  <xs:restriction base="xs:string">
  </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="StringExactly2">
   <xs:restriction base="xs:string">
    <xs:minLength value="2"/>
    <xs:maxLength value="2"/>
   </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String30">
    <xs:restriction base="xs:string">
      <xs:maxLength value="30"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String50">
    <xs:restriction base="xs:string">
      <xs:maxLength value="50"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String100">
    <xs:restriction base="xs:string">
      <xs:maxLength value="100"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String200">
    <xs:restriction base="xs:string">
      <xs:maxLength value="200"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="String1000">
    <xs:restriction base="xs:string">
      <xs:maxLength value="1000"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

ShipNotify Field Definitions

Name

XPath

Max Occurrence

Type

Length

Description

ShipNotice

ShipNotice

1

Container

n/a

Root Node

OrderID

ShipNotice/OrderID

1

String

1...50

Unique identifier for an order

OrderNumber

ShipNotice/OrderNumber

1

String

1...50

User-visible order identifier.

CustomerCode

ShipNotice/CustomerCode

1

String

1...50

A unique identifier of the customer in your system. This is often a username or email address.

CustomerNotes

ShipNotice/CustomerNotes

1

String

0...1000

Notes left by the customer when placing the order.

InternalNotes

ShipNotice/InternalNotes

1

String

0...1000

Private notes that are only viewed by your company.

NotesToCustomer

ShipNotice/NotesToCustomer

1

String

0...1000

Public notes to be communicated to the customer.

NotifyCustomer

ShipNotice/NotifyCustomer

1

Bool

If ShipStation send the customer a shipment notification email, this value will be "false".

LabelCreateDate

ShipNotice/LabelCreateDate

1

Date/time

The date the shipping label was created. UTC time. Format: MM/dd/yyyy HH:MM.

ShipDate

ShipNotice/ShipDate

1

Date

The date the package will be shipped.

Carrier

ShipNotice/Carrier

1

String

0...50

The shipping carrier used (USPS, UPS, FedEx)

Service

ShipNotice/Service

1

String

0...50

The shipping service used.

TrackingNumber

ShipNotice/TrackingNumber

1

String

0...50

The package's tracking number.

ShippingCost

ShipNotice/ShippingCost

1

Decimal

9,2

The cost to ship the package.

Recipient

ShipNotice/Recipient

1

Container

n/a

Container node for the recipient's address.

Name

ShipNotice/Recipient/Name

1

String

1...100

Recipient's name.

Company

ShipNotice/Recipient/Company

1

String

0...100

Recipient's company.

Address1

ShipNotice/Recipient/Address1

1

String

1...200

Recipient's address line 1.

Address2

ShipNotice/Recipient/Address2

1

String

1...200

Recipient's address line 2.

City

ShipNotice/Recipient/City

1

String

0...100

Recipient's city.

State

ShipNotice/Recipient/State

1

String

US and Canadian addresses require the 2 character state/territory code.

PostalCode

ShipNotice/Recipient/PostalCode

1

String

0...50

Required for domestic addresses and many international addresses.

Country

ShipNotice/Recipient/Country

1

String

2

2-character country code.

Items

ShipNotice/Items

1

Container

Container node for the shipment's items.

Item

ShipNotice/Items/Item

Unlimited

Container

Container node for an individual shipment line item.

LineItemID

ShipNotice/Items/Item/LineItemID

1 per Item

String

1...50

Unique identifier for the line item.

SKU

ShipNotice/Items/Item/SKU

1 per Item

String

1...100

Unique identifier for the product that was shipped.

Name

ShipNotice/Items/Item/Name

1 per Item

String

1...200

Name of the product.

Quantity

ShipNotice/Items/Item/Quantity

1 per Item

Integer

1...99999

Quantity of items shipped.