ShipBob’s Order POST endpoint has several required fields that you need to be aware of:
Address1
, City
, and Country
(ISO Alpha-2 code is highly recommended). If available, please also pass the State and Zip Code.order_number
field. This does not need to be unique, and is a more user-friendly order number that a customer service agent might be more familiar with.reference_id
(typically the SKU value), as well as the product name. When an order is created, ShipBob will check if the product already exists based on a matching reference_id, and will automatically create a new product if one does not already exist.
This model is recommended as you do not need to store any external ShipBob product id values to create an order successfully. It also has the ability to auto-create products if they do not exist based on the duplicate match of a reference_id
value.When viewing the API documentation, you can toggle between each model by expanding the Product node:
In addition to the required fields highlighted above, you also have the ability to pass order tags to ShipBob. Tags are an array that consists of a name, value pair which can be used to store additional data that might be needed with your platform upstream, and can also trigger automation rules that have been created in ShipBob.
More details on available rules can be found here.
To trigger a rule created within ShipBob, the order tag name must match the rule. As an example, if you desire to pass a tag that triggers a rule to automatically add a marketing insert to specific orders, your tag structure may look like:
Where the tag “name” value of “AddMarketingInsert” is what will be used to trigger a rule created in ShipBob.
Lastly, you will need to also specify a shipbob_channel_id
within the request header to successfully create an order. To find which channel you have write access to, you can call the GET Channel endpoint to view a list of permissions you have access to under each channel. You will only have write access for one channel (your own integration channel), but you typically will have the ability to read data across other channels.
Create Order
POST https://api.shipbob.com/2.0/order
Create Order (with tags)
Create order (specify fulfillment center)
POST https://api.shipbob.com/2.0/order
ShipBob has the ability to ingest generic B2B orders via the public API. Please note that these are B2B orders which do not have retailer compliance standards, ShipBob standard packing slips, boxes, GS1 labels will be used for these orders. If you are working with retailers that have compliance guideles that ShipBob must adhere to, please reach out to your Merchant Success Manager for additional assistance.
Generic B2B orders passing through ShipBob’s API must be sent with specific required fields to ensure they fall under our B2B flow as opposed to the default D2C flow.
Attached, you will find an example API request for a general b2b order. While reviewing this example, there are several fields to note within this payload that differ from a standard D2C order:
type
is set to a value of 2 or “B2B” (this denotes a B2B order type).carrier_type
will be either “Parcel” or “Freight” – recommended that you have the ability to select which of these options should be used.shipping_method
should be “B2B”.payment_terms
can either be “Prepaid” or “MerchantResponsible”.
retailer_program_type
should be set to “SB-B2B”.purchase_order_number
.company_name
within the recipient address data should be the retailer’s name.quantity_unit_of_measure_code
should be “EA” for eaches