Order Types
Most partners just use Marketplace — it's the default, and you don't need to read this page unless one of the scenarios below applies to you. Marketplace, Warehouse, and D2D all share one endpoint (POST /v3/clients/orders/); MPS is a separate endpoint for multi-package orders. customer_details, order_details, pickup_details, and product_details are required across all of them, along with a return leg (return_details) — what differs is a handful of fields per type, covered below.
Marketplace — sellers shipping to their own customers
Use this if: you run a marketplace and sellers on your platform ship orders to their own customers. This is the default — if you don't send order_type at all, Shadowfax treats the order as Marketplace.
pickup_details.name/contactare required — Shadowfax needs to reach the seller for pickup.payment_modeandcod_amountare required.return_details.return_typeis a genuine choice here:sellersends a failed delivery back to the seller/pickup address,originsends it to your warehouse instead.- Pickup slot fields (
pickup_slot/pickup_date) are only honored on Marketplace orders.
Warehouse — you fulfill from your own warehouse
Use this if: you're not routing through individual sellers — the item ships directly from your own warehouse.
pickup_details.name/contactaren't required (there's no seller to reach).payment_modeandcod_amountare still required.return_detailsis required, butreturn_typeis always treated asoriginregardless of what you send — a failed delivery always comes back to your warehouse.
D2D (Direct to Distributor) — bulk moves between your own locations
Use this if: you're moving stock between your own distribution points rather than delivering to an end customer — this isn't a consumer-delivery order type.
pickup_details.name/contactaren't required.payment_mode/cod_amountaren't required —cod_amountdefaults to 0.return_detailsis required,return_typeis alwaysorigin, and itspincodemust matchpickup_details.pincode.- Every SKU needs a numeric
additional_details.quantity. You can optionally setadditional_details.mode(rail/air/surface) andslot_type(slotted/all_day).
MPS (Multi-Package Shipment) — one order, multiple boxes
Use this if: a single customer order needs to ship as more than one physical package (e.g. a large or multi-item order that won't fit in one box).
MPS is a separate endpoint (POST /v2/clients/orders/), not an order_type value — Shadowfax treats it as a Warehouse, Surface-service order internally. You'll need order_details.package_count, and the response is trimmed down to client_order_id, awb_number, and package_details.
Optionally include a top-level package_details array, one entry per package, alongside package_count:
Code
Every field except package_id is optional — pass a pre-generated AWB per package via awb_number, or leave package_details out entirely and let Shadowfax assign child AWBs automatically. Either way, the response always comes back with a package_details array mapping each package to its AWB.
Update and cancel calls for an MPS order must target the parent AWB, not an individual package — see Orders.
Looking for something else?
- Hyperlocal delivery (
order_type: hyperlocal) is only available to a small set of onboarded clients today — talk to your account manager if this is what you need. - Exchange (deliver a new item and pick up the old one in one visit) is a separate product — see Exchange.