Create or Update Order

This endpoint can be used to create an order. The orders are typically pushed to ShipMonk from the 3rd party software.

The Create Order endpoint does not create duplicate entries when both the store_id and order_key are the same. Instead, it updates the existing order.

NOTE: Resending an Order with a different order_key will result in Order duplication.*

The order can be in following 4 statuses:

  • unfulfilled will create order for ShipMonk to process
  • cancelled will create cancelled order or cancel existing order
  • fulfilled will create order in status "Fulfilled by 3rd party" or change existing order status to that status or not perform any action if order was fulfilled by ShipMonk
  • onHold will create order in status onHold or put an existing order on hold.

Can be useful:

  • if the field warehouse is not given, ShipMonk resolves it based on inventory & shipping costs
  • the field custom_data can be used for any data that you need to store and then receive back in shipment notification
  • the field attributes is only used for a custom development and in most of the cases it won't be needed
  • if the field submit_at is not given, order is submit according to store settings.

Recipient Tax ID

The recipient_tax_id field is an optional parameter when submitting an order through the API. However, it is mandatory for international shipments to certain countries, such as Mexico, Brazil, and South Korea. This field plays a role in customs clearance, ensuring accurate calculation of duties and taxes at the destination.

How it's used

For orders shipping to destinations where a recipient tax ID is mandatory, failure to include this field on the shipping label will result in the order being placed in the "Recipient Tax ID Required" Action Required status. Without a valid tax ID, carriers may reject the shipment, returning it to the sender.

Best Practices

To prevent delays, collect the recipient_tax_id from the recipient at checkout. This information is unique to the individual or entity receiving the shipment.

Resolving Missing Recipient Tax ID Issues

To address a missing recipient tax ID, you can update the recipient_tax_id in one of two ways:

  • Via API: Submit the missing tax ID programmatically using the appropriate endpoint.
  • Manually: Edit the order details directly in the ShipMonk App.

Additional Resources For more information, including a current list of countries requiring a recipient tax ID, consult the Action Required Orders documentation. Refer specifically to the "Recipient Tax ID Required" section for detailed guidance and troubleshooting steps.

Lot requirements

Settings for lot requirements (lot, minimum shelf life, etc.) depend on your account settings. Contact your happiness manager to enable lot management.

It is possible to set minimum shelf life for the whole order, per order item, or specific lot requirements per order item.

  • If you set the minimum shelf life for the whole order, you can't use settings at the item level.
  • If you set the minimum shelf life for an order item, you can't set specific lot controls for the same order item.

If the lot requirement is not applicable to the mapped bundle, the order is accepted, but the item mapping ends with action required and you have to update the bundles or set different lot requirements.

You can override the requirements from public API manually in the application. New request from API will override the manual settings, also empty lot settings will remove existing lot restrictions.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
integer
required
≥ 1

Identifier of the store the order belongs to.

string
required
length ≤ 255

Customer-facing order identifier (e.g. shown on the packing slip). Uniqueness is recommended but not enforced. Immutable after creation.

string
required
length ≤ 255

Stable external identifier used to associate this order on subsequent updates; must be unique per order and acts as the upsert key.

items
array of objects
required

Line items to be fulfilled in the order.

items*
ship_to
object
required

Recipient's shipping destination address; used to generate the shipping label and select the carrier service.

string
required
length ≤ 255

Carrier-specific shipping service code requested for the shipment (e.g., 'fedex_ground', 'usps_priority'); the warehouse uses it to choose the carrier service when generating the label.

date-time
required

ISO 8601 timestamp when the order was originally placed in the source system.

string
enum
required

Current status of the order. Allowed values: unfulfilled (ready to be picked/shipped), fulfilled (already shipped externally), cancelled (will not be shipped), onHold (paused, will not be picked until released).

Show Details
unfulfilledOrder will be fulfilled by ShipMonk
fulfilledOrder has been already fulfilled, ShipMonk won't fulfill this order
cancelledOrder won't be fulfilled by ShipMonk
onHoldOrder is temporarily on hold and can be restored or cancelled any time
Allowed:
attributes
array of objects
Defaults to []

Free-form key/value pairs stored on the order, used for custom development.

attributes
string | null
Defaults to null

Name of the retailer or trading partner for B2B/EDI orders; required to apply the partner's routing and labeling rules.

Order Type | null
Defaults to null

Order classification used by the warehouse (e.g., 'b2b', 'b2c', 'wholesale'). Contact support for the list of supported types for your account; defaults to a standard B2C order when omitted.

string | null
Defaults to null

Recipient email address forwarded to the carrier for delivery notifications.

double | null
≥ 0
Defaults to null

Amount the customer paid for shipping, expressed in the order's currency_code. Informational only; does not affect rated postage.

double | null
≥ 0
Defaults to null

Tax amount the customer paid, in the order's currency_code. Informational only; used for customs paperwork on international shipments.

string | null
Defaults to USD

ISO 4217 three-letter currency code for shipping_paid, taxes_paid, and item prices (e.g., 'USD', 'EUR').

references
array of objects
Defaults to []

External identifiers (e.g., PO number, marketplace order ID) linking this order back to upstream systems; informational only.

references
string | null
Defaults to null

Notes provided by the buyer (e.g., delivery preferences). Stored on creation only; subsequent updates are ignored once a value is set.

string | null
Defaults to null

Notes for internal warehouse staff, not shown to the buyer. Stored on creation only; ignored on subsequent updates.

string | null
Defaults to null

Identifier of the warehouse that must fulfill this order (e.g., 'FL1', 'CA1'). Use the codes provided by your account manager; omit to let the system pick the best warehouse.

string | null
Defaults to null

Message printed on a gift note included with the shipment. Stored on creation only; ignored on subsequent updates.

string | null
Defaults to null

Sender name printed on the gift note alongside gift_message.

custom_data
array of objects
Defaults to []

Free-form key/value metadata stored on the order; not interpreted by fulfillment logic and returned as-is in order reads.

custom_data
b2b_attributes
array of objects
Defaults to []

B2B-specific attributes (e.g., ASN, routing instructions) used when fulfilling retailer orders. Contact [email protected] to enable B2B order processing on your account before sending these.

b2b_attributes
date-time | null
Defaults to null

ISO 8601 timestamp at which the order should be released to the warehouse for picking. Until this time the order is held; omit to release immediately.

Create Or Update Order Special Requirements Input | null
Defaults to null

Optional bundle of special handling requirements (packing slip, carton labels, custom dates, pre-generated shipping label, etc.) to apply to this order.

Create Or Update Order Tax Id Input | null
Defaults to null

Recipient's tax identifier (e.g., VAT, EORI) required for customs clearance on international shipments.

integer | null
Defaults to null

Minimum remaining shelf life (in days from the ship date) required for every lot-controlled item in the order; omit to accept any shelf life.

Response

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json