# 7 Dispute

# 1 Select the list of disputed products(GET)

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/disputeProducts

# CURL

curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/disputes/disputeProducts?orderId=CJPKL7160102171YQ' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Parameter Definition Type Required Length Note
orderId CJ order id string Y 100

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": {
        "orderId": "75727832844206081",
        "orderNumber": "1627572766607937536",
        "productInfoList": [
            {
                "lineItemId": "27572784056172547",
                "cjProductId": "70030020423733248",
                "cjVariantId": "70030020612476928",
                "canChoose": true,
                "price": 23.00,
                "quantity": 1,
                "cjProductName": "Hellpoo",
                "cjImage": "http://d847fcac-392f-4168-8b06-a580a8368dff.jpg",
                "sku": "CJSJ1041743",
                "supplierName": "banggood"
            }
        ]
    },
    "requestId": "11edc6cc84254bb4b3ac74299d5db197",
    "success": true
}
Field Definition Type Length Note
orderId CJ order id string 200
orderNumber customer order number string 200
productInfoList Product information list Object[]
lineItemId lineItem id string 100
cjProductId CJ product id string 100
cjVariantId CJ variant id string 100
canChoose Is it possible to check to open a dispute boolean true:yes, false:no
price product price BigDecimal (18,2) Unit: $ (USD)
quantity quantity integer 20
cjProductName CJ product name string 200
cjImage CJ product image string 100
sku sku string 100
supplierName supplier name 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

# 2 Confirm the dispute(POST)

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/disputeConfirmInfo

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/disputes/disputeConfirmInfo' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                --data-raw '{
                    "orderId": "62650625018974208",
                    "productInfoList": [
                        {
                            "lineItemId": "1626506252349808640",
                            "quantity": "1"
                        }
                      ]
                    }'
Parameter Definition Type Required Length Note
orderId CJ order id string Y 100
productInfoList product information object[] Y
lineItemId lineItem id string N
quantity quantity integer Y
price price BigDecimal Y (18,2) Unit: $ (USD)

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": {
        "orderId": "265062501897420801",
        "orderNumber": "1626506237791440896",
        "maxProductPrice": 23.00,
        "maxPostage": 0.00,
        "maxIossTaxAmount": 0,
        "maxIossHandTaxAmount": 0,
        "maxAmount": 23.00,
        "expectResultOptionList": [
            "1"
        ],
        "productInfoList": [
            {
                "lineItemId": "1626506252349808640",
                "cjProductId": "1570030020423733248",
                "cjVariantId": "1570030020612476928",
                "canChoose": false,
                "price": 23.00,
                "quantity": 1,
                "cjProductName": "Hellpoo",
                "cjImage": "https://d847fcac-392f-4168-8b06-a580a8368dff.jpg",
                "sku": "CJSJ1041743-A",
                "supplierName": "banggood"
            }
        ],
        "disputeReasonList": [
            {
                "disputeReasonId": 1,
                "reasonName": "Unfulfilled Order Cancellation"
            }
        ]
    },
    "requestId": "af336b7bdc364e6391b9d558690b1521",
    "success": true
}
Field Definition Type Length Note
orderId CJ order id string 200
orderNumber customer order number string 200
expectResultOptionList expected result string[] 1: Refund , 2:Reissue
maxProductPrice Product price BigDecimal (18,2) Unit: $ (USD)
maxPostage Postage BigDecimal (18,2) Unit: $ (USD)
maxIossTaxAmount ioss tax amount BigDecimal (18,2) Unit: $ (USD)
maxIossHandTaxAmount ioss tax fee amount BigDecimal (18,2) Unit: $ (USD)
maxAmount Apply for refund amount BigDecimal (18,2) Unit: $ (USD)
productInfoList product information Object[]
canChoose Whether to check open dispute boolean 2 false or ture
price price BigDecimal (18,2) Unit: $ (USD)
quantity quantity integer 20
lineItemId lineItem id string 100
cjProductId CJ product id string 100
cjVariantId CJ variant id string 100
cjProductName CJ product name string 200
cjImage CJ product image string 100
sku CJ sku string 100
supplierName supplier name string 200
disputeReasonList dispute reason object []
disputeReasonId dispute reason id integer 20
reasonName dispute reason name (EN) 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

# 3 Create dispute(POST)

Note: Disputes can only be created via this API for orders that were created through the API. Orders that were not created through the API cannot have disputes created via this interface.

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/create

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/disputes/create' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                 --data-raw '{
                    "orderId": "275727832844206081",
                    "businessDisputeId": "0000001266",
                    "disputeReasonId": 1,
                    "expectType": 1,
                    "refundType": 1,
                    "messageText": "gfhfghfghfgh",
                    "imageUrl": [],
                    "productInfoList": [
                        {
                            "lineItemId": "1627572784056172547",
                            "quantity": "1"
                        }
                    ]
                }'
Parameter Definition Type Required Length Note
businessDisputeId customer business id, 唯一值 string Y 100
orderId CJ order id string Y 100
disputeReasonId dispute reason id integer Y 10
expectType expect type integer Y 20 1: Refund , 2:Reissue
refundType Refund type integer Y 20 1:balance , 2:platform
messageText text message string Y 500
imageUrl image url string [] N 200
videoUrl video url string [] N 200
productInfoList product information object[]
price price BigDecimal Y (18,2) Unit: $ (USD)
lineItemId lineItem id string N 100
quantity quantity integer Y 10

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": true,
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
code status code int 20 200 means the dispute was created successfully
result whether the request is successful boolean 1
message return message string 200
data whether the dispute was created successfully boolean 1 returns true on success
requestId request id string 48 used for troubleshooting
success whether the call succeeded boolean 1 true-success, false-failed

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

# 4 Cancel dispute(POST)

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/cancel

# CURL

curl --location --request POST 'https://developers.cjdropshipping.com/api2.0/v1/disputes/cancel' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                 --data-raw '{
                        "orderId": "J1623672949997490176",
                        "disputeId": "SH1623673863466725376"
                    }'
Parameter Definition Type Required Length Note
orderId CJ order id string Y 100
disputeId CJ dispute id string Y 100

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": true,
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
code status code int 20 200 means the dispute was canceled successfully
result whether the request is successful boolean 1
message return message string 200
data whether the dispute was canceled successfully boolean 1 returns true on success
requestId request id string 48 used for troubleshooting
success whether the call succeeded boolean 1 true-success, false-failed

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

# 5 Query the list of disputes(GET)

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/getDisputeList

# CURL

curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/disputes/getDisputeList' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Parameter Definition Type Required Length Note
orderId CJ order id string N 100
disputeId dispute id integer N 10
orderNumber customer order number string N 100
pageNum page number integer N 10 default: 1
pageSize page size integer N 10 default: 10

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": {
        "pageNum": 1,
        "pageSize": 10,
        "total": 1,
        "list": [
            {
                "id": "SH1623673863466725376",
                "shopId": "1588478917529051136",
                "shopName": "bo te_api",
                "status": "Processing",
                "disputeReason": "Item not received",
                "replacementAmount": 0.00,
                "resendOrderCode": "",
                "money": 0.00,
                "finallyDeal": null,
                "createDate": "2025-01-15 10:30:00",
                "productList": []
            }
        ]
    },
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
pageNum page number int 20
pageSize page size int 20
total total int 20
list dispute list List
- status dispute status string 20
- id dispute id string 100
- shopId shop id string 100 May be empty for archived orders
- shopName shop name string 200 May be empty for archived orders
- disputeReason dispute reason string 200
- replacementAmount Reissue amount BigDecimal (18,2) Unit: $ (USD)
- resendOrderCode Reissue order id string 100
- money final refund amount BigDecimal (18,2) Unit: $ (USD)
- finallyDeal final negotiation result integer 10 1:Refund, 2: Reissue, 3: Reject
- createDate create date string 50 millisecond timestamp
- updateDate last update time string 50 millisecond timestamp. See "About updateDate" below
- productList product information Object[]
-- image product image string 200
-- price product price BigDecimal (18,2) Unit: $ (USD)
-- lineItemId lineItem id string 100
-- cjProductId CJ product id string 100
-- cjVariantId CJ variant id string 100
-- productName product name string 200
-- supplierName supplier name 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

# About updateDate

updateDate is the last-modified time of the dispute record. Use it to detect that a dispute has moved on (including a new reply from CJ support) without polling each dispute's detail.

Do not use updateDate as the only cursor for incremental sync

This field is the update time of the dispute record row, not the maximum timestamp across every action in the dispute lifecycle. Records exist whose updateDate is earlier than their final processing time, so pulling only updateDate > lastSyncTime will miss disputes.

Recommended usage: use updateDate for change detection, and additionally run a periodic full re-pull by create-date range as a safety net.

# 6 Get dispute detail(GET)

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/getDisputeDetail

# CURL

curl --location --request GET 'https://developers.cjdropshipping.com/api2.0/v1/disputes/getDisputeDetail?disputeId=12345' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Parameter Definition Type Required Length Note
disputeId dispute id string Y 100

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": {
        "id": "SH1623673863466725376",
        "shopId": "1588478917529051136",
        "shopName": "bo te_api",
        "status": "Processing",
        "disputeReason": "Item not received",
        "replacementAmount": 0.00,
        "resendOrderCode": "",
        "money": 12.50,
        "refundAmount": 12.50,
        "finallyDeal": 1,
        "createDate": 1736928600000,
        "refundDetails": [
            {
                "type": "PRODUCT_COST",
                "typeName": "Product Cost",
                "amount": 10.00
            },
            {
                "type": "SHIPPING_COST",
                "typeName": "Shipping Cost",
                "amount": 2.50
            }
        ],
        "productList": [
            {
                "image": "https://example.com/image.jpg",
                "price": 10.00,
                "productCode": "CJPROD001",
                "productId": "pid001",
                "productName": "Sample Product",
                "standId": "vid001",
                "supplierName": "Supplier A"
            }
        ]
    },
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
id dispute id string 100
shopId shop id string 100 May be empty for archived orders
shopName shop name string 200 May be empty for archived orders
status dispute status string 20
disputeReason dispute reason string 200
replacementAmount reissue amount BigDecimal (18,2) Unit: $ (USD)
resendOrderCode reissue order id string 100
money final refund amount BigDecimal (18,2) Unit: $ (USD)
refundAmount final refund amount BigDecimal (18,2) Unit: $ (USD), same value as money
finallyDeal final negotiation result integer 10 1:Refund, 2: Reissue, 3: Reject
createDate create date (timestamp ms) long 20
refundDetails refund cost breakdown Object[]
- type cost type string 50 e.g. PRODUCT_COST / SHIPPING_COST / IOSS_TAX / IOSS_HANDLING_FEE
- typeName cost type name string 50 e.g. Product Cost / Shipping Cost / IOSS Tax / IOSS Handling Fee
- amount amount BigDecimal (18,2) Unit: $ (USD)
productList product information Object[]
- image product image string 200
- price product price BigDecimal (18,2) Unit: $ (USD)
- productCode product code string 100
- productId product id string 100
- productName product name string 200
- standId variant id string 100
- supplierName supplier name 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

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": {
        "id": "12345",
        "status": "Processing",
        "disputeReason": "Item not received",
        "productList": []
    },
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
id dispute id string 100
status dispute status string 50
disputeReason dispute reason string 200
replacementAmount Reissue amount BigDecimal (18,2) Unit: $ (USD)
resendOrderCode Reissue order id string 100
money final refund amount BigDecimal (18,2) Unit: $ (USD)
finallyDeal final negotiation result integer 10 1:Refund, 2: Reissue, 3: Reject
createDate create date string 50
productList product information Object[]
- image product image string 200
- price product price BigDecimal (18,2) Unit: $ (USD)
- productCode product code string 100
- productId product id string 100
- productName product name string 200
- standId variant id string 100
- supplierName supplier name 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

# 7 Query dispute messages(POST)

Retrieve the conversation between you and CJ support for a dispute, including text and attachments, so you can reproduce the full negotiation history in your own system without logging in to the CJ dashboard.

Coverage

This endpoint returns all disputes under your API account, not only those on orders created via API. Disputes on Excel-imported orders, dropshipping orders and manually created orders are all included. Access is decided by dispute ownership, not by the channel the order came from.

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/getDisputeMessages

# CURL

curl --location 'https://developers.cjdropshipping.com/api2.0/v1/disputes/getDisputeMessages' \
                --header 'Content-Type: application/json' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                --data '{"disputeId":"SH2607291323371283500","pageNum":1,"pageSize":10}'
Parameter Definition Type Required Length Note
disputeId dispute id string Y 100
pageNum page number integer N 10 default 1
pageSize items per page integer N 10 default 10, max 50

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": {
        "pageNum": 1,
        "pageSize": 10,
        "total": 2,
        "list": [
            {
                "messageId": "1770485313446354944",
                "orderId": "SD2607290935060338700",
                "userType": "1",
                "createDate": 1785331419000,
                "message": "package not received",
                "imageUrl": ["https://your-domain.com/evidence-1.jpg"],
                "videoUrl": []
            },
            {
                "messageId": "1770485313446354945",
                "orderId": "SD2607290935060338700",
                "userType": "2",
                "createDate": 1785331431000,
                "message": "The order has been refunded.",
                "imageUrl": [],
                "videoUrl": []
            }
        ]
    },
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
pageNum current page int 20
pageSize items per page int 20
total total items int 20 see "About pagination" below
list message list List ordered by time ascending
- messageId message id string 100
- orderId cj order id string 100
- userType sender string 10 1 - buyer (you), 2 - CJ support
- createDate message time long 20 millisecond timestamp
- message message body string 500 may be empty when only files were sent
- imageUrl image attachments string[] publicly accessible URLs, may be empty
- videoUrl video attachments string[] publicly accessible URLs, may be empty

About pagination

In the current version total and list come from two different stores, so the pagination parameters are not exact: the size of list may differ from pageSize, and paging may return overlapping content.

Recommended usage: set pageSize to its maximum (50) and fetch everything in one call instead of paging. Virtually all disputes have far fewer than 50 messages. If total is greater than the number of items returned, trust list. This limitation will be fixed in a future release.

error

{
    "code": 1005,
    "result": false,
    "message": "Please check it carefully.",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Code Meaning
1005 The dispute does not exist, or it does not belong to your account. Both cases return the same code — check the dispute id first.

# 8 Reply dispute(POST)

Append a message to an ongoing dispute, optionally with image/video evidence, so you can negotiate from your own system without logging in to the CJ dashboard.

# URL

https://developers.cjdropshipping.com/api2.0/v1/disputes/reply

# CURL

curl --location 'https://developers.cjdropshipping.com/api2.0/v1/disputes/reply' \
                --header 'Content-Type: application/json' \
                --header 'CJ-Access-Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
                --data '{
                    "disputeId": "SH2607291323371283500",
                    "messageText": "Here is the unboxing video.",
                    "imageUrl": ["https://your-domain.com/evidence-1.jpg"],
                    "videoUrl": []
                }'
Parameter Definition Type Required Length Note
disputeId dispute id string Y 100
messageText message body string Y 500 must not be blank; emojis are stripped
imageUrl image attachments string[] N see "About attachments" below
videoUrl video attachments string[] N see "About attachments" below

About attachments

CJ does not provide a file upload endpoint. Pass publicly accessible URLs that you host yourself in imageUrl / videoUrl, the same way as the "Create dispute" endpoint. Make sure those URLs stay reachable while the dispute is being processed.

Dispute statuses that accept replies

Only disputes in the following statuses accept new messages. Any other status returns 9063:

Status Meaning
100 Pending processing
200 Pending review
300 Refund under finance review
400 On hold
510 Supplier self-ship refund under finance review
530 Paying
600 Completed

Replies are accepted on completed disputes (600), but such messages are for communication only and do not change the settled outcome.

This endpoint is not idempotent

Do not blindly retry on timeout or network failure — doing so inserts a duplicate message into the dispute. Call "Query dispute messages" first to check whether your previous request was already recorded, then decide whether to resend.

# Return

success

{
    "code": 200,
    "result": true,
    "message": "Success",
    "data": true,
    "requestId": "0242ad78-eea2-481d-876a-7cf64398f07f",
    "success": true
}
Field Definition Type Length Note
data whether it was sent boolean 1
requestId requestId string 48 for log lookup

error

{
    "code": 9063,
    "result": false,
    "message": "The dispute is in a status that does not accept new messages.",
    "data": null,
    "requestId": "323fda9d-3c94-41dc-a944-5cc1b8baf5b1"
}
Code Meaning
9063 The dispute's current status does not accept new messages — see the whitelist above
1005 The dispute does not exist, or it does not belong to your account (same code for both)