ShipBob Legacy API Documentation


Description


You can use this API to import Orders.
If you have set Web Hook Url, we will post tracking updates to the Url you've provided.

Requirements


Access Token should be taken under Account Settings and API tab on ShipBob Web page (This is required to use the API)


Methods

Import Orders

You can import your orders from your platforms.
API URL: https://shipbobapiv2.shipbob.com/api/Orders/PlaceNewWebOrder

Example of the Request

    {
        "UserToken": "Shipbob_Provided_Token",
        "Name": "Mustafa Bayramoglu",
        "StreetAddressLine1": "2156 W Fulton St",
        "StreetAddressLine2": "Unit 1A",
        "City": "Chicago",
        "State": "IL",
        "Country": "US",
        "Zipcode": "60612",
        "Email": "test@shipbob.com",
        "PhoneNumber": "8444744726",
        "ShippingOption": 1,
        "InventoryDetails": [
        {
            "Sku": "huuu1001",
            "Name": "Product A",
            "Quantity": 3
        },
        {
            "Sku": "huuu1004",
            "Name": "Product B",
            "Quantity": 2
        },
        {
            "Sku": "huuu3002",
            "Name": "Product C",
            "Quantity": 5
        }
        ],
        "SpecialInstructions": "Some Instructions",
	"ReferenceId":"123456"
    }
                

Options

Main Object
Name Type Required/Optional Description
UserToken string Required Please pass the UserToken with "Shipbob_Provided_Token" as shown above, else you will get authentication error.
Set the header as "Content-Type: application/json; charset=utf-8". without quotes
Name string Required Full Name
StreetAddressLine1 string Required Street Address Line 1
City string Required City Name
State string Required Two characters state code
Country string Required Country Code
Zipcode string Optional Zip Code
Email string Optional Email
PhoneNumber string Optional Phone Number
ShippingOption int Required 1: Overnight (FedEx & UPS overnight)
2: Expedited (FedEx 2 day, UPS 2nd Day Air, USPS Express)
3: Standard (USPS First Class & Priority, FedEx Ground, UPS Ground)
InventoryDetails Array Required List of Inventory Details. See InventoryDetail object for more information below.
SpecialInstructions string Required Instructions to be handled by our packaging team
ReferenceId string Required OrderId from your store. If cannot provide please pass null or empty string

InventoryDetail Object
Name Type Required/Optional Description
Sku string Required SKU in your store
Name string Required Name of the product
Quantity int Required Quantity of the item

Response

    {
        "Success": true,
        "Error": "Please provide name",
        "PayLoad": 123456789
    }
                
Name Type Description
Success bool true: Imported successfully
false: Please Check "Error" property
Error string If "Success" property is set to false, Error message will be shown.
PayLoad int If "Success" property is set to true, PayLoad will be the OrderId on ShipBob.

Inventory

You may request a list of products using this endpoint. It will return a list with paging information.

Request

                    GET /api/Inventory/GetProducts?userToken=&showActiveProducts=true&showDigitalProducts=false&pageNo=1
                
Name Type Description
UserToken string Your Token
ShowActiveProducts bool True will return active products. False will return inactive products
ShowDigitalProducts string True will return digital products. Digital products are products that are sent and shipped with an order, however since they are digital these products will not be physically fulfilled.
pageNo string The page number to request.
recordsPerPage string Number of records per page. Max allowed value is 150. (This field is optional)

Response

{
    "Success": true
    "Error": null
    "TotalPages": 1
    "TotalRecords": 6
    "CurrentPage": 1
    "PayLoad":
      {
        "Id": 112131
        "ItemName": "Product B"
	"SKU": "ABC-123B"
	"Barcode": "XYZ-980B"
        "QuantityOnHand": 10
	"StockOutDays": "10"
	"QuantitiesPerFulfillmentCenter": [
		{
		 "FulfillmentCenterName": "Chicago Warehouse #1",
		 "Quantity": 5
		},
		{
		 "FulfillmentCenterName": "Los Angeles Warehouse #1",
		 "Quanity": 5
		}
	]
      }
      {
        "Id": 112132
        "ItemName": "Product C"
	"SKU": "ABC-123C"
	"Barcode": "XYZ-980C"
        "QuantityOnHand": 4
	"StockOutDays": "20"
	"QuantitiesPerFulfillmentCenter": [
		{
		 "FulfillmentCenterName": "Chicago Warehouse #1",
		 "Quantity": 2
		},
		{
		 "FulfillmentCenterName": "Los Angeles Warehouse #1",
		 "Quanity": 2
		}
	]
      }
      {
        "Id": 113589
        "ItemName": "Product D"
	"SKU": "ABC-123D"
	"Barcode": "XYZ-980D"
        "QuantityOnHand": 10
	"StockOutDays": "5"
	"QuantitiesPerFulfillmentCenter": [
		{
		 "FulfillmentCenterName": "Chicago Warehouse #1",
		 "Quantity": 10
		},
		{
		 "FulfillmentCenterName": "Los Angeles Warehouse #1",
		 "Quanity": 0
		}
	]
      }
      {
        "Id": 228454
        "ItemName": "Mustafa"
	"SKU": "ABC-123M"
	"Barcode": "XYZ-980M"
        "QuantityOnHand": 10
	"StockOutDays": "5"
	"QuantitiesPerFulfillmentCenter": [
		{
		 "FulfillmentCenterName": "Chicago Warehouse #1",
		 "Quantity": 5
		},
		{
		 "FulfillmentCenterName": "Los Angeles Warehouse #1",
		 "Quanity": 5
		}
	]
      }
      {
        "Id": 228483
        "ItemName": "Product July"
	"SKU": "ABC-123J"
	"Barcode": "XYZ-980J"
        "QuantityOnHand": 11
	"StockOutDays": "10"
	"QuantitiesPerFulfillmentCenter": [
		{
		 "FulfillmentCenterName": "Chicago Warehouse #1",
		 "Quantity": 9
		},
		{
		 "FulfillmentCenterName": "Los Angeles Warehouse #1",
		 "Quanity": 2
		}
	]
      }
      {
        "Id": 242239
        "ItemName": "PRODUCT TEST-12"
	"SKU": "ABC-12312"
	"Barcode": "XYZ-98012"
        "QuantityOnHand": 1
	"StockOutDays": "1"
	"QuantitiesPerFulfillmentCenter": [
		{
		 "FulfillmentCenterName": "Chicago Warehouse #1",
		 "Quantity": 1
		}
	]
      }
}
                

Import Inventory

You can import inventory from your platform
API URL: https://shipbobapiv2.shipbob.com/api/Inventory/PostNewWebInventory

Example of the Request

{
  "UserToken": "Shipbob_Provided_Token",
  "Items": [
    {
      "ItemName": "TestItem1",
      "SKU": "123456",
      "Barcode": "3345672"
    },
    {
      "ItemName": "TestItem2",
      "SKU": "098765"
      "Barcode": "558989"
    }
  ]
}
                

Options

Main Object
Name Type Required/Optional Description
UserToken string Required Please pass the UserToken with "Shipbob_Provided_Token" as shown above, else you will get authentication error.
Set the header as "Content-Type: application/json; charset=utf-8". without quotes
Items Array Required List of InventoryItems. See InventoryItems object for more information below.

InventoryItems Object
Name Type Required/Optional Description
ItemName string Required Name of the product
SKU string Optional SKU in your store
Barcode string Optional Barcode for your item. (may be same as SKU)

Response

    {
        "Success": true,
        "Error": "Inventory items exceeded the allotted amount of 100. Please resend the request in batches of 100",
        "PayLoad": InventoryImportResult
    }
                
Name Type Description
Success bool true: Imported successfully
false: Please Check "Error" property
Error string If "Success" property is set to false, Error message will be shown.
PayLoad array If "Success" property is set to true, PayLoad will be a list of items that successfully imported and list of items that failed to import. NOTE: Failed items most likely means the SKU or ItemName already exists in the database. See InventoryImportResult object for more information below.
InventoryImportResult Object
Name Type Description
ItemName string Name of the product
SKU string SKU Imported
Barcode string Barcode Imported

Response

{ 
  "SuccessInventory": [
    {
      "ItemName": "TestItem1",
      "SKU": "123456",
      "Barcode": "8889888"
    },
    {
      "ItemName": "TestItem2",
      "SKU": "09876",
      "Bacode": "999abc55h"
    }
  ],
  "FailedInventory": [
    {
      "ItemName": "TestItem3",
      "SKU": "123456",
      "Barcode": "123456"
    },
    {
      "ItemName": "TestItem4",
      "SKU": "09876",
      "Barcode": "09876"
    }
  ]
}

WebHooks

Webhooks can be defined on the Shipbob Dashboard account settings for each of the following events.

Order Webhooks

When an Order is moved to Exception

This webhook is called for any order type when the order moved to Exception.

	
{  
   "shipbob_order_id":123123,
   "order_id":"TEST",
   "moved_at":"2018-02-05T16:42:33.0767475Z",
   "reason":"TEST"
}

When An Order is moved to OnHold

This webhook is called for any order type when the order moved to OnHold.

		
{  
   "shipbob_order_id":123123,
   "order_id":"TEST",
   "moved_at":"2018-02-05T16:42:33.0767475Z",
   "reason":"TEST"
}

When an Order is Shipped

This webhook is called just once for any order type when the order is shipped.

		
{  
   "order_id":"TEST",
   "shipbob_order_id":123123,
   "shipped_at":"2018-02-02T19:24:49.3474114Z",
   "tracking_number":"TEST_TRACKING_NUMBER",
   "tracking_url":"https://tools.usps.com/go/TrackConfirmAction!input.action?tRef=qt&tLc=0&tLabels=345454533455444"
   "carrier":"USPS",
   "customer_email":"test@email.com",
   "invoice":1.23,
   "address":{  
      "name":"Test",
      "house_number":"",
      "street_address":"2156 W Fulton St",
      "street_address_2":"Unit 1A",
      "city":"Chicago",
      "state":"IL",
      "zip":"60612",
      "country":"US",
      "email":"test@test.com"
   }
}

Tracking Webhook

For all orders sent to us via API, we do a post back of the tracking details as soon as they are available, provided you share a web hook url with us. Our system will check for HttpStatusCode for the post request. If it returns OK(Status code=200), we will update our records and consider it as successful postback. If anything else comes as response, our platform will retry for few days and then give up.

    {
        "UserToken":"Shipbob_Provided_Token",
	"ReferenceId":"12345689",
        "OrderId":123456,
        "Carrier":"USPS",
        "TrackingId":"345454533455444",
	"TrackingUrl":"https://tools.usps.com/go/TrackConfirmAction!input.action?tRef=qt&tLc=0&tLabels=345454533455444"
	"Invoice":10.25,
	"FormatInvoice":"$10.25",
	"FulfilledFrom": "Chicago Warehouse #1"
    }
                
Name Type Description
UserToken string Your Token
ReferenceId string Order Id from your store
OrderId int Order Id on ShipBob
Carrier string Carrier name
TrackingId string Tracking Number
TrackingUrl string Carrier specific Tracking URL
Invoice double Invoice Amount
FormatInvoice string Formatted invoice amount with "$" sign
FulfilledFrom string Which city the order was fulfilled from. Will have the warehouse name and city.

When an Order could not be delivered

This webhook is called for any order type when an order could not be delivered.

		
{  
   "order_id":"TEST",
   "shipbob_order_id":123123,
   "tracking_number":"TEST_TRACKING_NUMBER",
   "last_message":"TEST"
}

When an Order is delivered

This webhook is called for any order type when an order is delivered.

		
{  
   "order_id":"TEST",
   "shipbob_order_id":123123,
   "tracking_number":"TEST_TRACKING_NUMBER",
   "delivered_at":"2018-02-05T18:11:55.9984025Z"
}

Inventory Webhooks

When inventory count goes below the reorder point

This webhook is called when inventory count goes below the reorder point.

		
{  
   "sku":"TEST",
   "shipbob_inventory_id":1,
   "item_name":"TEST_ITEM",
   "quantity":123,
   "warehouse":"TEST"
}

When a Spot Check Completed

This webhook is called when a Spot Check Completed.

		
{  
   "shipbob_inventory_id":1,
   "spot_check_difference_quantity":10,
   "quantity":100,
   "sku":"TEST"
}

Other Webhooks

When the Credit Card is declined

This webhook is called anytime the credit card was declined.

		
{  
   "declined_at":"2018-02-05T18:03:04.0083364Z",
   "outstanding_amount":10.0
}

When a Warehouse Receiving Order's status changes

This webhook is called when a Warehouse Receiving Order's status changes.

		
{  
   "id":123123,
   "status":"processing",
   "changed_at":"2018-02-05T18:18:55.2976744Z"
}

When a Return Order's status changes

This webhook is called when a Return Order's status changes.

		
{  
   "id":123,
   "shipbob_source_order_id":123123,
   "comment":"TEST",
   "status":"processing",
   "tracking_number":"TEST_TRACKING_NUMBER"
}

Zapier

The webhooks can also be used in Zapier to manage events and actions through Zapier.