ShippyPro API documentation
ShippyPro Developer Portal Β· Apiary
Introduction
- Base endpoint
- Versioning
- API Specification
- SOAP version
- API Console
- Webhook
- APIs and features Getting started
- Get your credentials
- Authentication
- Generate API Key
- Authorization header
- Partner Identification
- API-Console
- Get Carrier ID
- Order ID
- Server Responses
- DateTime Format
- List of currencies
- API Rate Limit Use Cases
- Checkout
- Shipments
- Tracking
- Webhook
- Orders
- Returns
- Proof of Delivery
- Other Tips API Console
Reference
- Ship
- Edit
- Edit - Partial
- GetRates
- GetTracking Addresses
- CheckAddress
- IsResidentialAddress Pickup
- BookPickup
- GetPickups
- CancelPickup
- GetPickupAvailability Marketplaces
- GetMarketplaces Carriers
- GetCarriers
- GetCarrierOptions
- GetCarrierPackagesTypes Manifest
- CreateManifest
- GetManifest
- DeleteManifest
- CloseShipments Paperless
- UploadPaperlessDocumentation
- DeletePaperlessDocumentation
- UploadPaperlessPostShip
- CreateCrossBorderInvoice Orders
- GetOrder
- ArchiveOrders
- UpdateOrders
- PutOrder
- VoidShipments
- GetLabelUrl
- GetPendingOrders
- GetShippedOrders
- DeletePendingOrder
- IsPendingOrder
- EditPendingOrders
- PutShippedOrder
- GetPOD
- GetPODDocument
- GetDetailedPricing
- CreateInvoice
- MarkOrdersAsPrinted
- GetShipmentsReport
- GetReturnsReport
- CreateMasterShipment
- CloseMasterShipment Printing
- GetPrinters
- PrintOrder
- PrintOrderBySKU Dropoff Points
- GetDropOffPoints
- GetDropOffInfo Whitelabels
- GetLoginToken
- RegisterNewUser
- BlockUser
- UnblockUser
- GetCustomers Webhooks
Introduction
ShippyPro Developer Portal
Introduction
Welcome to ShippyPro Developer Portal a comprehensive reference guide to the most complete Shipping and Logistic API suite. Here you can access to 40+ API methods to cover all your business cases improving efficiency, reducing operations time/costs and delighting your customer with a next level shipping service.
You can find other information in the API section ShippyPro Help Center.
Overview
ShippyPro API is the easiest way to integrate your system with hundreds of carriers worldwide to ship your packages. Check our complete integration library here.
We study the e-commerce and the logistics industry every day with the goal of further optimizing the shipping process and making this activity easier for any vendor. Here is a simple guide to help you with the integration of ShippyPro APIs.
The ShippyPro multi-carrier APIs allows developers to build applications that interface with the ShippyPro platform. The APIs can be used to automate many tasks including:
Managing Shipments
Creating Shipping Labels
Get Shipping Rates
Get Tracking
Schedule Pickup
Download orders etc.
Base endpoint
All API requests must be made over HTTPS to the following base endpoint:
https://www.shippypro.com/api/version
π You can find the current version in the section below!
Versioning
The current version of ShippyPro API is v1. This is the endpoint to reach:
https://www.shippypro.com/api/v1
π You do not need to specify the version if you want to use the first v1.
You'll find here the change log for all future API update.
API Specification
ShippyPro exposes a REST API, you need to send a well-formed JSON POST request containing Method and Params parameters.
SOAP version
We also offer a SOAP API version. At this link you can find the WSDL.
API Console
ShippyPro includes an easy-to-use and powerful API Console, to try and test your API calls without using other external tools! Please find our API Console at the following link.
Webhook
ShippyPro webhooks are used to send real-time events to external listeners to provide the ability to receive orders, shipments, and tracking updates in real-time. When a webhook is triggered, ShippyPro sends a POST request to the webhook's callback URL.
APIs and features
Each endpoint and feature is identified with the module associated with.
| API Method | Description |
|---|---|
ArchiveOrders |
Archives shipments or orders |
BookPickup |
Books a Pick-Up for all supported carriers |
CancelPickup |
Cancels a scheduled pickup for all supported carriers |
CheckAddress |
Checks if an address is valid |
CloseMasterShipment |
Closes a Bulk Shipping flow |
CloseShipments |
Confirms shipments to carriers |
CreateInvoice |
Generates and get order summary or invoices |
CreateManifest |
Creates Manifest documents |
CreateMasterShipment |
Returns a new Master Shipment ID for carriers featuring Bulk Shipping |
DeleteManifest |
Deletes Manifest documents |
DeletePaperlessDocumentation |
Deletes unused uploaded ETD/paperless documents by TransactionID or recipient Name |
DeletePendingOrder |
Deletes an order yet to be shipped |
EditPendingOrders |
Edit the orders yet to be shipped |
GetCarrierOptions |
Gets the available Carrier options for a specific Carrier |
GetCarrierPackagesTypes |
Gets the available carrier packages types |
GetCarriers |
Gets the list of connected carriers and their details in your ShippyPro profile |
GetDetailedPricing |
Returns the detailed estimated pricing calculated for one order |
GetDropOffPoints |
Retrieves nearest Pick Up DropOff points (PUDO) |
GetDropOffInfo |
Retrieves a single Pick Up DropOff point given an ID |
GetLabelUrl |
Retrieves order labels and tracking info |
GetManifest |
Retrieve Manifest documents |
GetMarketplaces |
Returns all the Marketplaces IDs already connected to your ShippyPro account |
GetOrder |
Retrieves order or shipment details |
GetPendingOrders |
Returns the orders list yet to be shipped |
GetPickupAvailability |
Retrieves Pick Up availability for all supported carriers |
GetPickups |
Returns the list of scheduled pickups for all supported carriers |
GetPOD |
Returns the Proof of Delivery of a shipment once delivered |
GetPODDocument |
Returns a PDF document including the Proof of Delivery and shipment details |
GetPrinters |
Retrieves connected ShippyPro printers |
GetReturnsReport |
Returns the list of returns in the specified timeframe |
GetShipmentsReport |
Returns the list of shipments in the specified timeframe |
IsPendingOrder |
Returns true if an order is being shipped |
IsResidentialAddress |
Checks if an address is residential |
MarkOrdersAsPrinted |
Marks orders as printed |
PutShippedOrder |
Imports external orders already shipped inside your ShippyPro profile |
UpdateOrders |
Send shipments information to marketplaces |
UploadPaperlessDocumentation |
Submits custom documents to carriers |
UploadPaperlessPostShip |
Submits custom documents to carriers after the shipment |
CreateCrossBorderInvoice |
Generates a Cross Border Invoice |
| Feature | Description |
|---|---|
Return Label Combination |
Used in the Ship API method allows you to specify a different carrier for a return |
Return Address Override |
Used with Return Label Combination in the Ship API method, allows you to specify a different return address |
For a custom quotation to access these features please contact us.
Getting started
How to get your credentials and make the first API call.
Get your credentials
You can create a free ShippyPro account here.
Authentication
The ShippyPro API uses Basic Authentication, you can find more information here.
Generate API Key
You can find or generate your API Key under the API section Here in ShippyPro (e.g. your-API-Key).
Authorization header
You can build the Authorization header as follows:
Encode
your-API-Keyfollowed by a single colon:using Base64 (e.g.your-encoded-credentials)The authorization method and a space "Basic " is then put before
your-encoded-credentials.
For example:
Authorization: Basic your-encoded-credentials
π Note! You can find the basic authorization header in your API console.
Partner Identification
If you are integrating ShippyPro into your platform on behalf of your users, include the Referer HTTP header with your partner name in all API requests.
This allows ShippyPro to identify and support your integration.
For example:
Referer: your-partner-name
π Note! Use a consistent, lowercase identifier (e.g. my-platform, acme-wms). Contact your ShippyPro account manager for your assigned partner name.
API-Console
ShippyPro includes an easy-to-use and powerful API Console, to try and test your API calls without using other external tools! Please find our API Console at the following link.
Get Carrier ID
After you have generated the API KEY you would need to add at least one carrier from Carrier page. You can find a detailed guide on how to connect your carriers in ShippyPro Help Center here.
After you have connected at least one Carrier, you will be able to get CarrierID, CarrierName, and CarrierService at the bottom of the API Keys page.
Order ID
The OrderID number is the unique ID given to the order at the time it was processed.
It's a ShippyPro generated number and no edits are possible.
Save this number once you generate a new shipment in order to do further API calls related to that order.
If you need to reference your internal order ID number you can use the TransactionID field.
Server Responses
| Status Code | Description |
|---|---|
200 |
OK - The request was successful (some API calls may return 201 instead). |
400 |
Bad Request - The request could not be understood or was missing the required parameters. |
401 |
Unauthorized - Authentication failed or the user does not have permissions for the requested operation. |
403 |
Forbidden - Access denied. |
404 |
Not Found - Resource was not found. |
429 |
Too many requests. See here for specification. |
500 |
Internal Server Error - ShippyPro has encountered an error. |
DateTime Format
ShippyPro uses the Unix Time for Date and Time fields.
Please refer to ( https://en.wikipedia.org/wiki/Unix_time) for more information about Unix time.
Timezone
ShippyPro use CET as timezone, this means that if you use a unix time stamp date, CET timezone will be considered. Please note that some Carriers could have specific time zone value for date time parameters, please check with carrier which one should be used.
List of currencies
Here's the list of the accepted currencies (use the 3-length ISO code)
| Currency | ISO-4217 |
|---|---|
| United States Dollar | USD |
| European Euro | EUR |
| British Pound Sterling | GBP |
| Japanese Yen | JPY |
| Canadian Dollar | CAD |
| Australian Dollar | AUD |
| Swiss Franc | CHF |
| Chinese Yuan Renminbi | CNY |
| Indian Rupee | INR |
| Russian Ruble | RUB |
| Singapore Dollar | SGD |
| Swedish Krona | SEK |
| South Korean Won | KRW |
| Mexican Peso | MXN |
| New Zealand Dollar | NZD |
| Danish Krone | DKK |
| Norwegian Krone | NOK |
| Polish Zloty | PLN |
| Malaysian Ringgit | MYR |
| Saudi Arabian Riyal | SAR |
| Qatari Riyal | QAR |
| Turkish Lira | TRY |
| Indonesian Rupiah | IDR |
| UAE Dirham | AED |
| Philippine Peso | PHP |
| Romanian Leu | RON |
| Bulgarian Lev | BGN |
| Czech Koruna | CZK |
| Hungarian Forint | HUF |
| South African Rand | ZAR |
| Thai Baht | THB |
| Kuwaiti Dinar | KWD |
| Egyptian Pound | EGP |
| Israeli New Shekel | ILS |
| Lebanese Pound | LBP |
| Macanese Pataca | MOP |
| Ukrainian Hryvnia | UAH |
| Moroccan Dirham | MAD |
| New Taiwan Dollar | TWD |
| Peruvian Sol | PEN |
| Vietnamese Dong | VND |
API Rate Limit
There is a Rate-Limiting of 20 API requests every 10 seconds.
This means that you can do 10 API calls in one second but then you will only have 10 remaining API calls for the next nine seconds.
When request submissions exceed this limit, the API will return the error: 429 Too Many Requests.
π The default rate limit can be increased for a premium fee for further information please contact sales.
Use Cases
Here you can find most common ShippyPro API integration scenarios.
Checkout
In this flow you can find how to use ShippyPro API in your ecommerce store checkout.
Shipments
In this flow you can find how to use ShippyPro API to handle a shipment.
Tracking
In this flow you can find how to use ShippyPro API to get shipments tracking.
Webhook
In this flow you can find how to use ShippyPro API to get real time shipments update.
Orders
In this flow you can find how to use ShippyPro API to handle orders.
In this flow you can find how to use ShippyPro API to print labels.
Returns
In this flow you can find how to use ShippyPro API to get shipments tracking.
Proof of Delivery
In this flow you can find how to use SHippyPro API to get proof of delivery.
Other Tips
If you want to import your orders from your System (ERP, WMS, OMS) to ShippyPro: use PutOrder API.
To upload the ETD documents, call the UploadPaperlessDocumentation API before the Ship API. The TransactionID, Name, and Country fields must match the one of the order (case sensitive).
To get the carriers prices for the shipment and create the shipping label: use GetRates and then Ship APIs.
To book the carrier pickup use the BookPickup always after the Ship API.
To create the end of day manifest with the summary of all the shipments to be given to the carrier by using the CreateManifest API call.
To confirm all the shipments that will depart by using CloseShipments, only for carriers that request it.
To track orders use webhooks by configuring them from the API page inside the ShippyPro platform. Otherwise use the GetTracking call but is not our recommended option.
To cancel a pickup use the CancelPickup call (valid only for some carriers please check if the selected carrier supports this call here).
To add some options to the shipment it is necessary to get their definitions first with the GetCarrierOptions API call and then add them to the Ship call by using the CarrierOptions tag
To make changes to an order created using the Ship API:
- Change the method inside the βShipβ API with βEditβ.
- Change the desired fields.
- Insert in the βOrderIDβ field the order number received in the response to the Ship API.
To cancel a shipment (valid only for some carriers please check if selected one support this option here) use VoidShipments.
To add customs declaration for international shipment, please go to the International Shipments section inside the Ship and follow the instructions.
API Console
ShippyPro provides an internal API console to test API methods request and response wothout using and external api client.
If you already have a ShippyPro account, please find our API Console at the following link.
Status Page
We provide transparency around service availability and performance for ShippyPro products. Here you can find our ShippyPro Status Page where you can check status for
ShippyPro Systems Stack
Carriers
Marketplaces
Other Services
You can also subscribe to get informed whenever an incident is triggered.
Reference
Shipments
Ship
Attributes
This method gives the possibility to generate a shipment or a return and get shipping labels for 170+ carriers with the same API call.
π‘This Method gives you the ability to:
Generate a standard shipment and get its label.
Generate a shipment with its return label to put in the box.
Generate a standard return.
Generate a return and override its return to address.
Generate a shipment with a carrier and generate return label with a different carrier.
How to test
For testing purposes, you can use the ShippyPro Generic carrier for generating test labels. See here if you need help configuring ShippyPro Generic Carrier.
β οΈ Note! The data type of the response attribute LabelURL could be both an array or a string.
it's an empty array if the order is in error,[].
it's a string if the order has one label, "label-url".
it's an array of strings if the order has more than one label, ["label-url-1", "label-url-2", ...].
π If you used PutOrder API to create an order to ship, you need to make the Ship API call with the same TransactionID used with the PutOrder API call, then the system will link the right order as well as the items.
Choosing a Carrier
Please note that you must have at least a working carrier connection to make any shipment. For help or any information on how to connect a carrier, please check our help article here. After you have connected at least one Carrier, you will be able to get CarrierID, CarrierName, and CarrierService at the bottom of the API Keys ShippyPro page.
Getting Carrier Rates
You can use our GetRates API before of Ship call in order to choose the best carrier's rate option for your shipment and specify the RateID parameter in the Ship call.
Custom Attributes
Ship API allows you to specify Order and Parcel custom attributes with a key value array in the request, which can be useful for marking or retrieving your shipments based on these values. These values can also be printed on the shipment labels using our Label Design product, which allows you to customize labels.
Managed Attributes
Some of the attributes that can be added to a Ship request are recognized by the platform and they can be exploited to better manage the orders and their customizations.
sp_ioss
The sp_ioss attribute makes it possible to bind an IOSS number. This data is used instead of the default one, specified in the Profile section, and eventually transmitted
to the carriers.
Choosing Packages
You can specify your own package dimensions or retrieve Carrier supported packages with the GetCarrierPackagesTypes method, see here for method reference.
Example of package specification in the Ship and Get Rates (Only FEDEX) methods call, where package attribute value corresponds to the "value" attribute obtained through the GetCarrierPackagesType method call.
"parcels":[\
{\
"package":1,\
"length":5,\
"width":5,\
"height":5,\
"weight":10\
}\
]
Get the Labels (sync or async)
The method works in async and sync way, giving you the ability to get return label in the response call or retrieve it later. Please refer to the Async parameter below , if false the label will be returned in call response, if true you should retrieve the label with the GetLableURL or via Webhook - Order Shipped Events.
Carrier Options
You can specify optional carrier services for the shipment, filling the carrier option array parameter, see below.
International Shipment and CN22 module
If you need to ship outside EU should provide custom declaration module (CN22 or CN23), please read the CN22 parameter in Ship reference section below. Including these parameters will genarates automatically the custom documents with the label. Kindly note that the BillAccountNumber field should only be filled in case the Incoterm employed is EXW.
Paperless
If you want to upload paperless documentation to you shipment, please check the UploadPaperlessDocumentations API method.
Returns handling
In ShippyPro a return is treated as a shipment, and you can decide how to fill the from and to address with your own logic.
Anyway the easier way to create a return is setting IsReturn: true and reversing the sender and the recipient addresses.
Return Label in The Box
ShippyPro support Return Label in The Box that gives you the ability to create Shipment and return label with one ship call. You should specify this setting in carrier connection form, the ship call will work accordingly with the carrier connection setting. If need help in setting the feature please read our help article here.
Return Label Combination & Return Address Override
The ship method also supports the possibility to ship with a specific carrier and return the order with another carrier. If you are you using Return Label Combination, You can also specify a different return address (eg. a specific warehouse/address for return), filling the optional parameter with an address object array. By default the tracking is for 30 days after label creation but an extension till 120 days is possible.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
to_address |
Array | true | false | Recipient address information | |
name |
string | true | false | Recipient name | |
company |
string | true | true | Recipient company | |
street1 |
string | true | false | Recipient street1 | Depends on the specific carrier |
street2 |
string | true | true | Recipient street2 | Depends on the specific carrier |
city |
string | true | false | Recipient city | |
state |
string | false | true | Recipient state | |
zip |
string | true | false | Recipient zip code | Depends on the country |
country |
string | true | false | Recipient country (ISO 3166) | 2 chars |
phone |
string | true | false | Recipient Phone | Country specific phone length |
email |
string | false | false | Recipient Email | 64 chars |
from_address |
Array | true | false | Sender address information | |
name |
string | true | false | Sender name | |
company |
string | true | true | Sender company | |
street1 |
string | true | false | Sender street1 | |
street2 |
string | true | true | Sender street2 | |
city |
string | true | false | Sender city | |
state |
string | false | true | Sender state | |
zip |
string | true | false | Sender zip code | Depends on the country |
country |
string | true | false | Sender country (ISO 3166) | 2 chars |
phone |
string | true | false | Sender phone | Depends on the country |
email |
string | true | false | Sender email | |
parcels |
Array | true | false | Parcels information (Min length 1) | 4 objects each |
dimension_unit |
string | false | false | Parcel unit of measurement for lenght: "CM" (default), "IN" | 2 chars |
length |
float | true | false | Parcel Length | |
width |
float | true | false | Parcel width | |
height |
float | true | false | Parcel height | |
weight_unit |
string | false | false | Parcel unit of measurement for weight: "KG" (default), "LB", "OZ" | 2 chars |
weight |
float | true | false | Parcel weight | 2 decimals |
Attributes |
Object | false | false | Optional Parcel Attributes can contains custom multi key/value | |
TotalValue |
string | false β οΈ | true | Value of the order including the currency (e.g. 120.50 EUR) β οΈ It's required for international shipment! |
|
TransactionID |
string | true | false | Your internal reference order number | 255 chars |
MarketplaceID |
int | false | false | Your Marketplace ID | 11 chars |
MarketplacePlatform |
string | false | false | The name of the marketplace to connect | 255 chars |
ContentDescription |
string | true | false | Description of the content | 255 chars |
CustomInfoContentsType |
string | false | false | Type of goods declared to customs in case of cross border shipments, ["documents", "gift", "merchandise", "returned_goods", "sample", "other"] | 255 chars |
Insurance |
float | false | false | Insurance value (default: 0) | |
InsuranceCurrency |
string | false | false | Insurance currency (default: "EUR"), see here | 3 chars |
CashOnDelivery |
float | false | false | Cash on delivery value (default: 0) | |
CashOnDeliveryCurrency |
string | false | false | Cash on delivery currency (default: "EUR"), see here | 3 chars |
CashOnDeliveryType |
int | false | false | Cash on delivery type, 0 = Cash (default), 1 = Cashier's check, 2 = Check, 3 = All Payment Methods | 1 digit |
ShipmentAmountPaid |
float | false | false | Amount paid by the customer for the shipment | |
ShipmentCost |
float | false | false | Selected rate value | |
ShipmentCostCurrency |
string | false | false | Selected rate currency, see here | |
CarrierName |
string | true | false | Selected rate Carrier Name, as reported in the GetRates | |
CarrierService |
string | true | false | Selected rate Carrier Service, as reported in the GetRates | |
CarrierID |
int | true | false | Selected rate CarrierID, as reported in the [GetRates]( https://www.shippypro.com/ShippyPro-API-Documentation/#getrates | |
OrderID |
string | false | true | Selected rate OrderID, as reported in the GetRates | |
RateID |
string | false | true | Selected rate RateID, as reported in the GetRates | |
Incoterm |
string | false | false | Shipment incoterm: DAP, DDP, or EXW. For cross borders shipments the default value would be DAP in case it's not specified in the request differently | |
BillAccountNumber |
string | true β οΈ | false | Bill the shipment to third party account number. β οΈ This field is only required in case the incoterm is EXW | |
PaymentMethod |
string | false | false | Order payment method (ex. Paypal, COD) | |
Note |
string | false | false | Note | 255 chars |
CarrierNote |
string | false | true | Carrier note (not supported by every Carrier) | 255 chars |
UserNote |
string | false | true | User note | 255 chars |
IsReturn |
bool | false | true | Set TRUE to create a Return Label |
|
IsDynamicMultiparcel |
bool | false | false | Set TRUE for carriers supporting Dynamic Multiparcel (e.g. Poste Italiane InvioSystem). Shipments to the same recipient, on the same day, with the same carrier are automatically grouped into a single master shipment whose parcel count is finalised at closeout β no need to know the number of parcels in advance |
|
Async |
bool | false | false | Process the label generation async or sync (Get the label directly in the response or via order shipped webhook) | |
non_delivery_option |
string | false | false | Only for dutiable shipments. Accepted values: return = sending back to the sender, abandon = abandoned parcel by the consignee. |
|
zone_name |
string | true β οΈ | false | Pricing zone name. β οΈ This field is only required if detailed_pricing is set | |
weight_range |
string | true β οΈ | false | Pricing weight range. β οΈ This field is only required if detailed_pricing is set | |
detailed_pricing |
Array | false | false | Contains pricing information. (Min length 1) | |
type |
string | true | false | Pricing type (inside each detailed_pricing item), ["tariff", "additional_parcels_surcharge", "carrier_option", "cod_surcharge", "exceed_dimension_l", "exceed_dimension_w", "exceed_dimension_h", "exceed_dimension", "exceed_parcel_surcharge", "fixed_surcharge", "fuel_surcharge", "insurance_surcharge", "triangle_surcharge", "vat_surcharge"] | |
price |
float | true | false | Price (inside each detailed_pricing item) | |
desc |
string | true | false | Pricing description (inside each detailed_pricing item) | |
Attributes |
Object | false | false | Optional Order Attributes can contains custom multi key/value | |
name |
string | true | false | Attribute name (inside each Attributes item) | |
value |
string | true | false | Attribute value (inside each Attributes item) | |
LabelType |
string | false | false | Label type ("PDF" or "ZPL") - Use this field to request a specific label format (conversion will happen automatically) | |
LabelWidth |
float | false | false | Label width (cm, for PDF) |
|
LabelHeight |
float | false | false | Label height (cm, for PDF) |
|
Rotate |
int | false | false | Label rotation degrees, β οΈ only applicable when a label format conversion is applied specifying a LabelType | |
PageNumber |
int | false | false | Index of the label you want to retrieve | |
SplitPages |
bool | false | false | Set TRUE if you want to split the labels |
|
PostShipmentETD |
bool | false | false | set TRUE to send shipment documents at a later time via the UploadPaperlessPostShip method |
|
CarrierOptions |
array | false | false | Optional, contain one or more item Carrier Option information | |
name |
string | false | false | Optional, carrier option key name | |
value |
string | false | false | Optional, carrier option value | |
CN22Info |
array | false | false | Optional, contain one or more item CN22 information | |
Description |
string | false | false | Optional CN22 item description (eg. "Merchandise") | |
Weight |
float | false | false | Optional CN22 item weight (2) | |
Quantity |
float | false | false | Optional CN22 item quantity (5) | |
UnitValue |
float | false | false | Optional CN22 item unit price (10.50) | |
OriginCountry |
string | false | false | Optional CN22 origin country code ("IT") | |
Currency |
string | false | false | Optional CN22 price currency code ("USD") | |
HSCode |
string | false | false | Optional CN22 HSCode ("123456") | |
EAN |
string | false | false | Optional CN22 EAN ("123456") | |
VOC |
string | false | false | Optional CN22 VOC Volatile Organic Compound in Grams ("12") |
β οΈ Warning: the ContentDescription field does not accept the backslash character as a valid character. Please do not enter a backslash in this field, as it may cause errors or data processing problems.
International Shipments
- To add customs declaration for international shipment. Add the following tag inside the Params field in the Ship request (one row for every item in the order):
"CustomInfoContentsType" : "merchandise",
"CN22Info": [\
{\
"Description": "test",\
"Weight": 2,\
"Quantity": 5,\
"UnitValue": 10,\
"OriginCountry": "IT",\
"Currency": "USD",\
"HSCode": "123456",\
"EAN": "123456",\
"VOC": "12"\
}\
]
These fields are required for international shipments. Alternatively, the UploadPaperless method is available (find out here which carriers support this method).
Carrier Options
- To add some options to the shipment it is necessary to get their definitions first with the GetCarrierOptions API call and then add them to the Ship call by using the CarrierOptions tag
"CarrierOptions": [{\
"name": "upsdangerousgoods",\
"value": 1\
}]
Return Label Combination & Return Address Override
To specify a different carrier for return shipments please add this parameters to ship call. The return_to array is optional and is needed only if you want to specify a different return address.
"ReturnCarrierName": "Generic",
"ReturnCarrierService": "Standard",
"ReturnCarrierID": 6,
"ReturnInsurance": 10, // Optional - Default 0
"ReturnInsuranceCurrency": "EUR", // Required if ReturnInsurance is set
"ReturnCarrierOptions": [{ //optional\
"name": "upsdangerousgoods",\
"value": 1\
}],
"return_to": {
"name": "John Doe",
"company": "Shippypro",
"street1": "Via Napoli 1",
"street2": "",
"city": "Roma",
"state": "RM",
"zip": "12345",
"country": "IT",
"phone": "+39123124567",
"email": "sales@shippypro.com"
},
Per-Parcel Data
The Ship response includes a per-parcel breakdown of the trackings and labels emitted by the carrier through the Parcels and ReturnParcels arrays. The same data is also returned by GetLabelUrl.
Outbound parcels β Parcels
One entry per physical outbound parcel. null when no parcel has both a tracking number and a label (e.g. the carrier returned only customs forms). For shipments where the carrier returns a Return Label In The Box (RLITB) alongside the outbound label, the return label is also emitted as an item in this same array β see "Identifying return parcels" below.
| Field | Data Type | Description |
|---|---|---|
TrackingNumber |
string | Per-parcel tracking code. |
PDF |
string | null | Base64-encoded PDF of this parcel's label (one page per parcel). null if the carrier did not return a PDF. |
ZPL |
string | null | Raw ZPL label string for this parcel. null if the carrier did not return a ZPL. |
Attributes |
object | Per-parcel attributes (free-form name β value, e.g. UDC). Empty object if no attributes are stored. |
Return parcels β ReturnParcels
One entry per physical return parcel. Only present when the Ship request used a Return Label Combination (i.e. specified ReturnCarrierName / ReturnCarrierID / ReturnCarrierService). Absent for outbound-only shipments and for RLITB.
| Field | Data Type | Description |
|---|---|---|
TrackingNumber |
string | Per-parcel return tracking code. |
PDF |
string | null | Base64-encoded PDF of the return label for this parcel. |
ZPL |
string | null | Raw ZPL of the return label for this parcel. |
Attributes |
object | Mirrored positionally from Parcels[i].Attributes. Return parcel attributes are not stored independently β they are copied positionally from the outbound parcel at the same index. If there is no corresponding outbound parcel at that index, Attributes is an empty object. |
Identifying return parcels
Return Label Combination (RLC) β outbound parcels are in
Parcels, return parcels are inReturnParcels. Clearly separated.Return Label In The Box (RLITB) β outbound and return labels are both emitted inside
Parcelswith no marker indicating which is which. This is a current limitation of the data model: RLITB labels are stored against the same order with no per-row "outbound vs return" flag. Clients that need to distinguish them must rely on out-of-band knowledge (e.g. the order configuration) or carrier-specific conventions.
Worked examples
Outbound 2-parcel + RLC return:
{
"Parcels": [ { "TrackingNumber": "OUT-1", "...": "..." }, { "TrackingNumber": "OUT-2", "...": "..." } ],
"ReturnParcels": [ { "TrackingNumber": "RET-1", "...": "..." }, { "TrackingNumber": "RET-2", "...": "..." } ]
}
Outbound 2-parcel + RLITB (the two return entries are not distinguishable from the outbound ones):
{
"Parcels": [\
{ "TrackingNumber": "OUT-1", "...": "..." },\
{ "TrackingNumber": "OUT-2", "...": "..." },\
{ "TrackingNumber": "RET-1", "...": "..." },\
{ "TrackingNumber": "RET-2", "...": "..." }\
]
}
Outbound-only:
{
"Parcels": [ { "TrackingNumber": "OUT-1", "...": "..." } ]
}
Edit
Attributes
This method gives the possibility to modify a previously created shipment. The method structure is the same of the Ship API method, but the OrderID parameter must match with an existing ShippyPro order ID.
π‘ This Method gives you the ability to:
modify or correct an error in any shipment.
get a new corrected shipment label.
π Please note that every time you modify a shipment a new label will be generated.
π This method works fine together with Order Error Webhook, that enables to get each error shipments in realtime.
The body of this request has the following attributes:
Edit - Partial
Attributes
This method gives the possibility to modify a previously created shipment like the normal Edit call but only for specific fields. In this case a new label won't be generated
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderID |
string | true | false | The Order number got from the previously called Ship API | |
PartialEdit |
boolean | true | false | Required to do a Partial Edit | |
Attributes |
Object | false | false | Optional Parcel Attributes can contains custom multi key/value |
GetRates
Attributes
This method retrieves the Carrier rates for a specific shipment for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Retrieving all your Carriers' Rates in real time.
Compare your carrier rates to choose the best options during order fulfillment.
Improve conversion rate showing live rates at your checkout
Apply a markup on top of your shipment costs.
Applying Shipping Rules
If you want to apply the Shipping rules in the GetRates you should:
Select the API folders as a specific source in the Shipping rule
Perform the PutOrder call adding the "APIOrdersID" that you can find in the Marketplace section
Perform the GetRates call entering the "TransactionID" obtained with the PutOrder
How to test For testing purposes, you can use the ShippyPro Generic carrier for generating test rates. See here if you need help configuring ShippyPro Generic Carrier.
π You can also add CarrierOptions attribute to get rates for specific carrier services.
π GetRates API will work according to the Shipping Rules applied. If your GetRates call returns no Rates and no errors for a specific shipment, make sure your Shipping Rules are correctly set up and not blocking those SKUs.
π Remember to value the TransactionID of the order in the API_GetRates in order to use the ShippingService rule, otherwise it will be skipped. If the field TransactionID is not populated, the filter for ShippingService can't be applied. Assigning a TransactionID value that does not match that of an order to ship will skip the application of the ShippingService filter.
π If your GetRates rates donβt match the rate shown in βTo Shipβ, make sure both GetRates and your My Profile > Preferences units of measure correspond!
π By referring the RateID from Shipping API call response you'll also be able to use our Invoice Analysis feature.
π You can filter this call for specific services by filling out the RateCarriers field with CarrierName and CarrierID, that you can retrieve from the APIKEYS ShippyPro page.
E.G RateCarriers: ["CarrierName|CarrierID", "CarrierName|CarrierID"]
The body of this request has the following attributes:
π You can also add CarrierOptions attribute (see Use Cases section).
β οΈ Note that the response attribute delivery_days could be both a number (e.g. 2) or a string (e.g. "2-5").
β οΈ In the GetRates response, you may find a section labeled RatesErrors that includes the field error_level. The values that could be displayed are the following:
0: Error (the rate could not be pulled for a Carrier Error);1: Warning (the rate pulling was stopped because of a fixable error coming from ShippyPro, like βno zones matching shipment infoβ or βcarrier/shipping rule excluded this rateβ);
GetTracking
Attributes
This method retrieves the shipment tracking status for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Retrieving shipment tracking status.
Show the shipment status in your website or OMS.
Get all the shipment status information as Estimated Delivery Date and the carrier logo.
β οΈ This method is not recommended for bulk usage. To receive all the trackings updates please setup a Webhook instead.
Order tracking statuses
To simplify your work, we associated each carrier tracking statuses with this simple ShippyPro six statuses:
Order tracking statuses
| Status Code | Description |
|---|---|
1 |
Info Received |
2 |
In Transit |
3 |
Out for Delivery |
4 |
Missed Delivery |
5 |
Exception |
6 |
Delivered |
Extended Tracking Statuses
Every tracking update is additionally mapped to an ExtendedStatusCode, representing a more granular status.
Extended Tracking Statuses
| Extended Status Code | Description |
|---|---|
1000 |
Info Received |
2000 |
In transit |
2100 |
Dropped by customer |
2200 |
Collected by carrier |
2300 |
Carrier handling |
2310 |
Arrived at terminal/hub |
2320 |
Processing at terminal/hub |
2330 |
Departed from terminal/hub |
2400 |
Customs Clearance |
2500 |
Delivery planned |
3000 |
Out for Delivery |
3100 |
Delivery in progress |
3200 |
Available for pickup at PUDO/Facility |
4000 |
Failed Attempt |
5000 |
Generic Exception |
5100 |
Transit Disruptions |
5110 |
Delayed |
5120 |
External causes |
5200 |
Operational Issues |
5210 |
Misrouted |
5220 |
Pickup not possible |
5230 |
On Hold |
5300 |
Parcel Exception |
5310 |
Exceeded dimensions or weight |
5320 |
Damaged |
5330 |
Lost |
5340 |
Destroyed |
5400 |
Address Discrepancies |
5410 |
Insufficient address information |
5420 |
Wrong address information |
5500 |
Customs and Documentation |
5510 |
Customs-related issues |
5520 |
Missing documents |
5600 |
Sender/Recipient-Related Events |
5610 |
Recipient exception |
5620 |
Sender exception |
5630 |
Returning to sender |
5700 |
Carrier Actions |
5710 |
Carrier asks to be contacted |
5720 |
Change to delivery |
5730 |
Other Carrier Exception |
6000 |
Delivered |
6900 |
Manually Marked as Delivered |
9999 |
Not mapped |
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
code |
string | true | false | Tracking Number |
Addresses
CheckAddress
Attributes
This method allows you to check and validate shipping addresses for 240+ countries with just one call for all your Carriers. Since address structure varies from country to country in the response you'll find an accuracy indicator based on the level of accuracy of the result.
π‘ Checking shipment addresses allows you to reduce:
errors during the shipment process and save operations time;
shipment exceptions and give your customers the best shipping experience;
Carrier shipment stock cost, in case of undeliverable addresses.
How the validation works
The CheckAddress API takes the advantage to provide a Carrier Side and GeoCoding address validations.
If the carrier you are requesting to validate address supports address validation, the validation takes benefit of carrier validation, otherwise, a geocoding validation will take place. The carriers that support carrier side address validation are GLS Italy and TNT Italy. For every other carrier a GeoCoding validation takes place.
In both cases, the validation provides an accuracy score to let you understand how the address returned is accurate.
You can skip the carrier address validation setting Generic as carrier parameters. See here if you need help configuring ShippyPro Generic Carrier.
For each validated address you can get the following items in response:
Address Validation Messages
They can be returned (if present) from the API carrier's response, and from GeoCoding.
Address Suggestions
They can be returned (if present) only from the API carrier's response, not from GeoCoding.
New Address
It is composed by replacing the fields reported as incorrect in the initial address, with the new values suggested.
Accuracy
It is a parameter calculated from CheckAddress API that is based on Geocoding. It represents the accuracy of the address, and can assume these values:
| Accuracy | Description |
|---|---|
95 |
Maximum address accuracy |
75 |
Good address accuracy |
60 |
Medium address accuracy |
40 |
Approximate address accuracy |
Verified
A boolean flag, returned by the GeoCoding validation, telling you whether the address was confirmed to an exact location. It is true only when GeoCoding resolves the address to a precise, rooftop-level match.
When Verified is false, ShippyPro found nothing wrong with the address but could not confirm the exact location (the match was interpolated or approximate). The address is accepted as-is, but you should double-check it before shipping. In this case address corrections (Message entries such as "Wrong city"/"Wrong zip" and the corresponding NewAddress fields) are not applied, because approximate matches can incorrectly point to a neighbouring city/area. Corrections are only suggested when the match is verified.
Verified is present only when the GeoCoding validation was actually performed.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
CarrierName |
string | true | false | Selected rate Carrier Name | |
CarrierID |
int | true | false | Selected rate CarrierID | |
Address |
Array | true | false | Recipient address information | |
street1 |
string | true | false | Recipient Street1 | Depends on the specific carrier |
street2 |
string | true | true | Recipient Street2 | Depends on the specific carrier |
city |
string | true | false | Recipient city | |
state |
string | false | true | Recipient state | |
zip |
string | true | false | Recipient zip code | Depends on the country |
country |
string | true | false | Recipient country (ISO 3166) | 2 chars |
FromAddress |
Array | true | false | Sender address information | |
country |
string | true | false | Sender country (ISO 3166) | 2 chars |
SkipValidationFields |
Array | false | false | Contains attributes that won't be validated |
IsResidentialAddress
Attributes
This method is used to classify if the addresses provided are residential.
With the ShippyPro IsResidentialAddress API, you can automatically check if a shipping addresses is a residential address.
π‘Checking residential addresses allows you:
to know if a delivery address is a home;
reduce possible frauds and and parallel import of your products.
How it works
The IsResidentialAddress API provides enable you to verify if an address is residential (a home) or not. To avoid issues with the verification you should use a validated and well formed address. Please check CheckAddress API method to understand how to get validate a validated address.
IsResidentialAddress method response returns two parameters:
Result
OK if the call was successful, or NOK if the call was unsuccessful.
IsResidentialAddress
A boolean value that represents if the address is residential (true) or not (false).
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
Address |
Array | true | false | Recipient address information | |
company |
string | true β οΈ | true | Recipient company name. β οΈ (if name is empty) | 255 chars |
name |
string | true β οΈ | true | Recipient name. β οΈ (if company is empty) | 255 chars |
street1 |
string | true | false | Recipient Street1 | Depends on the specific carrier |
street2 |
string | true | true | Recipient Street2 | Depends on the specific carrier |
city |
string | true | false | Recipient city | |
state |
string | false | true | Recipient state | |
zip |
string | true | false | Recipient zip code | Depends on the country |
country |
string | true | false | Recipient country (ISO 3166) | 2 chars |
Pickup
BookPickup
Attributes
This method allows you to book a Pick-Up for all supported carriers with the same API call.
π‘ This Method gives you the ability to:
Optimize your operations and fulfillment process booking the pick up at your time convenience.
Speed-up carrier pick-ups.
π Dimension units are set to KG and CM.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
to_address |
Array | true | false | Recipient address information | |
from_address |
Array | true | false | Sender address information | |
name |
string | true | false | Sender name | |
company |
string | true | true | Sender company | |
street1 |
string | true | false | Sender street1 | Depends on the specific carrier |
street2 |
string | true | true | Sender street2 | Depends on the specific carrier |
city |
string | true | false | Sender city | |
state |
string | true | true | Sender state | |
zip |
string | true | false | Sender zip code | Depends on the country |
country |
string | true | false | Sender country (ISO 3166) | 2 chars |
phone |
string | true | false | Sender Phone | Country specific phone length |
email |
string | false | false | Sender Email | 64 chars |
parcels |
Array | true | false | Parcels information (Minimum 1) | 4 objects each |
dimension_unit |
string | false | false | Parcel dimension unit. Default value CM. Accepted values: CM, IN. |
|
length |
float | true | false | Parcel Length | |
width |
float | true | false | Parcel width | |
height |
float | true | false | Parcel height | |
weight_unit |
string | false | false | Parcel weight unit. Default value KG. Accepted values: KG, LB, OZ, G. |
|
weight |
float | true | false | Parcel weight (kg) | 2 decimals |
CarrierName |
string | true | false | Carrier name | |
CarrierID |
int | true | false | Carrier ID | |
PickupTime |
int | true | false | Pickup time timestamp (e.g. 1657275360) | 10 digits |
PickupNote |
string | false | true | Pickup note | 255 chars |
PickupMorningMintime |
string | true | false | Minimum pickup time - morning (e.g. 09:00). 24 hours format | 5 chars |
PickupMorningMaxtime |
string | true | false | Maximum pickup time - morning (e.g. 13:00). 24 hours format | 5 chars |
PickupAfternoonMintime |
string | true | false | Minimum pickup time - afternoon (e.g. 14:00). 24 hours format | 5 chars |
PickupAfternoonMaxtime |
string | true | false | Maximum pickup time - afternoon (e.g. 18:00. 24 hours format) | 5 chars |
orderIds |
string | false | false | Orders id separated by a semicolon (e.g. 123;245) |
|
emailSubject |
string | false | false | Main part of the email subject (default 'Pickup Request') |
π For some Carriers orderIds is required!
GetPickups
Attributes
This method returns the list of scheduled pickups for all supported carriers with the same API call.
π‘ This Method gives you the ability to:
Optimize your operations and fulfillment process getting the scheduled pick up list.
Speed-up carrier pick-ups.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderID |
int | false | false | ShippyPro Order ID | |
ConfirmationID |
string | false | false | Confirmation ID (see response of BookPickup API) |
π If you do not set OrderID and PickupID this API will return all of your pickups scheduled.
CancelPickup
Attributes
This method allows you to cancel a scheduled pickup for all supported carriers with the same API call.
π‘ This Method gives you the ability to:
Optimize your operations and fulfillment process deleting a scheduled pick up.
Speed-up carrier pick-ups.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
CarrierName |
string | true | false | Pickup Carrier name | |
CarrierID |
int | true | false | Pickup Carrier ID | |
ConfirmationNumber |
string | true | false | Pickup confirmation number | |
PickupTime |
int | true | false | Pickup time timestamp (e.g. 1657275360) | 10 digits |
GetPickupAvailability
Attributes
This method allows you to retrieve Pick Up availability for all the supported carriers (FedEx and MyDHL are the only supported carriers right now) with a single API request.
π‘ This Method gives you the ability to:
Optimize your operations and fulfillment process choosing the pick-up ready time for a scheduled pick-up.
Speed up carrier pick-ups.
π Dimension units are set to KG and CM.
π You can filter this call for specific services by filling out the PickupCarriers field with CarrierName and CarrierID, which you can retrieve from the APIKEYS ShippyPro page.
E.G PickupCarriers: ["CarrierName|CarrierID", "CarrierName|CarrierID"]
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
to_address |
Array | true | false | Recipient address information | |
from_address |
Array | true | false | Sender address information | |
street1 |
string | true | false | Sender street1 | Depends on the specific carrier |
street2 |
string | true | true | Sender street2 | Depends on the specific carrier |
city |
string | true | false | Sender city | |
state |
string | true | true | Sender state | |
zip |
string | true | false | Sender zip code | Depends on the country |
country |
string | true | false | Sender country (ISO 3166) | 2 chars |
parcels |
Array | false | false | Parcels information (Minimum 1) | 4 objects each |
dimension_unit |
string | false | false | Parcel dimension unit. Default value CM. Accepted values: CM, IN. |
|
length |
float | true | false | Parcel Length | |
width |
float | true | false | Parcel width | |
height |
float | true | false | Parcel height | |
weight_unit |
string | false | false | Parcel weight unit. Default value KG. Accepted values: KG, LB, OZ, G. |
|
weight |
float | true | false | Parcel weight (kg) | 2 decimals |
PickupCarriers |
Array | false | false | Retrieve pick-up availability only for specific carriers ["FEDEX", β¦] | |
PickupTime |
int | true | false | Pickup time timestamp (e.g. 1657275360) | 10 digits |
PickupMorningMintime |
string | true | false | Minimum pickup time - morning (e.g. 09:00). 24 hours format | 5 chars |
PickupMorningMaxtime |
string | true | false | Maximum pickup time - morning (e.g. 13:00). 24 hours format | 5 chars |
PickupAfternoonMintime |
string | true | false | Minimum pickup time - afternoon (e.g. 14:00). 24 hours format | 5 chars |
PickupAfternoonMaxtime |
string | true | false | Maximum pickup time - afternoon (e.g. 18:00. 24 hours format) | 5 chars |
MaxBusinessDays |
int | false | false | Maximum number of business days to consider when checking. Default 1. |
Marketplaces
GetMarketplaces
Attributes
This method returns all the Marketplaces IDs already connected to your ShippyPro account.
π‘ This Method gives you the ability to:
Retrieve connected Marketplace list and their IDs and Labels.
Retrieve active or inactive Marketplaces.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
Active |
int | false | false | Search for active (1) or non-active (0) marketplaces |
Carriers
GetCarriers
Attributes
This method allows you to get the list of connected carriers and their details in your ShippyPro account.
π‘ This Method gives you the ability to:
Retrieve connected carrier list.
Get CarrierID and other carrier details to use in API calls.
Get Carrier shipment services.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
Active |
int | false | false | Search for active (1) or non-active (0) Carriers |
|
Credentials |
object | false | false | For retrieving Carriers credentials | |
YourCarrierName |
array | true | false | Array of credentials (string) you want to retrieve for YourCarrierName |
GetCarrierOptions
Attributes
This method allows you to get the available Carrier options for a specific Carrier.
π‘ This Method gives you the ability to:
Retrieve the available carrier options for a carrier.
Use the retrieved carrier options in other API calls.
For more information on how setup a Carrier options click here.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
CarrierName |
string | true | false | Carrier Name | |
CarrierID |
int | true | false | Carrier ID | |
to_address |
object | false | false | Optional, recipient address information | |
city |
string | false | false | Optional, recipient city | |
zip |
string | false | false | Optional, recipient zip | Depends on the country |
country |
string | false | false | Optional, recipient country (ISO 3166) | 2 chars |
π The recipient address is optional. Add it to also receive the carrier's Pick-Up & DropOff point options.
GetCarrierPackagesTypes
Attributes
This method allows you to get the available carrier packages types.
π‘ This Method gives you the ability to:
Retrieve carrier predefined package type list.
Use the retrieved carrier packages in other API calls.
The body of this request is empty.
Manifest
CreateManifest
Attributes
This method allows you to create a Manifest file for the specified Order numbers for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Create a Manifest file for your orders.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderIDS |
Array | true | false | ShippyPro Order IDs |
β οΈ Note that the response attribute ManifestURL could be both string (if there is only one Manifest) or an array (if there are more than one).
β οΈ If another CreateManifest call for the same account is already running, this call returns the error MANIFEST_IN_PROGRESS after waiting up to 15 seconds. It is safe to retry after a few seconds. Concurrent CreateManifest calls for the same account are serialized, so sending one call with all the order ids is faster than firing several in parallel.
GetManifest
Attributes
This method allows you to get an already created Manifest document for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Retrieve an already created manifest document
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
ManifestNumber |
string | true | false | Manifest number |
β οΈ Note that the response attribute ManifestURL could be both string (if there is only one Manifest) or an array (if there are more than one).
DeleteManifest
Attributes
This method allows you to delete an already generated Manifest document for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Delete an already created manifest document.
The body of this request has the following attributes:
CloseShipments
Attributes
This method allows you to manually transmit all your shipments to the Carriers and Close Work Day as required by some of them.
π‘ This Method gives you the ability to:
- Confirm and transmit your shipments to your carriers.them.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderIDS |
Array | false | false | ShippyPro Order IDs. If not present it will take all unclosed shipments | |
CarrierName |
string | true | false | Carrier Name |
Paperless
UploadPaperlessDocumentation
Attributes
Electronic Trade Documents (ETD) or Paperless customs is an automated international shipping solution that allows you to submit your customs documentation electronically so you no longer need to print and attach multiple copies to your shipments. Not all the carriers support paperless, please check here if your carrier support it.
π‘ This method gives you the ability to:
Upload custom documents for international shipments, you'll save both paper and time!
Automatically transmit custom documents as soon as your international shipping labels are created.
List of supported document types
| Value | Description |
|---|---|
0 |
Invoice (default) |
1 |
Air Waybill |
2 |
Proforma invoice |
3 |
Certificate of Origin |
4 |
Usmca Certificate of Origin |
5 |
Commercial invoice |
6 |
Customs declaration |
99 |
Other |
Useful tips
π You need to make ETD through UploadPaperlessDocumentation call before making Ship call (or before sending the order from ShippyPro), or the ETD won't be linked to Ship call: TransactionID, Name, Country fields must match (case sensitive).
π If you make a UploadPaperlessDocumentation API call with a TransactionID already present inside ShippyPro, it will be automatically be attached to your order if shipped within the next 24 hours.
π UploadPaperlessDocumentation API can be used only once. Edit method API call cannot be employed with this specific call. This means that if you need to apply some changes on a Paperless document already generated, you should make a new UploadPaperlessDocumentation API call as well as a new Ship related to this new one.
π On another hand, if you upload an X number of Paperless documents without any order inside To Ship section and then you create your shipments, all the ETDs from the last 24h will be attached.
π In case you upload two ETDs with the same TransactionID and then you create the shipment, only the most recent file will be attached.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
TransactionID |
string | true | false | Your internal reference order number | 255 chars |
Name |
string | true | false | Recipient name | |
Country |
string | true | false | Recipient Country ISO code (ISO 3166) | 2 chars |
Document |
string | true | false | PDF document base64 encoded file | |
DocumentType |
int | false | false | Document type (see the table below) |
DeletePaperlessDocumentation
Attributes
This method allows you to delete unused Electronic Trade Documents (ETD / Paperless customs) that you previously uploaded with UploadPaperlessDocumentation, selecting them by the TransactionID or the recipient Name you supplied at upload time.
π‘ This method gives you the ability to:
- Delete the unused paperless documents linked to a TransactionID or a recipient Name, optionally narrowing by DocumentType.
The supported DocumentType values are the same as for UploadPaperlessDocumentation.
Useful tips
π You must provide at least one of TransactionID or Name (you may provide both); if you provide neither, the call returns INVALID_INPUT_DATA. TransactionID matches documents uploaded for an order already present in ShippyPro. Name matches documents uploaded ahead of the order β these are stored without a TransactionID and are addressed by the recipient Name you sent at upload (case sensitive). Pass DocumentType to delete only documents of that type; omit it to delete every matching unused document.
π Only documents uploaded in the last 24 hours are eligible β the same window in which an uploaded ETD can still be attached to a shipment.
π Documents already used (attached to a shipped order) are never deleted: they are reported under Skipped. If every matching document is already used, the call returns the ETD_ALREADY_USED error.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
TransactionID |
string | false | false | Your internal reference order number used at upload. Required if Name is not provided. | 255 chars |
Name |
string | false | false | Recipient name used at upload. Required if TransactionID is not provided. | |
DocumentType |
int | false | false | Document type to narrow the deletion (same values as UploadPaperlessDocumentation) |
UploadPaperlessPostShip
Attributes
Electronic Trade Documents (ETD) or Paperless customs is an automated international shipping solution that allows you to submit your customs documentation electronically so you no longer need to print and attach multiple copies to your shipments.
π‘ This method gives you the ability to:
- Upload custom documents for international shipments after the shipping label has been generated.
List of supported document types
Useful tips
π You need to make the UploadPaperlessPostShip call after making the Ship call setting PostShipmentETD at True.
π UploadPaperlessPostShip API will immediately send the ETD documents to the carrier.
π You can upload multiple documents in the same UploadPaperlessPostShip call.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderID |
string | true | false | ShippyPro reference order number | |
Documents |
array | true | false | contains n objects, one for each document uploaded | |
Document |
string | true | false | PDF document base64 encoded file | |
DocumentType |
int | false | false | Document type (see the table below) |
CreateCrossBorderInvoice
Attributes
This method allows you to generate an invoice specifically designed for customs declaration and transmit it to the allowed carriers with just one request.
π‘ This Method gives you the ability to:
Generate Commercial or Proforma Invoice: This method enables the creation of a commercial or proforma invoice, which is required for cross-border shipments.
Transmit Paperless Invoice: You can transmit the invoice directly to the carrier as an Electronic Trade Document (ETD), making it a paperless transaction.
Useful tips
π To transmit the invoice to the carrier as a paperless document, ensure that the UploadETD parameter is set to True when making the API call.
π If the invoice needs to be created and transmitted to the carrier after the shipment is created, you should:
Make the Ship call to create the shipment, ensuring that the PostShipmentETD flag is set to True.
Call the CreateCrossBorderInvoice call
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
Incoterm |
string | true | false | The incoterm for the transaction | Depends on the specific incoterm |
TypeOfExport |
string | true | false | The type of export | Depends on the specific type |
Currency |
string | false | true | The currency used in the invoice | 3 characters |
NumberOfParcels |
string | false | true | The number of parcels involved in the shipment | |
OrderId |
string | true | false | The unique order ID | |
OrderReference |
string | false | true | The reference number for the order | |
TotalLineItems |
string | false | true | The total number of line items | |
TotalWeight |
string | false | true | The total weight of the shipment | |
TotalAmount |
number | false | true | The total amount of the invoice | |
TotalGst |
number | false | true | The total GST for the invoice | |
WeightUOM |
string | false | true | The unit of measure for weight. Default is "KG". | |
InvoiceType |
string | false | true | The type of invoice | Depends on the specific type |
UploadETD |
string | false | true | Upload the generated invoice direclty to the carrier of the indicated OrderId | |
DeclarationNotes |
string | false | true | Additional notes for the declaration | |
AirwaybillNumber |
string | false | true | The airway bill number for the shipment | |
CustomReference |
string | false | true | A custom reference for the invoice | |
InvoiceNumber |
string | true | false | The unique invoice number | |
CountryOfExportDestination |
string | false | true | The country of export destination | 2 characters (ISO 3166-1 alpha-2) |
DateOfExportation |
string | true | false | The date of exportation | ISO 8601 date format (YYYY-MM-DD) |
SignatureDate |
string | false | true | The date of signature | ISO 8601 date format (YYYY-MM-DD) |
ShipperExporter |
object | true | false | Details of the exporter | - |
ShipperExporter.Name |
string | true | false | Name of the exporter | |
ShipperExporter.Address |
string | true | false | Address of the exporter | |
ShipperExporter.Company |
string | false | true | Company name of the exporter | |
ShipperExporter.Zipcode |
string | true | false | Zip code of the exporter | |
ShipperExporter.City |
string | true | false | City of the exporter | |
ShipperExporter.Country |
string | true | false | Country of the exporter | 2 characters (ISO 3166-1 alpha-2) |
ShipperExporter.Telephone |
string | true | false | Telephone number of the exporter | |
ShipperExporter.VatNumber |
string | false | true | VAT number of the exporter | |
ShipperExporter.Eori |
string | false | true | EORI number of the exporter | |
ShipperExporter.CustomReference |
string | false | true | Custom reference for the exporter | |
Importer |
object | false | true | Details of the importer | - |
Importer.Name |
string | true | false | Name of the importer | |
Importer.Company |
string | false | true | Company name of the importer | |
Importer.Address |
string | true | false | Address of the importer | |
Importer.Zipcode |
string | true | false | Zip code of the importer | |
Importer.City |
string | true | false | City of the importer | |
Importer.Country |
string | true | false | Country of the importer | 2 characters (ISO 3166-1 alpha-2) |
Importer.Telephone |
string | true | false | Telephone number of the importer | |
Importer.VatNumber |
string | false | true | VAT number of the importer | |
Importer.Eori |
string | false | true | EORI number of the importer | |
Importer.CustomReference |
string | false | true | Custom reference for the importer | |
Consignee |
object | true | false | Details of the consignee | - |
Consignee.Name |
string | true | false | Name of the consignee | |
Consignee.Company |
string | false | true | Company name of the consignee | |
Consignee.Address |
string | true | false | Address of the consignee | |
Consignee.Zipcode |
string | true | false | Zip code of the consignee | |
Consignee.City |
string | true | false | City of the consignee | |
Consignee.Country |
string | true | false | Country of the consignee | 2 characters (ISO 3166-1 alpha-2) |
Consignee.Telephone |
string | true | false | Telephone number of the consignee | |
Consignee.VatNumber |
string | false | true | VAT number of the consignee | |
Consignee.Eori |
string | false | true | EORI number of the consignee | |
Consignee.CustomReference |
string | false | true | Custom reference for the consignee | |
Goods |
array | true | false | List of goods being exported | Minimum 1 item |
Goods[*].ParcelCount |
integer | true | false | The parcel number | - |
Goods[*].TypeOfPackaging |
integer | false | true | The type of packaging used | - |
Goods[*].Marks |
string | false | true | Marks or labels on the goods | - |
Goods[*].Description |
string | true | false | Description of the goods | - |
Goods[*].HsCode |
string | true | false | Harmonized System code | - |
Goods[*].CountryOfOrigin |
string | false | true | The country of origin of the goods | - |
Goods[*].Quantity |
integer | true | false | The quantity of the goods | - |
Goods[*].QuantityUOM |
string | false | true | Unit of measure for quantity. Default is "pcs" | |
Goods[*].Weight |
number | true | false | The weight of the goods | |
Goods[*].UnitValue |
number | true | false | Value per unit of the goods | |
Goods[*].GstPaid |
number | false | true | GST paid on the goods | |
Goods[*].SubTotalValue |
number | false | true | Subtotal value of the goods |
Orders
GetOrder
Attributes
This method retrieves order/shipment details for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Retrieve shipment labels
Retrieve order details as carrier name, tracking number and source store.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderID |
int | true | false | ShippyPro Order ID |
ArchiveOrders
Attributes
This method archives a shipped order for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Archive a shipped order.
Clean the ShippyPro shipped view from unnecessary orders.
The body of this request has the following attributes:
UpdateOrders
Attributes
This method allows you to send shipment info to the marketplaces and mark the order as shipped for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Send order shipment info to your marketplaces and mark the orders as shipped
Complete the marketplace orders fullfillment process.
The body of this request has the following attributes:
PutOrder
Attributes
This method allows you to create your Orders inside ShippyPro and then ship them.
π‘ This Method gives you the ability to:
- Import orders to be shipped inside ShippyPro
In order to upload orders, you must first configure a Marketplace in ShyppyPro, retrieve its ID from the marketplace page to then fill the APIOrdersID method request paramenter.
The body of this request has the following attributes:
VoidShipments
Attributes
This method allows you to void your previously generated shipment inside ShippyPro for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Void created shipments inside ShippyPro
This Method cancel an order inside ShippyPro. Please note that not all the carriers support to void a shipment, please check here if your carrier supports it.
π If you'd like to cancel a shipment for a Carrier which is not supporting void, you'll need to proceed directly from Carrier's website. This way it will be automatically removed from ShippyPro as well as from Carrier's server and, therefore, cancelled.
π In case you need to look for it in the future, you'll still be able to find it by entering the Order ID in ShippyPro Global Search feature.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderIDS |
Array | true | false | ShippyPro Order IDs | |
CarrierName |
string | true | false | Carrier name |
GetLabelUrl
Attributes
This method allows you to get the order labels and tracking data for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Retrieve order labels (URL and label raw data).
Retrieve Tracking Number, Tracking Status and Tracking Carrier.
β οΈ Note! The data type of the response attribute LabelURL could be both an array or a string.
it's an empty array if the order is in error,[].
it's a string if the order has one label, "label-url".
it's an array of strings if the order has more than one label, ["label-url-1", "label-url-2", ...].
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderID |
int | true | false | ShippyPro Order ID | |
LabelType |
string | false | false | Label type ("PDF" or "ZPL") - Use this field to request a specific label format (conversion will happen automatically) | |
LabelWidth |
float | false | false | Label width (cm, for PDF) |
|
LabelHeight |
float | false | false | Label height (cm, for PDF) |
|
Rotate |
int | false | false | Label rotation (in degrees, β οΈ only applicable when a conversion is needed) | |
PageNumber |
int | false | false | Index of the label you want to retrieve | |
SplitPages |
bool | false | false | Set TRUE if you want to split the labels |
GetPendingOrders
Attributes
This method allows you to get not yet shipped order list for 60+ marketplace with the same API call.
π‘ This Method gives you the ability to:
Retrieve all the orders not yet shipped.
Retrieve unshipped order details.
How to test
In order to test this method you need to connect at least a sales channel/marketplace.
If you are using API Orders as sales channel you need to retrieve API Orders ID and use it in the PutOrder call when you are putting the order.
The Excel Manual Shipments and Ship API Method, don't allows to import order details as put put order.
MarketPlace Order Item Attributes
For Shopify and Maxpho, the method can retrieve also order items attributes, if IncludeItemsAttributes is set to true.
Anyway for Magento orders an items mapping is needed in order to retrieve items attributes.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
DateMin |
int | false | false | Filter date from timestamp (e.g. 1657275360) | 10 digits |
DateMax |
int | false | false | Filter date to timestamp (e.g. 1657275360) | 10 digits |
TransactionID |
string | false | false | Your internal reference order number | 255 chars |
IncludeItemsAttributes |
boolean | false | false | If you want to include the item attributes | |
ExcludeReturns |
boolean | false | false | If you want to exclude the returns |
GetShippedOrders
Attributes
This method allows you to get shipped (label generated) order list for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Retrieve all the shipped orders.
Get shipped orders data.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
DateMin |
int | true | false | Filter date from timestamp (e.g. 1657275360) | 10 digits |
DateMax |
int | true | false | Filter date to timestamp (e.g. 1657275360) | 10 digits |
TransactionID |
string | false | false | Your internal reference order number | 255 chars |
CarrierName |
string | false | false | Order Carrier name | |
OrderStatus |
string | false | false | Order status | |
OrderIDS |
array | false | false | ShippyPro Order IDs |
DeletePendingOrder
Attributes
This method allows you to delete a not yet shipped order for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Delete an unshipped order.
β οΈ You have to set at least one markeplace ID to get its APIOrdersID to fill the request method parameter.
The result is OK if the call was successful, or NOK if the call was unsuccessful.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
APIOrdersID |
int | false | false | APIOrders Marketplace ID | |
TransactionID |
string | true | false | Your internal reference order number | 255 chars |
IsPendingOrder
Attributes
This method allows you to verify if an order not yet shipped for 170+ carriers with the same API call.
This method returns true if the order has not yet been shipped, or if it has been shipped but the shipment failed.
π‘ This Method gives you the ability to:
- Check if an order is shipped.
You can call the GetMarketPlaces API method to retrieve your connected Market Place names.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
MarketplacePlatform |
string | Order Marketplace platform | |||
TransactionID |
string | true | false | Your internal reference order number | 255 chars |
EditPendingOrders
Attributes
This method allows you to edit orders not shipped yet
π‘ This Method gives you the ability to:
- Update the carrier options for unshipped orders
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
Orders |
Array | true | false | Pending orders array information |
PutShippedOrder
Attributes
This method allows you to add external Orders already been shipped inside your ShippyPro profile. By doing so, you can use our Easy Return/Track and Trace features without generating the shipping labels via ShippyPro.
π‘ This Method gives you the ability to:
Add an already shipped order in ShyppyPro to benefit of post shipping ShippyPro features as tracking or returns.
Use our Easy Return/Track and Trace features without generating the shipping labels via ShippyPro.
Link the new order to an existing one in the to-ship section.
How to use
In order to import shipped order in ShippyPro with this method, you need to activate API-Folder and get its APIOrdersID. Follow this guide to actiate API-Folder in your ShippyPro account.
GetPOD
Attributes
This method allows you to get Proof Of Delivery for delivered shipments for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Get the carrier shipment proof of delivery document.
Certify to your customers that the shipment has been delivered.
Resolve customers claims or inquiries.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderID |
string | true | false | ShippyPro Order ID |
GetPODDocument
Attributes
This method allows you to get a PDF document that includes the carrier Proof Of Delivery together with the related shipment details (such as tracking number, delivery date and carrier) for delivered shipments for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Get a single PDF document containing both the carrier proof of delivery and the shipment details.
π The Result field reports whether the document includes the proof of delivery signature:
OK: the document was generated with the POD signature.PARTIAL_OK: the document was generated without a POD signature (the carrier did not provide one).
GetDetailedPricing
Attributes
This method allows you to get detailed estimated pricing calculated of one order for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Get detailed pricing for an existing order.
π The method is only available for carriers without live rates and does requires:
That the zones and the pricing information should be configured in the ShippyPro account;
A GetRates API call before to get pricing information (see below);
GetRates information should be passed in the ship call to create the order, get the order id, and call the GetDetailedPricing.
Price Information from GetRates to be passed in the Ship call
"zone_name": "Italy",
"weight_range": "0-500",
"detailed_pricing": [\
{\
"type": "tariff",\
"price": 10,\
"desc": "Tariff"\
}\
]
CreateInvoice
Attributes
This method allows you to generate and get Order summary or invoice for one or more Orders for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Generate Order summary or invoice.
π Each Order to include must be a different object in the "Documents" array.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
DocumentType |
string | true | false | Specify "invoice" of "order_summary" | |
Prefix |
string | false | false | The Prefix of the Document Name | |
ProgressiveNumber |
int | false | false | The Progressive Number from which the documents' numeration starts (default: 0) | |
ShowLogo |
bool | false | false | Set TRUE if the company logo must be displayed in the invoice (default: false) |
|
IncludeShippingCost |
bool | true | false | Set TRUE if the shipping cost must be included in the invoice |
|
VAT |
int | false | false | Vat percentage (default: 0) | |
UploadETD |
int | false | false | Upload the document as Electronic Trade Document (default: false) | |
Documents |
Array | true | false | Array containing the documents' details | |
VatNumber |
string | false | false | Customer's VAT number | |
AdditionalTaxID |
string | false | false | Customer's additional tax id | |
AdditionalDescription |
string | false | false | Document additional description | |
FooterDescription |
string | false | false | Document footer description | |
OrderID |
int | false | false | ShippyPro Order ID | |
TransactionID |
string | true | false | Your internal reference order number | 255 chars |
MarketplacePlatform |
string | true | false | Marketplace platform | |
MarketplaceID |
string | true | false | Marketplace ID | |
Currency |
string | true | false | Document currency | |
Date |
int | true | false | Date timestamp (e.g. 1657275360) | Max integer length (10 digits) |
MarkOrdersAsPrinted
Attributes
This method allows you to mark orders as printed for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Mark orders as printed so that the registration date and time values are calculated.
Mark orders as printed and processable from your cronjob.
π Printing labels using API integration does not permit to know if an order has been really printed on by your printers. So, if you use cronjobs that acts on printed orders, eg. Archive Orders or Updated Orders, you need to mark them as printed, to make them processable by cronjobs. Anyway cronjobs will process orders marked as printed based on their own schedule that you specify in ShippyPro cronjob section. If you need more info on how cronjob works, please check our cronjob help guide.
GetShipmentsReport
Attributes
This method allows you to get the list of shipments (and returns) in the specified timeframe for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Get the list of shipments and returns in the specified timeframe.
Generate shipments and returns report on demand.
The return field is true for returns shipments generated manually, via the Easy Return module and through the Return Label Combination. This endpoint does not include returns generated via Return Label in the Box.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
DateMin |
int | true | false | Filter date from timestamp (e.g. 1657275360) | 10 digits |
DateMax |
int | true | false | Filter date to timestamp (e.g. 1657275360) | 10 digits |
Return |
bool | false | false | Set TRUE to view return shipments |
|
IncludeItems |
bool | false | false | Set TRUE to include items in the response |
|
ShowHiddenShipments |
bool | false | false | Set TRUE to include deleted orders |
GetReturnsReport
Attributes
This method allows you to get the list of returns in the specified timeframe for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Get a list of returns.
Generate returns report on demand.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
DateMin |
int | true | false | Filter date from timestamp (e.g. 1657275360) | 10 digits |
DateMax |
int | true | false | Filter date to timestamp (e.g. 1657275360) | 10 digits |
CreateMasterShipment
Attributes
This method allows you to obtain a new Master Shipment Identifier in order to initialize a Bulk Shipping request with a carrier that supports it.
π‘ This Method gives you the ability to:
Obtain a new Master Shipment Identifier.
Pass the Master Shipment Identifier as Carrier Option with a Ship request.
π A Master Shipment Identifier (MasterShipmentID) can be obtained through API CreateMasterShipment solely by passing a Carrier that actively supports Bulk Shipping. Bulk Shipping allows customers to consolidate multiple shipments with different destinations, typically within the same country, but handled by the courier at a common sorting center, and therefore sharing the same intermediate stop. Orders are first dispatched to an import center as a whole, and later delivered to their individual final destinations.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
CarrierID |
int | true | false | Carrier ID | |
CarrierName |
string | true | false | Carrier Name |
CloseMasterShipment
Attributes
This method allows for the closure of a Bulk Shipping stream. Bulk Shipping is available only for a small selection of couriers. The Bulk Shipping process begins with a request to the CreateMasterShipment endpoint, which returns a Master Shipment ID. This ID is used for all subsequent Ship calls using a dedicated carrier option. Upon completion of the shipments, the Bulk Shipping stream must be formally closed through a call to the CloseMasterShipment endpoint, which handles the finalization and grouping of the previous shipments according to the specifications of the individual courier used.
π‘ This Method gives you the ability to:
Group all previous Bulk Shipping shipments.
Finalize the process and inform the courier that the shipment is ready for pickup
π This API method is heavily based on API Ship, thus it shares almost the same request parameters list. There are minor differences that should be accounted for. Please refer to the table below and API Ship documentation.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
masterShipmentId |
string | true | false | Master Shipment ID | |
Parcels |
array | false | false | Array of Parcels, optional |
π This list solely highlights differences between API CloseMasterShipment and Ship. Every other parameter available with Ship can also be used with this method.
Printing
GetPrinters
Attributes
This method allows you to get the list of connected printer in your shippypro account.
π‘ This Method gives you the ability to:
Get the list of the all ShippyPro connected printer.
Get the list of connected printer to a specific computer.
Find a printer to print a label with.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
ComputerHostname |
string | false | false | Search printers by computer name |
PrintOrder
Attributes
This method allows you to print Orders labels with to ShippyPro printer for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
- Print orders labels with a ShippyPro connected printer.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
OrderID |
string | true | false | ShippyPro Order ID | |
Force |
bool | false | false | Force the printing even if the Order was already printed (default: false) |
|
PrinterID |
string | false | false | If present print on a specific printer ID, otherwise use the associations configured inside the panel |
PrintOrderBySKU
Attributes
This method allows you to print Orders labels specifying an item SKU with a ShippyPro printer for 170+ carriers with the same API call.
π‘ This Method gives you the ability to:
Print orders labels with a ShippyPro connected printer saerching for an item SKU in your orders.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
SKU |
string | true | false | Scanned item SKU | |
PickingListID |
int | true | false | The Picking List number | |
Force |
bool | false | false | Force the printing even if the order was already printed (default: false) |
|
PrinterID |
string | false | false | If present print on a specific printer ID, otherwise use the associations configured inside the panel |
Dropoff Points
GetDropOffPoints
Attributes
This method allows you to get all the nearest Pick-Up & DropOff (PUDO) points for all supported carriers with the same API call.
π‘ This Method gives you the ability to:
Offer to your customers Pick-Up & DropOff (PUDO) points option as delivery method, showing Pick-Up & DropOff (PUDO) points for all your carriers at checkout on a customizable map.
Offer PUDOs as a Return Option.
Delight your customers offering experiences offering a next level shipping experience and reducing CO2 emissions.
Increase store conversion rate giving ability to display a map to customers where to choose nearest Pick-Up & DropOff (PUDO) points.
Reduce shipment costs of undeliverable shipments.
Response behavior:
Result:OKwhen all carriers returned successfully.PARTIAL_OKwhen some carriers failed (seeWarnings).NOKon request-level errors (e.g. missing required parameters).Warnings: (optional) Present only whenResultisPARTIAL_OK. An object keyed by carrier name with the valueservice_unavailable, indicating our service could not fetch drop-off points for that carrier. The carrier will be absent fromPoints. If a carrier legitimately has no nearby points, it will appear inPointswith an empty array and no warning.
The body of this request has the following attributes:
Note: You must provide eithercity/zip/country orlat/lng to specify the location. Both sets are individually optional, but at least one complete set must be provided.
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
city |
string | false | false | Recipient city. Required if lat and lng are not provided |
|
zip |
string | false | false | Recipient zip code. Required if lat and lng are not provided |
Depends on the country |
country |
string | false | false | Recipient country. Required if lat and lng are not provided |
|
couriers |
array | false | true | Carriers to display | |
limit |
int | false | false | Set the maximum numbers of drop-off points up to 50 (default 20) | |
range |
int | false | false | Define range search area in km | (min: 1, max: 20) |
lat |
float | false | false | Latitude. Can be used with lng as an alternative to city/zip/country |
|
lng |
float | false | false | Longitude. Can be used with lat as an alternative to city/zip/country |
GetDropOffInfo
Attributes
This method allows you to obtain detailed information about a Pick-Up & DropOff (PUDO) point, starting from its pointId.
π‘ This Method gives you the ability to:
Offer PUDOs as a Return Option.
Delight your customers and optimize the delivery, offering more information about PUDO points, as operating hours and contacts.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
PointId |
string | true | false | Point Id to be searched | |
CarrierName |
string | true | false | The carrier name that the point belongs to | |
Country |
string | false | false | Point country | |
CarrierId |
int | false | false | The carrier Id that needs to be used to search for the point |
Whitelabels
GetLoginToken
Attributes
This method returns the access token to our platform for one user.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
username |
string | true | false | Username used for login | |
password |
string | true | false | Password used for login |
RegisterNewUser
Attributes
This method registers a new user on our platform.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
customer_name |
string | true | false | Client's name | |
customer_surname |
string | true | false | Client's surname | |
customer_email |
string | true | false | Client's email | |
customer_company |
string | true | false | Client's company | |
customer_phone |
string | true | false | Client's phone | |
customer_street |
string | true | false | Client's street | |
customer_housenr |
string | true | false | Client's house number | |
customer_zip |
string | true | false | Client's zip code | |
customer_city |
string | true | false | Client's city | |
customer_country |
string | true | false | Client's country (ISO 3166) | |
customer_vatno |
string | true | false | Client's VAT number | |
customer_state |
string | true | false | Client's state | |
customer_otherfiscalid |
string | true | false | Client's fiscal code | |
customer_invoice_name |
string | true | true | Customer name for the invoice | |
customer_invoice_surname |
string | true | true | Customer surname for the invoice | |
customer_invoice_email |
string | true | true | Customer email for the invoice | |
customer_invoice_company |
string | true | true | Customer company for the invoice | |
customer_invoice_phone |
string | true | true | Customer phone for the invoice | |
customer_invoice_street |
string | true | true | Customer street for the invoice | |
customer_invoice_housenr |
string | true | true | Customer house number for the invoice | |
customer_invoice_zip |
string | true | true | Customer zip for the invoice | |
customer_invoice_city |
string | true | true | Customer city for the invoice | |
customer_invoice_country |
string | true | true | Customer country for the invoice | |
customer_invoice_vatno |
string | true | true | Customer VAT number for the invoice | |
customer_invoice_state |
string | true | true | Customer state for the invoice | |
customer_invoice_otherfiscalid |
string | true | true | Customer fiscal code for the invoice | |
customer_avatar_url |
string | true | true | Client's avatar url | |
customer_whitelabel_clientref |
string | true | true | Client's reference | |
customer_whitelabel_paywithcredits |
int | true | true | Indicate if the customer pays the shipments with credits | |
customer_show_net_rates |
int | true | true | Show the tariffs with VAT or not | |
wholesaler |
bool | true | true | Indicate if the customer is wholesaler | |
eori |
string | true | true | Client's EORI | |
ioss |
string | true | true | Client's IOSS | |
create_apiorders |
int | true | true | Indicate if the APIOrders marketplace will be automatically connected | |
create_apikey |
bool | true | true | Indicate if the API Keys will be generated |
BlockUser
Attributes
This method allows you to block a User.
π‘ This Method gives you the ability to:
- Block a User.
The body of this request has the following attributes:
| Name | Data Type | Required | Empty | Description | Max length |
|---|---|---|---|---|---|
customer_email |
string | true | false | Customer Email | |
message |
string | false | true | Message |
UnblockUser
Attributes
This method allows you to unblock a User.
π‘ This Method gives you the ability to:
- Unblock a User.
The body of this request has the following attributes:
GetCustomers
Attributes
This method returns the customer list
Webhooks
ShippyPro uses webhooks to notify your application when an event happens in your account. Webhooks are particularly useful for asynchronous events like when a carrier confirms a label creation, a shipment tracking or an error.
How ShippyPro uses webhooks
A webhook enables ShippyPro to push real-time notifications to your app. ShippyPro uses HTTPS to send these notifications to your app as a JSON payload. You can then use these notifications to execute actions in your e-commerce store, applications or backend systems.
How to connect webhooks For more informations on how to connect ShippyPro webhooks please check our help article here.
Tracking Update
This webhook gives you the ability send real time shipments tracking event to your store for 170+ carriers with the same webhook. Your store must support webhook in order to get the tracking updates.
π‘ This webhook gives you the ability to:
Delight your customers with realtime shipment tracking events.
Reducing customer center enquiries/cost, increase CSAT and increase delivery success rate.
Reducing on hold shipment costs, your customer will be always updated about shipments status.
The body that you will receive at your endpoint will be the following:
| Name | Data Type | Description | Max length | Schema |
|---|---|---|---|---|
Event |
string | Event name: TRACKING_UPDATE |
Webhook events |
|
tracking |
string | Tracking number | ||
date |
int | Date of the event - timestamp (e.g. 1657275360) | Max integer length (10 digits) | |
message |
string | Event description | ||
city |
string | City where the event happened | ||
est_delivery_date |
string | Estimated delivery date (please read below) - timestamp (e.g. "1657275360") | Max string length (10 digits) | |
first_status_date |
string | First event status date date - timestamp (e.g. "1657275360") | Max string length (10 digits) | |
late |
string | If the value is 1 means that the shipment is late | ||
code |
int | The event category (see below) | ||
extendedCode |
string null | New tracking code | ||
OrderID |
string | ShippyPro Order ID | ||
TransactionID |
string | Your internal reference order number | 255 chars | |
TrackingCarrier |
string | Carrier name | ||
TrackingCarrierID |
string | Carrier ID | ||
MarketplaceID |
string | Marketplace ID | ||
MarketplacePlatform |
string | Marketplace name | ||
IsReturn |
boolean | Set TRUE if the order is a return. |
||
ReturnType |
string | The return type (i.e. manual_return, return_label_combination, easy_return or null if the order is not a return) | ||
ExternalLink |
string | Carrier tracking link |
Estimated Delivery Date
The estimated dalivery date is returned only for carriers that supports Live Rates. To know which carrier support Live Rates and then the Estimated Delivery Date please check out carrier comparison map here.
Anyway, ShippyPro gives you the ability to manually set the delivery time for carriers that do not support live rates in the Carrier Connection Price page. If these values are set, ShyppyPro will calculate the Estimated Delivery Date, and if values are not set, the Estimated Delivery Date will be returned as 0. For more information on how to manually set Delivery Time, please check here.
Tracking Code Values
To simplify your work, we associated each carrier tracking statuses with these simple ShippyPro six shipments statuses. These are the possible ShippyPro tracking code values.
| Code | Description |
|---|---|
0 |
Order In Preparation |
1 |
Info Received |
2 |
In Transit |
3 |
Out for Delivery |
4 |
Missed Delivery |
5 |
Exception |
6 |
Delivered |
Extended Tracking Statuses
Every tracking update is additionally mapped to an extendedCode, representing a more granular status.
Extended Tracking Statuses
| Extended Code | Description |
|---|---|
1000 |
Info Received |
2000 |
In transit |
2100 |
Dropped by customer |
2200 |
Collected by carrier |
2300 |
Carrier handling |
2310 |
Arrived at terminal/hub |
2320 |
Processing at terminal/hub |
2330 |
Departed from terminal/hub |
2400 |
Customs Clearance |
2500 |
Delivery planned |
3000 |
Out for Delivery |
3100 |
Delivery in progress |
3200 |
Available for pickup at PUDO/Facility |
4000 |
Failed Attempt |
5000 |
Generic Exception |
5100 |
Transit Disruptions |
5110 |
Delayed |
5120 |
External causes |
5200 |
Operational Issues |
5210 |
Misrouted |
5220 |
Pickup not possible |
5230 |
On Hold |
5300 |
Parcel Exception |
5310 |
Exceeded dimensions or weight |
5320 |
Damaged |
5330 |
Lost |
5340 |
Destroyed |
5400 |
Address Discrepancies |
5410 |
Insufficient address information |
5420 |
Wrong address information |
5500 |
Customs and Documentation |
5510 |
Customs-related issues |
5520 |
Missing documents |
5600 |
Sender/Recipient-Related Events |
5610 |
Recipient exception |
5620 |
Sender exception |
5630 |
Returning to sender |
5700 |
Carrier Actions |
5710 |
Carrier asks to be contacted |
5720 |
Change to delivery |
5730 |
Other Carrier Exception |
6000 |
Delivered |
6900 |
Manually Marked as Delivered |
9999 |
Not mapped |
Custom Attributes
π In the table below you can find all webhook custom attributes, that enables to improve your customer shipping experience.
| Name | Data Type | Description | Max length |
|---|---|---|---|
IsReturning |
boolean | Set TRUE only if the order receives a delivery exception and will be returned to sender. |
|
ReturnTrackingNumber |
string | The return tracking number of return label in the box shipment. | |
AtPudo |
boolean | Set TRUE if the order is at PUDO. |
|
PudoID |
string | PUDO point identifier. | |
Category |
string | In case of tracking exception identify the excpetion category. | |
Attributes |
string | If defined in the orders contains the order attributes values. |
Example
{
"Event": "TRACKING_UPDATE",
"tracking" : "1ZA103756899507566",
"date": 1489659960,
"message": "DELIVERED",
"city": "MOTRIL",
"est_delivery_date": "1489659960",
"first_status_date": "1489646578",
"late": "0",
"code": 6,
"OrderID": "191252",
"TransactionID": "ORDER2365",
"TrackingCarrier": "UPS",
"TrackingCarrierID": "123",
"MarketplaceID": "123",
"MarketplacePlatform": "Amazon",
"IsReturn": false,
"ReturnType": null,
"ExternalLink": "https://www.carrierwebsite.com/tracking/123"
}
Update Frequency
In order to have a regular tracking status update on shipments, ShippyPro needs to inquiry carriers' APIs periodically. The update frequency is different for each carrier and optimized to have tracking data as much updated as possible, without exceeding carrierβs API throttling limits. Hence you may receive webhooks with a certain delay on the carrier tracking event and, in case multiple events happen within the same updating timeframe, only the latest will be notified via webhook.
Order Shipped
This webhook gives you the ability send real time shipments and label creation event including return shipments, to your system for 170+ carriers with the same webhook. Your system must support webhook in order to get the order shipped events.
π‘ This Method gives you the ability to:
Inform and delight your customers with realtime labels creation and shipments confirmation events including returns.
Reducing customer center enquiries/cost, increase CSAT and increase delivery success rate.
Trigger an update to your system when an order is shipped or returned with its generated label.
The body that you will receive at your endpoint will be the following:
| Name | Data Type | Description | Max length | Schema |
|---|---|---|---|---|
Event |
string | Event name: ORDER_SHIPPED |
Webhook events |
|
LabelURL |
Array | Array containing labels URLs | ||
OrderID |
string | ShippyPro Order ID | ||
TransactionID |
string | Your internal reference order number | 255 chars | |
CarrierID |
int | Carrier ID | ||
TrackingCarrier |
string | Tracking Carrier | ||
TrackingNumber |
string | Tracking number | ||
MarketplaceID |
string | Marketplace ID | ||
MarketplacePlatform |
string | Marketplace name | ||
IsReturn |
boolean | Set TRUE if the order is a return. For return label in the box shipments parameter is sent as false. |
||
ReturnType |
string | The return type (i.e. manual_return, return_label_combination, easy_return or null if the order is not a return) |
Custom Attributes
| Name | Data Type | Description | Max length |
|---|---|---|---|
ReturnTrackingNumber |
string | The return tracking number of return label in the box shipment | |
Attributes |
string | The custom order attributes |
Example
{
"Event": "ORDER_SHIPPED",
"LabelURL": ["https://www.shippypro.com/ldv/ldv-1.pdf", "https://www.shippypro.com/ldv/ldv-1.pdf"],
"OrderID": "191252",
"TransactionID": "ORDER2365",
"CarrierID": 50,
"TrackingCarrier": "UPS",
"TrackingNumber": "1ZA103756899507566",
"MarketplaceID": "123",
"MarketplacePlatform": "Amazon",
"IsReturn": false,
"ReturnType": null
}
Order Error
This webhook gives you the ability send real time order error events and message to your store for 170+ carriers with the same webhook. Your store must support webhook in order to get the tracking updates.
π‘ This Method gives you the ability to:
Inform your team with realtime label creation and shipment error events.
Improve and speedup order problem solving activities.
Reducing customer center enquiries/cost, increase CSAT and increase delivery success rate.
Trigger an update to your system when an order shipment error occur.
The body that you will receive at your endpoint will be the following:
| Name | Data Type | Description | Max length | Schema |
|---|---|---|---|---|
Event |
string | Event name: ORDER_ERROR |
Webhook events |
|
OrderID |
string | ShippyPro Order ID | ||
TransactionID |
string | Your internal reference order number | 255 chars | |
ErrorMessage |
string | Error message description | ||
ErrorType |
object | Type of error if the order was not successful | ||
code |
string | Code of the error type | ||
name |
string | Name of the error type | ||
description |
string | Description of the error type | ||
ErrorSuggestion |
object | Description and potential solution for the occurred error | ||
Description |
string | Description of the order error returned | ||
Solution |
string | Proposed solution to potentially fix the error | ||
Links |
array | URLs pointing at the relevant documentation |
{
"Event": "ORDER_ERROR",
"OrderID": "191252",
"TransactionID": "ORDER2365",
"ErrorMessage": "Street too long",
"ErrorType": {
"code": "INVALID_ADDRESS",
"name": "Invalid Address",
"typeDescription": "One or more fields of the destination address (Zip code, city, address, state, province) are invalid or missing."
},
"ErrorSuggestion": {
"errorDescription": "Check the address and try again",
"solution": "Check the address and try again",
"links": [\
"https://www.example.com"\
]
}
}
Return Label in the Box Tracking Update
This webhook gives you the ability receive real time tracking events for the Return Label in the Box process to your store for 170+ carriers with the same webhook. Your store must support webhook in order to get the tracking updates.
The body that you will receive at your endpoint will be the following:
| Name | Data Type | Description | Max length | Schema |
|---|---|---|---|---|
Event |
string | Event name: RETURN_LABEL_IN_THE_BOX_TRACKING_UPDATE |
Webhook events |
|
tracking |
string | Tracking number | ||
date |
int | Date of the event - timestamp (e.g. 1657275360) | Max integer length (10 digits) | |
message |
string | Event description | ||
city |
string | City where the event happened | ||
code |
int | The event category (see below) | ||
OrderID |
string | ShippyPro Order ID | ||
TransactionID |
string | Your internal reference order number | 255 chars | |
TrackingCarrier |
string | Carrier name | ||
TrackingCarrierID |
string | Carrier ID | ||
MarketplaceID |
string | Marketplace ID | ||
MarketplacePlatform |
string | Marketplace name |
Tracking Code Values
| Code | Description |
|---|---|
1 |
Info Received |
2 |
In Transit |
3 |
Out for Delivery |
4 |
Missed Delivery |
5 |
Exception |
6 |
Delivered |
Example
{
"Event": "RETURN_LABEL_IN_THE_BOX_TRACKING_UPDATE",
"tracking" : "1ZA103756899507566",
"date": 1489659960,
"message": "DELIVERED",
"city": "MOTRIL",
"code": 6,
"OrderID": "191252",
"TransactionID": "ORDER2365",
"TrackingCarrier": "UPS",
"TrackingCarrierID": "123",
"MarketplaceID": "123",
"MarketplacePlatform": "Amazon",
}
Update Frequency
Webhook events
This section provides a list of events used in webhooks.
| Value | Description |
|---|---|
TRACKING_UPDATE |
Sent when a tracking update is available |
ORDER_SHIPPED |
Sent when an order is shipped |
ORDER_ERROR |
Sent when an order is in error |
RETURN_LABEL_IN_THE_BOX_TRACKING_UPDATE |
Sent when a tracking update is available for the Return Label in the Box process |
Monitoring
Ping
Attributes
This method is needed for checking the connection between your systems and the ShippyPro API.
Switch between example and interactive console for customized API calls.
No action selected
You can try selecting βShipβ from the left column.
Learn more about using the documentation.
No action selected
To try out Console, please select an action. E.g. select βShipβ from the left column.