# Orders Synchronization Processing
This document introduces three main processes for synchronizing orders to the CJ platform through the API:
# 1. Platform Waybill Order Processing
This process suits merchants who want CJ's warehouse to handle fulfillment and will upload the shipping label themselves. You need to specify shopLogisticsType as 1 or 3, together with a warehouse storageId; once you choose this mode, the warehouse only starts processing after it receives your uploaded waybill.
Query Inventory by Product ID.
Query Warehouse Information.
Create Order.
Docs:Create Order V2 or Create Order V3
Tip:
- Added parameters: shopLogisticsType and storageId
- Logistics type and storage ID need to be specified (storage ID once specified, cannot be changed)
Add Orders to Cart.
Docs:Add Orders to Cart
Tip: Batch add orders to the shopping cart, support adding orders.
Confirm Add Cart
Docs:Confirm Add Cart
Generate parent order and Obtain Payment ID.
Payment.
Docs:Payment
Tip: You can also make bulk payments through MyCJ's website
Upload Waybill and Shipping Information.
Tip: It can only be executed after the payment is completed
Update Waybill and Shipping Information.
Tip: It can only be executed when order status is UNSHIPPED
# 1.1 Sequence Diagram
sequenceDiagram
participant Merchant as Merchant System (Caller)
participant CJ as CJ Open API
Merchant->>CJ: Query Inventory by Product ID (GET /product/stock/getInventoryByPid)
CJ-->>Merchant: Inventory information
Merchant->>CJ: Query Warehouse Information (GET /warehouse/detail)
CJ-->>Merchant: Warehouse information
Merchant->>CJ: Create Order (POST /order/createOrderV2 or /order/createOrderV3<br/>shopLogisticsType=1 or 3, storageId=chosen warehouse)
CJ-->>Merchant: Order number and order status
Merchant->>CJ: Add Orders to Cart (POST /order/addCart)
CJ-->>Merchant: Add-to-cart result
Merchant->>CJ: Confirm Add Cart (POST /order/addCartConfirm)
CJ-->>Merchant: Confirmation result
Merchant->>CJ: Generate parent order and Obtain Payment ID (POST /order/saveGenerateParentOrder)
CJ-->>Merchant: Parent order number, payable amount, payment ID
Merchant->>CJ: Payment (POST /pay/payBalanceV2) or bulk payment via MyCJ website
CJ-->>Merchant: Payment result
Note over Merchant,CJ: The warehouse only starts processing after receiving the waybill — upload it promptly after payment
Merchant->>CJ: Upload Waybill and Shipping Information (POST /order/uploadWaybillInfo)
CJ-->>Merchant: Upload result
opt Order status is UNSHIPPED
Merchant->>CJ: Update Waybill and Shipping Information (POST /order/updateWaybillInfo)
CJ-->>Merchant: Update result
end
# 2. The process of synchronizing orders and utilizing CJ Logistics
This process suits merchants who want to ship directly through CJ's own logistics channels without uploading a waybill themselves. Set shopLogisticsType to 2, leave storageId empty, and specify a logistics method via logisticName; once payment is complete, CJ arranges shipment on its own.
Create Order.
Docs:Create Order V2 or Create Order V3
Tip:
- Please set the value of shopLogisticsType to 2 and leave the value of storageId empty
- Logistics needs to be specified, parameter: logisticName
Add Orders to Cart.
Docs:Add Orders to Cart.
Confirm Adding Cart
Docs:Confirm Adding Cart
Generate parent order and Obtain Payment ID.
Payment Or You can also make bulk payments through MyCJ's website
Docs: Payment
Waiting for CJ delivery
Obtain order details
Docs: Obtain order details
Query logistics track
# 2.1 Sequence Diagram
sequenceDiagram
participant Merchant as Merchant System (Caller)
participant CJ as CJ Open API
Merchant->>CJ: Create Order (POST /order/createOrderV2 or /order/createOrderV3<br/>shopLogisticsType=2, storageId empty, logisticName specified)
CJ-->>Merchant: Order number and order status
Merchant->>CJ: Add Orders to Cart (POST /order/addCart)
CJ-->>Merchant: Add-to-cart result
Merchant->>CJ: Confirm Adding Cart (POST /order/addCartConfirm)
CJ-->>Merchant: Confirmation result
Merchant->>CJ: Generate parent order and Obtain Payment ID (POST /order/saveGenerateParentOrder)
CJ-->>Merchant: Parent order number, payable amount, payment ID
Merchant->>CJ: Payment (POST /pay/payBalanceV2) or bulk payment via MyCJ website
CJ-->>Merchant: Payment result
Note over CJ: Waiting for CJ delivery
Merchant->>CJ: Obtain order details (GET /order/getOrderDetail)
CJ-->>Merchant: Order details
Merchant->>CJ: Query logistics track (GET /logistic/trackInfo)
CJ-->>Merchant: Logistics track
# 3. Store Order Flow
# 3.1 Overview and Use Cases
CJ's Create Order V3 interface supports two ways of identifying products, distinguished by the orderFlow parameter:
| orderFlow | Name | Use case |
|---|---|---|
| 1 (default) | CJ Product Order Flow | You must provide a CJ variant ID (vid) or CJ SKU; product information comes entirely from the CJ product catalog |
| 2 | Store Order Flow | You can pass your own store's product/variant identifiers (store SKU, store product ID) directly, without knowing the corresponding CJ variant ID in advance |
If your store product has not yet been linked to a CJ product, Store Order Flow can significantly simplify integration: you don't need to complete the link before placing the order — the order can still be submitted — but you still need to go to the My CJ - Unconnected (opens new window) page afterward to complete the connection manually.
After an order is created, where it appears depends on whether the product is linked to a CJ product:
- Linked to a CJ product: the order appears under Imported → Orders (opens new window) and can be processed normally;
- Not linked to a CJ product: the order appears under Imported → Invalid Orders (opens new window). You must complete the connection at My CJ - Unconnected (opens new window) before the order can be processed normally.
# 3.2 How to Use Store Order Flow
- You must use the Create Order V3 interface (not V2) when creating a store order, and set
orderFlowto2; - Product information is provided via the
productsarray, and you need to provide all three together:products.vid: your store product/variant identifierproducts.storeProductId: your store product IDproducts.storeProductImg: your store product image
- If the product has not yet been linked to a CJ product, go to the My CJ - Unconnected (opens new window) page, find the unlinked product, and complete the connection; you can also save the product and complete the connection via API in advance — see section 3.7.
If your account has been enabled for "Store Order Flow" at the account level by CJ, orders will follow this flow even without passing
orderFlow. Please contact your CJ business contact to confirm your account's configuration.
# 3.3 Interface Parameters
Key parameters from Create Order V3 (POST):
| Parameter | Type | Required | Description |
|---|---|---|---|
orderFlow | int | No, default 1 | Order flow type. 1=CJ product order flow (create order using CJ variants, default); 2=Store order flow (supports creating orders using store SKUs) |
products[].vid | string | No (required for Store Order Flow) | A CJ variant ID under CJ Product Order Flow; your store product/variant identifier under Store Order Flow. vid/sku cannot both be empty |
products[].sku | string | No | CJ variant SKU; used to look up the variant when vid is missing (generally not used under Store Order Flow) |
products[].storeProductId | String | No (required for Store Order Flow) | Your store-side product ID, saved to the store product record |
products[].storeProductImg | String | No (required for Store Order Flow) | Your store-side product image, saved to the store product record |
# 3.4 Complete Business Process
Store Order Flow only changes how products are identified in step 1 "Create Order"; the remaining steps are identical to sections 1 and 2:
Create Order.
Docs:Create Order V3
Tip:
- You must use the Create Order V3 interface; V2 is not supported for this flow
- Set
orderFlowto2- In
products, provide all three fields together:vid(your store product/variant identifier),storeProductId(your store product ID),storeProductImg(your store product image)- If the product is already linked to a CJ product, the order appears under Imported → Orders (opens new window) after creation and can be processed normally
- If the product has not yet been linked to a CJ product, the system will automatically create a store product record so the order can still be submitted, but it will not automatically create the link to a CJ product; the order appears under Imported → Invalid Orders (opens new window) after creation, and you must complete the connection at My CJ - Unconnected (opens new window) before it can be processed normally
- If your account has been enabled for "Store Order Flow" at the account level by CJ, orders will follow this flow even without passing
orderFlow. Please contact your CJ business contact to confirm your account's configuration
- For the remaining steps — Add Orders to Cart, Confirm Add Cart, Generate parent order and Obtain Payment ID, Payment, Upload/Update Waybill and Shipping Information, Obtain order details, and Query logistics track — follow section 1 (Platform Waybill Order Processing) or section 2 (The process of synchronizing orders and utilizing CJ Logistics) above, depending on which logistics mode (
shopLogisticsType) you choose.
# 3.5 Comparison with CJ Product Order Flow
| Dimension | Store Order Flow (orderFlow=2) | CJ Product Order Flow (orderFlow=1, default) |
|---|---|---|
| Product information required to place an order | Your own store product/variant identifiers (store SKU, store product ID); no need to know the CJ variant ID in advance | You must provide a valid CJ variant ID (vid) or CJ SKU |
| Handling when not linked to a CJ product | The system automatically creates a store product record so the order can still proceed, but does not automatically create the CJ link; the order appears under Imported → Invalid Orders (opens new window) | The product must already be a valid CJ variant, otherwise the order cannot be placed |
| Follow-up maintenance | You need to go to the My CJ - Unconnected (opens new window) page, find the unlinked product, and complete the connection yourself | No additional maintenance needed — it is already a CJ product |
| Suitable for | Merchants who want to integrate directly with their own store's product system and simplify upfront product linking | Merchants who have already fully maintained the CJ product/variant mapping |
# 3.6 Sequence Diagram
sequenceDiagram
participant Merchant as Merchant System (Caller)
participant CJ as CJ Open API
Merchant->>CJ: Create Order V3 (POST /order/createOrderV3, orderFlow=2<br/>products.vid + storeProductId + storeProductImg)
alt Store product already linked to a CJ product
CJ-->>CJ: Match the corresponding CJ product directly
CJ-->>Merchant: Order appears under Imported → Orders
else Store product not yet linked to a CJ product
CJ-->>CJ: Automatically create a store product record (does not create the CJ link), the order can still be completed
CJ-->>Merchant: Order appears under Imported → Invalid Orders
Note over Merchant,CJ: The merchant must go to the My CJ → Unconnected page<br/>to find the product and complete the connection manually (the API does not proactively notify)
end
CJ-->>Merchant: Order number and order status
Merchant->>CJ: Add Orders to Cart (POST /order/addCart)
CJ-->>Merchant: Add-to-cart result
Merchant->>CJ: Confirm Add Cart (POST /order/addCartConfirm)
CJ-->>Merchant: Confirmation result
Merchant->>CJ: Generate parent order and Obtain Payment ID (POST /order/saveGenerateParentOrder)
CJ-->>Merchant: Parent order number, payable amount, payment ID
Merchant->>CJ: Balance Payment (POST /pay/payBalanceV2) or redirect to CJ payment page
CJ-->>Merchant: Payment result
opt Platform Logistics mode (shopLogisticsType=1 or 3)
Merchant->>CJ: Upload Waybill Info (POST /order/uploadWaybillInfo) / Update Waybill Info (POST /order/updateWaybillInfo)
CJ-->>Merchant: Waybill processing result
end
Merchant->>CJ: Obtain order details (GET /order/getOrderDetail)
CJ-->>Merchant: Order details
Merchant->>CJ: Query logistics track (GET /logistic/trackInfo)
CJ-->>Merchant: Logistics track
The interface paths above omit the common prefix
https://developers.cjdropshipping.com/api2.0/{version}/shoppingor.../logistic; refer to the corresponding interface documentation for the exact version{version}and full URL.
# 3.7 Proactively Maintain Store Products and Connections (Optional)
If you want to sync your store products to CJ and establish the connection to a CJ product before placing an order — avoiding orders landing in Imported → Invalid Orders (opens new window) and needing to be fixed afterward on the Unconnected page — you can call the following interfaces, which have the same effect as doing it manually in My CJ:
Save Product
Docs:Save Product (POST)
Tip: Saves your store product information to CJ's system in advance.
Save Variant Batch
Tip: Saves your store product's variant information to CJ's system in batch.
Create Product Connection
Tip: Links a store product (and its variants) to a CJ product (and its variants) — same effect as manually connecting them on the My CJ - Unconnected (opens new window) page.
Disconnect Product Connection
Tip: Removes an existing connection by store product ID (and optionally variant ID).