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.
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.
POST https://api.shipbob.com/2026-01/order
POST https://api.shipbob.com/2026-01/order
POST https://api.shipbob.com/2026-01/order
POST https://api.shipbob.com/2026-01/order
Orders created here are generic B2B orders. ShipBob will fulfill them using standard packing slips, standard boxes, and standard routing. No retailer-specific labeling, packing configurations, routing requirements, or ASN generation will be applied.
Why? Retailer compliance depends on data carried in EDI purchase orders (label formats, carton rules, routing instructions, ASN requirements). This data is ingested through ShipBob’s EDI integrations and is not available through the public API. If your orders ship to a retailer with compliance requirements, contact your ShipBob point of contact to discuss EDI integration before building against this endpoint.
What this endpoint is for: B2B shipments that do not require retailer-specific compliance — for example, wholesale orders to your own retail locations, distributors, or other businesses without inbound compliance programs.
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.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 eachesretailer_program_data: For API-created orders, this object is used for ShipBob’s internal order routing and classification only. Setting retailer_program_type to “SB-B2B” designates this as a generic B2B order — it does not trigger any retailer compliance workflows. The fields mark_for_store, department, delivery_date, and customer_ticket_number are optional metadata fields and are not used to drive compliance behavior.To create a generic B2B order (without retailer compliance), change the type to “B2B” and add the fields highlighted below. If your order ships to a retailer with compliance requirements, see the warning above.
No. Retailer compliance requires data from EDI purchase orders that is not available through this API. Contact your ShipBob point of contact to set up EDI integration for retailer-compliant fulfillment.