# 6 Logistics

# 1 Logistics

# 1.1 Freight Calculation (POST)

Freight calculation. Bulk purchase products will have designated shipping methods, while dropshipping products will usually have more options.

This is a simple mode of logistics trial calculation. If you want to use a more accurate logistics trial calculation, please use the interface: 1.2 Freight Calculation Tip

# URL

https://developers.cjdropshipping.com/api2.0/v1/logistic/freightCalculate

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/logistic/freightCalculate' \
                --header 'Content-Type: application/json' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                --data-raw '{
                    "startCountryCode": "CN",
                    "endCountryCode": "US",
                    "products": [
                        {
                            "quantity": 2,
                            "vid": "439FC05B-1311-4349-87FA-1E1EF942C418"
                        }
                    ]
                }'
Parameter Definition Type Required Length Note
startCountryCode Country of origin string Y 200
endCountryCode Country of destination string Y 200
zip zip string N 200
taxId tax id string N 200
houseNumber house number string N 200
iossNumber ioss number string N 200
storageIdList Storage id List string[] N 100
shippingMode shipping mode int N 10 1=Platform Logistics, 2=Merchant (Seller) Logistics. Optional; when omitted the downstream default is 2 (Merchant), except on AliExpress. When set to 1, platforms is required, otherwise 1600300 is returned
platforms platform list String[] N 200 Platform types, see Platforms. Required when shippingMode is 1 (Platform Logistics). Platform Logistics currently applies to: tiktok_us / tiktok_us_cross / Temu / Temu_us_local / Temu_certified_overseas / shein. The open platform does not validate this value and passes it through as-is to the logistics center. If products contains supplier-shipped items, this API quotes from the supplier logistics template and this field is not used for matching
quantity Quantity int Y 10
vid Variant id string Y 200

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": [
        {
            "logisticAging": "2-5",
            "logisticPrice": 4.71,
            "logisticPriceCn": 30.54,
            "logisticName": "USPS+"
        }
    ],
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
logisticPrice Shipping cost in USD BigDecimal (18,2) Unit: $ (USD)
logisticPriceCn Shipping cost in CNY BigDecimal (18,2) Unit: ¥ (CNY)
logisticAging Shipping time string 20
logisticName Carrier name string 20
taxesFee taxes fee BigDecimal (18, 2) Unit:$(USD)
clearanceOperationFee customs clearance fee BigDecimal (18, 2) Unit:$(USD)
totalPostageFee total postage BigDecimal (18, 2) Unit:$(USD)

error

{
    "code": 1600100, 
    "result": false,
    "message": "Param error",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Field Definition Type Length Note
code error code int 20 Reference error code
result Whether or not the return is normal boolean 1
message return message string 200
data return data object interface data return
requestId requestId string 48 Flag request for logging errors

# 1.2 Freight Calculation Tip(POST)

Freight calculation. Bulk purchase products will have designated shipping methods, while dropshipping products will usually have more options.

srcAreaCode, destAreaCode, productProp and weight are validated. When any of them is missing, this endpoint returns 1600300 and names the offending row (for example reqDTOS[0].weight must be greater than 0) instead of an empty list. Previously such a request returned an empty array with no reason, which is indistinguishable from "no shipping method is available".

If you get fewer shipping methods than expected, send the same payload to 1.5 Unavailable Shipping Methods to see why each one is unavailable.

# URL

https://developers.cjdropshipping.com/api2.0/v1/logistic/freightCalculateTip

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/logistic/freightCalculateTip' \
                --header 'Content-Type: application/json' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                --data-raw '{
                    "reqDTOS": [
                        {
                            "srcAreaCode": "CN",
                            "destAreaCode": "US",
                            "weight": 100,
                            "length": 0.3,
                            "width": 0.4,
                            "height": 0.5,
                            "volume": 0.06,
                            "totalGoodsAmount":123.2,
                            "productProp": [
                                "COMMON"
                            ],
                            "freightTrialSkuList": [
                                {
                                    "skuQuantity": 1,
                                    "sku": "CJCF104237201AZ"
                                }
                            ],
                            "skuList": [
                                "CJCF104237201AZ"
                            ],
                            "platforms": [
                                "Shopify"
                            ]
                        }
                    ]
                }'
Parameter Definition Type Required Length Note
srcAreaCode Country of origin string Y 200 First call Query Inventory by Product ID — the response field inventories.countryCode lists the country/countries currently holding stock (i.e. valid shipping origins) for that product, then cross-reference against the Country Code enum to confirm the srcAreaCode
destAreaCode Country of destination string Y 200
customerCode customer code string N 200
zip zip string N 200
houseNumber house number string N 100
iossNumber ioss number string N 200
storageIdList Storage id List string[] N 100
recipientAddress Recipient address string N 200
city City string N 50
recipientName Recipient name String N 200
skuList Sku list String[] Y 200
town Town String N 100
phone Phone String N 50
wrapWeight wrap weight,Unit:g int Y 200
volume Volume,Unit:cm³ BigDecimal Y 200
station station String N 200 Referer:Country Code, Please use The two-letter code
platforms Platform List String[] N 200 Referer Platforms. Required when shippingMode is 1 (Platform Logistics). Platform Logistics currently applies to: tiktok_us / tiktok_us_cross / Temu / Temu_us_local / Temu_certified_overseas / shein. Passed through as-is; the open platform does not validate it
dutyNo dutyNo String N 200
email email String N 100
province province String N 100
recipientAddress1 recipient address1 String N 200
uid uid String N 200
recipientId recipient id String N 200
recipientAddress2 recipient address2 String N 200
amount amount BigDecimal N 50
productTypes product type String[] N 0: normal goods, 1: service goods, 3: packaged goods, 4: supplier goods, 5: supplier self-delivered goods, 6: virtual goods, 7: pod personalized goods
weight weight,Unit:g int Y 100
productProp product prop String Y 100 Get it via Product Details — use the response field productProEnSet as this input. See Appendix 4:Product Logistics Property for the full list of valid values
optionName option name String N 200
volumeWeight volume weight,Unit:g BigDecimal N 100
orderType order type String N 100
totalGoodsAmount total value of goods BigDecimal N 100
shippingMode shipping mode int N 10 1=Platform Logistics, 2=Merchant (Seller) Logistics. Optional; when omitted the downstream default is 2 (Merchant), except on AliExpress. When set to 1, platforms is required for this record, otherwise 1600300 is returned
freightTrialSkuList freight trial sku list Object[] Y
- productCode product code String N 100
- hscode hs code String N 100
- sku sku String N 100
- productPropList Product attributes String[] N 100
- productTypeList product type String[] N 0: normal goods, 1: service goods, 3: packaged goods, 4: supplier goods, 5: supplier self-delivered goods, 6: virtual goods, 7: pod personalized goods
- vid variant id String N 100
- skuQuantity sku quantity int N 50
- skuWeight sku weight,Unit:g BigDecimal N 100
- skuVolume sku volume,Unit:cm³ BigDecimal N 100
- combinationType combination type int N 50
- parentVid parent variant id String N 50
- unsalable unsalable int N 10
- tailCostQuantity tail cost quantity int N 10
- privateDeductionQuantity private deduction quantity int N 10

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": [
        {
            "arrivalTime": "12-50",
            "discountFee": 4.09,
            "discountFeeCNY": 25.30,
            "volumeWeight": null,
            "option": {
                "arrivalTime": "12-50",
                "cnName": "CJ航空挂号小包",
                "enName": "CJPacket Postal",
                "id": "1564849338719199233"
            },
            "ruleTips": [
                {
                    "expression": "^[\\s\\d\\-()()+]{6,32}$",
                    "interceptType": "0",
                    "max": null,
                    "min": null,
                    "msgCode": "1001",
                    "msgEn": "Must be a 6-32 digit number (only numbers, symbols and spaces are supported).",
                    "type": "phone"
                }
            ],
            "ruleTipTypes": [
                "phone"
            ],
            "channelId": "1564543005939785730",
            "error": "",
            "errorEn": "",
            "optionId": "1564849338719199233",
            "postage": 3.55,
            "postageCNY": 22.00,
            "priceIncreases": "115",
            "reSort": "62",
            "remoteFee": 0,
            "remoteFeeCNY": 0,
            "tip": "",
            "uid": "",
            "orderId": null,
            "unWeightChargeTarget": null,
            "floatMaxPrice": null,
            "floatMinPrice": null,
            "logisticsParamRespDTO": null,
            "message": "Hi, CJ will not accept any disputes when you choose the shipping method, which is not trackable when orders arrived at some countries, states, or cities.",
            "wrapPostage": 4.09,
            "wrapPostageCNY": 25.30,
            "wrapWeight": 0,
            "stopWords": [],
            "channel": {
                "cnName": "促佳燕文航空挂号小包特货",
                "enName": "燕文航空挂号小包特货",
                "id": "1564543005939785730"
            },
            "cjRespDTO": {
                "postage": "3.55",
                "postageCNY": "22.00",
                "remoteFee": "0.00",
                "remoteFeeCNY": "0"
            },
            "destArea": {
                "cnName": "美国",
                "countryId": "233",
                "enName": "United States of America (the)",
                "id": "233",
                "parentId": null,
                "postCode": "",
                "shortCode": "US"
            },
            "srcArea": {
                "cnName": "中国",
                "countryId": "48",
                "enName": "China",
                "id": "48",
                "parentId": null,
                "postCode": "",
                "shortCode": "CN"
            },
            "dump": false,
            "zonePrice": [],
            "allRuleTips": [
                {
                    "expression": "^[\\s\\d\\-()()+]{6,32}$",
                    "interceptType": "0",
                    "max": null,
                    "min": null,
                    "msgCode": "1001",
                    "msgEn": "Must be a 6-32 digit number (only numbers, symbols and spaces are supported).",
                    "type": "phone"
                }
            ],
            "taxesFee": null,
            "clearanceOperationFee": null
        }
    ],
    "requestId": "55c4708d15d44a499f061582ddbd989b",
    "success": true
}
Field Definition Type Length Note
arrivalTime arrival time string 200
discountFee discount Fee BigDecimal (18,2) Unit: $ (USD)
discountFeeCNY discount Fee CNY BigDecimal (18,2)
volumeWeight volume weight BigDecimal (18,2) Unit: $ (USD)
channelId channel id String 200
error error String 200
errorEn errorEn String 200
optionId option id String 100
postage postage BigDecimal (18,2) Unit: $ (USD)
postageCNY postage CNY BigDecimal (18,2) Unit: $ (USD)
priceIncreases price increases String 100
reSort reSort String 100
remoteFee remoteFee BigDecimal (18,2) Unit: $ (USD)
remoteFeeCNY remoteFee CNY BigDecimal (18,2) Unit: $ (USD)
tip tip string 200
uid uid String 200
orderId order id String 100
unWeightChargeTarget unWeightChargeTarget BigDecimal (18,2) Unit: $ (USD)
floatMaxPrice floatMaxPrice BigDecimal (18,2) Unit: $ (USD)
floatMinPrice floatMinPrice BigDecimal (18,2) Unit: $ (USD)
logisticsParamRespDTO logisticsParamRespDTO String 200
message message String 200
wrapPostage wrap postage BigDecimal (18,2) Unit: $ (USD)
wrapPostageCNY wrap postage CNY BigDecimal (18,2) Unit: $ (USD)
wrapWeight wrap weight BigDecimal (18,2) Unit: $ (USD)
stopWords Stop Words String[] 200
channel channel Object
- cnName name(CN) String 200
- enName name(EN) String 200
- id id String 200
option option Object
- arrivalTime arrival time String 100
- cnName name(CN) String 100
- enName name(EN) String 100
- id id String 100
taxesFee US taxes fee (not included in postage) BigDecimal (18,2) Unit: $ (USD)
clearanceOperationFee customs clearance fee BigDecimal (18,2) Unit: $ (USD)
tariff EU tariff (not included in postage) BigDecimal (18,2) Unit: $ (USD)
totalPostageFee total postage = wrapPostage (or discountFee when wrapPostage is null) + taxesFee + clearanceOperationFee + tariff BigDecimal (18, 2) Unit:$(USD)
recommendLogisticsTypeList recommend logistics type, 0-time priority, 1-price priority, 2-composite recommend int[]
timePrioritySort time priority sort value int
pricePrioritySort price priority sort value int
compositeRecommendSort composite recommend sort value int
zonePrice zone price list object[]
- storageId storage id string 100
- discountFee discount fee string 100
- lastDiscountFee last discount fee string 100
- wrapPostage wrap postage string 100
- lastWrapPostage last wrap postage string 100
allRuleTips all rule tips object[] 200
- expression expression string 20
- interceptType InterceptType string 20 0-Strong Interception 1-Non-strong Interception
- max Maximum range (name, address) string 20
- min Minimum scope (name, address) string 20
- msgCode Tip code string 20
- type Type string 20 phone-Phone number required rule; dutyNo-Duty number required rule; email-Email required rule; zip-Zip code required rule; town-Town/County required rule; houseNumber-House number required rule; iossNumber-IOSS number required rule; recipientId-Recipient ID required rule; province-Province/State required rule; recipientName-Recipient name length validation; recipientAddress-Address1+Address2 length validation; city-City character length validation
- msgEn msg(english) string 20
destArea Target Area object 20
- cnName Country name (In Chinese) string 20
- enName Country Name (English) string 20
- countryId Country Id string 20
- parentId Parent Id string 20
- postCode Post Code string 20
- shortCode Short Code string 20
- id id string 20
srcArea Source Area object 20
- cnName Country name (In Chinese) string 20
- enName Country Name (English) string 20
- countryId Country Id string 20
- parentId Parent Id string 20
- postCode Post Code string 20
- shortCode Short Code string 20
- id id string 20

error

{
    "code": 1600100, 
    "result": false,
    "message": "Param error",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Field Definition Type Length Note
code error code int 20 Reference error code
result Whether or not the return is normal boolean 1
message return message string 200
data return data object interface data return
requestId requestId string 48 Flag request for logging errors

# 1.3 Partner Freight Calculation(POST)

Freight calculation for merchant partner orders. Calculates shipping costs based on order information and destination.

# URL

https://developers.cjdropshipping.com/api2.0/v1/logistic/partnerFreightCalculate

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/logistic/partnerFreightCalculate' \
                --header 'Content-Type: application/json' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                 --data-raw '{
                    "orderNumber": "1234",
                    "shippingZip": "10001",
                    "shippingCountryCode": "US",
                    "shippingCountry": "United States",
                    "shippingProvince": "New York",
                    "shippingCity": "New York",
                    "shippingAddress": "123 Test St",
                    "shippingCustomerName": "John Doe",
                    "shippingPhone": "1234567890",
                    "remark": "note",
                    "fromCountryCode": "CN",
                    "logisticName": "PostNL",
                    "houseNumber": "123",
                    "iossType": 1,
                    "iossNumber": "",
                    "products": [
                        {
                            "vid": "92511400-C758-4474-93CA-66D442F5F787",
                            "quantity": 1
                        }
                    ]
                }'
Parameter Definition Type Required Length Note
orderNumber Order number String Y 40
shippingCountryCode Destination country code string Y 200
shippingCountry Destination country string Y 200
shippingProvince Province/State string Y 200
shippingCity City string Y 200
shippingAddress Address string N 200
shippingCustomerName Recipient name string N 200
shippingZip Zip code string Y 200
shippingPhone Phone string N 200 Make sure the phone number is accurate
houseNumber House number string N 20
remark Order remark string N 500
logisticName Logistics name string N 200
fromCountryCode Origin country string Y 200 Warehouse country
email Email string N 200
consigneeID Consignee ID string N 200
iossType IOSS type int N 20 1-Don't use IOSS 2-Use my IOSS number 3-Use CJ's IOSS number
iossNumber IOSS number string N 20
products Product list list Y 200
- vid Variant id string Y 200
- quantity Quantity int Y 200

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": [
        {
            "postageAmount": 1.69,
            "logisticsModel": "YTGN",
            "logisticsName": "YTO China Domestic",
            "arrivalTime": "2-3",
            "isSupportIoss": false,
            "iossList": [
                {
                   "iossNumber": "",
                   "iossType": "",
                   "serviceAmount": "",
                   "taxAmount": ""
                }
            ]
         }
    ],
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
postageAmount Shipping cost BigDecimal (18, 2) Unit: $(USD)
logisticsModel Logistics channel string 200
logisticsName Logistics name string 200
arrivalTime Delivery time string 20
isSupportIoss Whether IOSS is supported boolean
iossList IOSS list list
- iossNumber IOSS number string
- iossType Whether default. 1-Don't use IOSS 2-Use my IOSS 3-Use CJ's IOSS
- serviceAmount Service fee BigDecimal (18, 2) Unit: $(USD)
- taxAmount Tax amount BigDecimal (18, 2) Unit: $(USD)

error

{
    "code": 1600100, 
    "result": false,
    "message": "Param error",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Field Definition Type Length Note
code error code int 20 Reference error code
result Whether or not the return is normal boolean 1
message return message string 200
data return data object interface data return
requestId requestId string 48 Flag request for logging errors

# 1.4 Supplier self-shipment logistics trial calculation(POST)

# URL

https://developers.cjdropshipping.com/api2.0/v1/logistic/getSupplierLogisticsTemplate

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/logistic/getSupplierLogisticsTemplate' \
                --header 'Content-Type: application/json' \
                 --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                 --data-raw '{
                    "skuList": ""
                }'
Parameter Definition Type Required Length Note
skuList Product SPU String[] Y 200

# Response

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": [
        {
            "skuList": [],
            "logisticsInfoList": [
                {
                    "id": "123",
                    "logisticsName": "fdd",
                    "postage": "",
                    "startCountryCode": "",
                    "destCountryCode": ""
                }
            ]
        }
    ],
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
skuList SPU List String[]
logisticsInfoList logistics Information Object[]
- id Template Id string 100
- logisticsName Logistics Name string 200
- postage Postage Fee BigDecimal (18,2) Unit:$(USD)
- startCountryCode Start Country Code string 100
- destCountryCode Target Country Code string 100

error

{
    "code": 1600100, 
    "result": false,
    "message": "Param error",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Field Definition Type Length Note
code error code int 20 Reference error code
result Whether or not the return is normal boolean 1
message return message string 200
data return data object interface data return
requestId requestId string 48 Flag request for logging errors

# 1.5 Unavailable Shipping Methods(POST)

Diagnostic endpoint for 1.2 Freight Calculation Tip. When 1.2 returns fewer shipping methods than you expect (or an empty list), send the exact same payload here to find out which shipping methods are available and, for the unavailable ones, why.

It is intended for troubleshooting, not for the order-placing path: this endpoint evaluates every shipping option against all rules in order to report a reason for each one, so a single call costs noticeably more than 1.2. Rate-limit points are the same as 1.2 (10 points per call).

Note this endpoint does not return prices. Freight quotes come from 1.2 only, so that the same route never has two different prices.

# URL

https://developers.cjdropshipping.com/api2.0/v1/logistic/unavailableShippingMethods

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/logistic/unavailableShippingMethods' \
                --header 'Content-Type: application/json' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                --data-raw '{
                    "reqDTOS": [
                        {
                            "srcAreaCode": "CN",
                            "destAreaCode": "US",
                            "weight": 100,
                            "length": 0.3,
                            "width": 0.4,
                            "height": 0.5,
                            "volume": 0.06,
                            "totalGoodsAmount":123.2,
                            "productProp": [
                                "COMMON"
                            ],
                            "freightTrialSkuList": [
                                {
                                    "skuQuantity": 1,
                                    "sku": "CJCF104237201AZ"
                                }
                            ],
                            "skuList": [
                                "CJCF104237201AZ"
                            ],
                            "platforms": [
                                "Shopify"
                            ]
                        }
                    ]
                }'

# Request

The request body is identical to 1.2 Freight Calculation Tip — same fields, same types, same meaning. The full parameter table is repeated here so that you can stay on this page while building the request.

Four of these fields are validated before the request is sent downstream. If any of them is missing, the whole request fails with 1600300 and the message names the offending row, for example reqDTOS[0].weight must be greater than 0. The same four checks also apply to 1.2, so an invalid payload returns the same error code and the same message on both endpoints.

Parameter Definition Note
srcAreaCode Country of origin Must not be empty
destAreaCode Country of destination Must not be empty
productProp Product logistics property Must not be empty. See Appendix 4: Product Logistics Property
weight Weight, Unit: g Must be greater than 0
Parameter Definition Type Required Length Note
srcAreaCode Country of origin string Y 200 First call Query Inventory by Product ID — the response field inventories.countryCode lists the country/countries currently holding stock (i.e. valid shipping origins) for that product, then cross-reference against the Country Code enum to confirm the srcAreaCode
destAreaCode Country of destination string Y 200
customerCode customer code string N 200
zip zip string N 200
houseNumber house number string N 100
iossNumber ioss number string N 200
storageIdList Storage id List string[] N 100
recipientAddress Recipient address string N 200
city City string N 50
recipientName Recipient name String N 200
skuList Sku list String[] Y 200
town Town String N 100
phone Phone String N 50
wrapWeight wrap weight,Unit:g int Y 200
volume Volume,Unit:cm³ BigDecimal Y 200
station station String N 200 Referer:Country Code, Please use The two-letter code
platforms Platform List String[] N 200 Referer Platforms. Required when shippingMode is 1 (Platform Logistics). Platform Logistics currently applies to: tiktok_us / tiktok_us_cross / Temu / Temu_us_local / Temu_certified_overseas / shein. Passed through as-is; the open platform does not validate it
dutyNo dutyNo String N 200
email email String N 100
province province String N 100
recipientAddress1 recipient address1 String N 200
uid uid String N 200
recipientId recipient id String N 200
recipientAddress2 recipient address2 String N 200
amount amount BigDecimal N 50
productTypes product type String[] N 0: normal goods, 1: service goods, 3: packaged goods, 4: supplier goods, 5: supplier self-delivered goods, 6: virtual goods, 7: pod personalized goods
weight weight,Unit:g int Y 100
productProp product prop String Y 100 Get it via Product Details — use the response field productProEnSet as this input. See Appendix 4:Product Logistics Property for the full list of valid values
optionName option name String N 200
volumeWeight volume weight,Unit:g BigDecimal N 100
orderType order type String N 100
totalGoodsAmount total value of goods BigDecimal N 100
shippingMode shipping mode int N 10 1=Platform Logistics, 2=Merchant (Seller) Logistics. Optional; when omitted the downstream default is 2 (Merchant), except on AliExpress. When set to 1, platforms is required for this record, otherwise 1600300 is returned
freightTrialSkuList freight trial sku list Object[] Y
- productCode product code String N 100
- hscode hs code String N 100
- sku sku String N 100
- productPropList Product attributes String[] N 100
- productTypeList product type String[] N 0: normal goods, 1: service goods, 3: packaged goods, 4: supplier goods, 5: supplier self-delivered goods, 6: virtual goods, 7: pod personalized goods
- vid variant id String N 100
- skuQuantity sku quantity int N 50
- skuWeight sku weight,Unit:g BigDecimal N 100
- skuVolume sku volume,Unit:cm³ BigDecimal N 100
- combinationType combination type int N 50
- parentVid parent variant id String N 50
- unsalable unsalable int N 10
- tailCostQuantity tail cost quantity int N 10
- privateDeductionQuantity private deduction quantity int N 10

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": {
        "availableList": [
            {
                "optionName": "USPS+"
            }
        ],
        "unavailableList": [
            {
                "optionName": "CJPacket Postal",
                "errorCode": 2007,
                "errorEn": "Available weight: 0 - 2000g"
            }
        ]
    },
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Field Definition Type Length Note
availableList Shipping methods available for this request object[] Empty array when none is available
- optionName Shipping method name (EN) string 200 Same value as option.enName in 1.2
unavailableList Shipping methods that are not available, with the reason object[] Complete list, never truncated
- optionName Shipping method name (EN) string 200
- errorCode Reason code int 20 See the table below
- errorEn Reason (EN) string 500 Human-readable text; do not parse it

The two lists are complementary: the same optionName never appears in both.

# Reason codes (unavailableList.errorCode)

unavailableList does not necessarily list every excluded shipping method. Reasons that are only meaningful internally (route or channel configuration) are filtered out before the response is built, so this list may be shorter than the number of shipping methods actually excluded by the trial calculation. A shipping method missing from both lists was excluded for such an internal reason — contact your CJ agent with the requestId if you need to know why.

Code Meaning
2001 Unavailable for orders from the given store platform
2002 Order amount out of the supported range
2003 Order is missing product attributes that this shipping method requires (all of them are required)
2004 Order contains product attributes this shipping method does not support (at least one supported attribute is required)
2005 Order type not supported
2006 SKU not supported
2007 Order weight out of the supported range
2008 Postcode not supported
2009 Order weight out of the supported range (weight section)
2010 "Goods value + freight" exceeds the limit, tax cannot be calculated
2011 Postcode prefix not supported
2012 Only applied to certain delivery methods
2013 Product dimensions exceed what this channel accepts
2014 Freight cannot be calculated: some products have no multi-PCS quote configured on this route
2015 Freight cannot be calculated: no quote configured for this route
2016 Address reachability check failed for the recipient state/city/postcode
2017 Total liquid volume of the order exceeds the limit of this channel
2018 HS code missing for one or more SKUs, please contact your agent

New reason codes may be added over time. Treat an unknown errorCode as "unavailable for a reason described in errorEn" rather than failing.

error

{
    "code": 1605003,
    "result": false,
    "message": "Unable to determine shipping method availability for this request. Please contact your CJ agent.",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Code Meaning What to do
1600300 One of the four required fields is missing; message names the row and the field Fix the payload and retry
1605003 The trial calculation could not be run at all for this request (for example the shipping mode is not provided for the destination, or the route is not configured) Contact your CJ agent with the requestId
Field Definition Type Length Note
code error code int 20 Reference error code
result Whether or not the return is normal boolean 1
message return message string 200
data return data object interface data return
requestId requestId string 48 Flag request for logging errors

# 2 Tracking Number

# 2.1 Get Tracking Information (GET)

Shipping information can be found upon tracking numbers. You can also visit CJ Logistic Platform (opens new window)

# URL

https://developers.cjdropshipping.com/api2.0/v1/logistic/trackInfo?trackNumber=CJPKL7160102171YQ

# CURL

curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/logistic/trackInfo?trackNumber=CJPKL7160102171YQ
                                                                                                    &trackNumber=CJPKL7160102171YQ
                                                                                                    &trackNumber=CJPKL7160102171YQ
                                                                                                    &trackNumber=CJPKL7160102171YQ
Parameter Definition Type Required Length Note
trackNumber trackNumber string Y 200 batch query

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": [
        {
            "trackingNumber": "CJPKL7160102171YQ",
            "logisticName": "CJPacket Sensitive",
            "trackingFrom": "CN",
            "trackingTo": "US",
            "deliveryDay": "13",
            "deliveryTime": "2021-06-17 07:04:04",
            "trackingStatus": "In transit",
            "lastMileCarrier": "CJPacket",
            "lastTrackNumber": "926112903032124"
        }
    ],
    "requestId": "3426e927-8c50-4687-9ced-623e77d55bd0",
    "success": true
}
Field Definition Type Length Note
trackingNumber tracking number string 200
trackingFrom from string 20
trackingTo to string 20
deliveryDay Delivery day string 200
deliveryTime Delivery time string 200
trackingStatus tracking status string 200
lastMileCarrier last mile carrier string 200
lastTrackNumber last mile tracking number string 200

error

{
    "code": 1600100,
    "result": false,
    "message": "Param error",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1" 
}
Field Definition Type Length Note
code error code int 20 Reference error code
result Whether or not the return is normal boolean 1
message return message string 200
data return data object interface data return
requestId requestId string 48 Flag request for logging errors