Shein Get Orders
Version | Date | Created / Updated | Notes |
---|---|---|---|
v1.0 | 29.05.2024 | Bogomil Pavlov | First publish |
v1.1 | 10.06.2024 | Bogomil Pavlov | Combine order items into single line with multiple qty |
v1.2 | 13.06.2024 | Bogomil Pavlov | Add refund with modified orders |
v1.3 | 20.08.2024 | Bogomil Pavlov | Changes in the endTime |
v1.4 | 17.01.2025 | Hristiyan | Changes in status mapping |
Get Orders consist of couple of steps which we need to make before we receive the full order information. First we need to get the list of orders from where we will receive all new order marketplace ids which will then additional request the order item information and order addresses. So we will need to make 3 consequent requests in order to obtain the full order information. The best case for us is to store the order once with all the data populated instead of keeping the order without items and without address for a bit in the system.
All validations, triggers and standardizations which are not mentioned here are as per Order management general requirements
Get Order List
The first run of the cron should download orders from the last 90 days. Once we have a record in last_date_run table we want to pick that date and overlap it with 1 hour. The specific case here is that we must specify startTime and endTime but they should be no more than 48hours so if we would like to get all orders from the last 90 days we have to make 45 request each covering 48 hours period for example the first run of the cron will have "startTime": "2024-05-29 12:00:00" "endTime": "2024-05-31 23:59:59" and then the next one "startTime": "2024-05-30 12:00:00" "endTime": "2024-05-31 23:59:59" etc.
API Call: POST /open-api/order/order-list API Docs: https://open.sheincorp.com/documents/apidoc/detail/2000157-2000001 Body:
{
"queryType": 1,
"startTime": "2023-08-09 12:00:00",
"endTime": "2023-08-10 23:59:59",
"page": 1,
"pageSize": 30,
"orderStatus": 1
}
Request Parameters (Request Body)
Parameter Name | Data Type | Required | Hemi FIeld | Comment |
---|---|---|---|---|
queryType | integer | Yes | Get New Orders will use type = 1 | |
Get Modified Orders will use type = 2 | query type. 1: retrieving new order, 2: retrieving updated order | |||
startTime | string | Yes | startTime,endTime range limit 48 hours, total query result count limit 10000. | Starting time(2023-01-30 15:38:29) timeZone UTC+8 |
endTime | string | Yes | startTime,endTime range limit 48 hours, total query result count limit 10000. | End Time(2023-01-30 15:38:29) timeZone UTC+8 |
<v1.3>Since we are GMT based when an order get updated we will receive a date in the future and there will be a delay of 8 hours until we update the order so for Get modified orders instead of now() we want to add extra 20hours which will allows us to receive with get modified orders all updated orders on time.</v1.3> | ||||
page | integer | Yes | Used for the pagination | current page |
pageSize | integer | Yes | Hardcoded as “30” | records per page(Range of values per page size 1 ~ 30) |
orderStatus | integer | No | We want to receive all orders despite of their status so we do not want to specify any id here | Order Status, Status{code}:Pending{1}, To Be Shipped{2}, To Be Collected by SHEIN{7}, To Be Shipped by SHEIN{3}, Shipped{4}, Received{5}, Refund{ 6} |
Sample request:
POST https://openapi.sheincorp.com**/open-api/order/order-list**
Body:
{
"queryType":1,
"startTime": "2024-05-29 12:00:00",
"endTime": "2024-05-30 23:59:59",
"page": 1,
"pageSize": 30,
"orderStatus": 1
}
Sample response: 200OK
{
"code": "0",
"msg": "OK",
"info": {
"count": 3,
"orderList": [
{
"orderNo": "GSUNGP26B0004CC",
"orderStatus": "1",
"orderCreateTime": "2024-05-29 22:09:01",
"orderUpdateTime": "2024-05-29 22:09:02"
},
{
"orderNo": "GSUNGP26B0004CW",
"orderStatus": "1",
"orderCreateTime": "2024-05-29 22:09:01",
"orderUpdateTime": "2024-05-29 22:09:02"
},
{
"orderNo": "GSUNGP26B0004C3",
"orderStatus": "1",
"orderCreateTime": "2024-05-29 22:09:01",
"orderUpdateTime": "2024-05-29 22:09:02"
}
]
},
"bbl": {}
}
Response Mapping:
Shein FIeld | Hemi Field | Comment | ||
---|---|---|---|---|
code | N/A | |||
msg | N/A | |||
info | ||||
count | N/A | |||
orderList | ||||
orderNo | Orders > Marketplace Order ID | |||
orderStatus | Orders > Marketplace status | Status Mapping Provided | ||
orderCreateTime | Orders > Order Created Time | |||
orderUpdateTime | Orders > Order Modified Time | The new field which is requested from here https://www.notion.so/threecolts/Order-management-general-requirements-c345c9248c074bb1a06bbad16203f588 | ||
bbl | N/A |
Order Status Mapping:
Shein Status | Hemi Status | Comment |
---|---|---|
Pending{1} | Pending | |
To Be Shipped{2 | Ready For Shipping | |
To Be Collected by SHEIN{7 | <v1.4>Shipped </v1.4> | |
To Be Shipped by SHEIN{3} | Ready For Shipping | |
Shipped{4} | Shipped | <v1.2>If we have and order which status is orderStatus 4 we want to mark the order as shipped and store the relevant details with the order shipment row |
Received{5} | Shipped | If we have and order which status is orderStatus 5 we want to mark the order as shipped and store the relevant details with the order shipment row |
Refund{ 6} | Cancelled | If we have an order which orderStatus is 6 we want to mark the whole order as cancelled and store the relevant details with the refund row.</v1.2> |
Sample Error Response: 200OK
{
"code": "9999400",
"msg": "The time difference between query start time and end time cannot be greater than 172800000 ms",
"info": {},
"bbl": {}
}
Get Order Details
With get order details we will receive the other order information related to the products, statuses etc. In order to obtain the order details we need to specify the orderNo (Orders > Marketplace Order ID) in the body which can be an array so we can call up to 30 order ids.
API Call: POST /open-api/order/order-detail API Docs: https://open.sheincorp.com/documents/apidoc/detail/3000188-2000001 Body:
{
"orderNoList": ["GSUNGE5670004CB","GSUNGP26B0004CC"]
}
Request Parameters (Request Body)
Parameter Name | Data Type | Required | Hemi FIeld | Comment |
---|---|---|---|---|
orderNoList | array | Yes | Orders > Marketplace Order ID |
Sample request:
POST https://openapi.sheincorp.com**/open-api/order/order-detail**
Body:
{
"orderNoList": ["GSUNGE5670004CB","GSUNGP26B0004CC"]
}
Sample Response: 200OK
{
"code": "0",
"msg": "OK",
"info": [
{
"orderNo": "GSUNGE5670004CB",
"orderType": 1,
"performanceType": 2,
"orderStatus": 1,
"isCod": 2,
"isOverLimitOrder": 2,
"unpackingStatus": null,
"orderTag": 0,
"deliveryType": 1,
"printOrderStatus": 2,
"invoiceStatus": 2,
"orderGoodsInfoList": [
{
"goodsId": 2230236437987169601,
"skuCode": "I63dv4eq7u8z",
"skc": "sm24051725652765",
"goodsSn": "101",
"sellerSku": "101",
"goodsStatus": 1,
"newGoodsStatus": 1,
"skuAttribute": [
{
"attrValueId": "1000034,387",
"attrName": "红色1-L-中文",
"language": "CN"
},
{
"attrValueId": "1000034,387",
"attrName": "Red-L",
"language": "US"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "PT"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "TH"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "ES"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "IT"
}
],
"goodsTitle": "product_name_fr",
"spuPicURL": "http://imgdeal-test01.shein.com/images3_pi/2024/05/17/6e/17159341131307119591_thumbnail_220x293.png",
"goodsWeight": 42.00,
"storageTag": 1,
"performanceTag": 2,
"goodsExchangeTag": 2,
"unpackingGroupNo": "",
"unpackingGroupInvoiceStatus": null,
"beExchangeEntityId": 0,
"orderCurrency": "EUR",
"sellerCurrencyPrice": 20.00,
"orderCurrencyStoreCouponPrice": 0.00,
"orderCurrencyPromotionPrice": 0.00,
"commission": 0.00,
"commissionRate": 0.0000,
"serviceCharge": 0.00,
"performanceServiceCharge": 0.00,
"estimatedIncome": 20.00,
"spuName": "m2405172565",
"saleTax": 0,
"warehouseCode": null,
"warehouseName": null,
"sellerCurrencyDiscountPrice": 20.00
},
{
"goodsId": 2230236437987169622,
"skuCode": "I63dv4eq7u8z",
"skc": "sm24051725652765",
"goodsSn": "101",
"sellerSku": "101",
"goodsStatus": 1,
"newGoodsStatus": 1,
"skuAttribute": [
{
"attrValueId": "1000034,387",
"attrName": "红色1-L-中文",
"language": "CN"
},
{
"attrValueId": "1000034,387",
"attrName": "Red-L",
"language": "US"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "PT"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "TH"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "ES"
},
{
"attrValueId": "1000034,387",
"attrName": "红色1-L",
"language": "IT"
}
],
"goodsTitle": "product_name_fr",
"spuPicURL": "https://imgdeal-test01.shein.com/images3_pi/2024/05/17/6e/17159341131307119591.png",
"goodsWeight": 42.00,
"storageTag": 0,
"performanceTag": 2,
"goodsExchangeTag": 3,
"unpackingGroupNo": "",
"unpackingGroupInvoiceStatus": null,
"beExchangeEntityId": 2230236437987169601,
"orderCurrency": "EUR",
"sellerCurrencyPrice": 20.00,
"orderCurrencyStoreCouponPrice": 0.00,
"orderCurrencyPromotionPrice": 0.00,
"commission": 0.00,
"commissionRate": 0.0000,
"serviceCharge": 0.00,
"performanceServiceCharge": 0.00,
"estimatedIncome": 20.00,
"spuName": "m2405172565",
"saleTax": 0.00,
"warehouseCode": null,
"warehouseName": null,
"sellerCurrencyDiscountPrice": 20.00
}
],
"packageWaybillList": [
{
"packageNo": "GC24052831930175490",
"waybillNo": "",
"carrier": "",
"carrierCode": "",
"productInventoryList": [
{
"productId": "2230236437987169601"
}
],
"packageLabel": "",
"sortingCode": "",
"expressSortingCode": "",
"isCutOffSeller": 2
}
],
"orderCurrency": "EUR",
"productTotalPrice": 20.00,
"storeDiscountTotalPrice": 0.00,
"promotionDiscountTotalPrice": 0.00,
"totalCommission": 0.00,
"totalServiceCharge": 0.00,
"totalPerformanceServiceCharge": 0.00,
"estimatedGrossIncome": 20.00,
"totalSaleTax": 0.00,
"orderTime": "2024-05-28T16:54:30.000+0800",
"paymentTime": "2024-05-28T16:54:32.000+0800",
"orderAllocateTime": "2024-05-28T16:55:01.000+0800",
"requestDeliveryTime": "2024-05-30T16:55:01.000+0800",
"sellerDeliveryTime": "",
"warehouseDeliveryTime": "",
"printingTime": "",
"scheduleDeliveryTime": "",
"pickUpTime": "",
"orderReceiptTime": "",
"orderRejectionTime": "",
"orderReportedLossTime": "",
"orderReturnTime": "",
"orderMsgUpdateTime": "2024-05-29T10:51:03.936+0800",
"billNo": "GSUNGE5670004CB",
"salesArea": 2,
"stockMode": 3,
"salesSite": "shein-fr",
"storeCode": 9876405759,
"settleActuallyPrice": 0.00,
"unProcessReason": [
5,
7
],
"packageInvoiceProblems": [
{
"problemCode": null,
"problemDescEnglish": "The order package requires a CTE logistics invoice, and the platform logistics provider is currently invoicing. Please be patient and wait",
"problemField": null,
"proposalEnglish": null,
"packageNo": "GC24052831930175490"
}
],
"expectedCollectTime": ""
},
{
"orderNo": "GSUNGP26B0004CC",
"orderType": 1,
"performanceType": 2,
"orderStatus": 1,
"isCod": 2,
"isOverLimitOrder": 2,
"unpackingStatus": null,
"orderTag": 0,
"deliveryType": 1,
"printOrderStatus": 1,
"invoiceStatus": 2,
"orderGoodsInfoList": [
{
"goodsId": 2230236437987170376,
"skuCode": "I1omh30jb5ld",
"skc": "sMM24022344403001",
"goodsSn": "6480df7a5092fc5c267b1440",
"sellerSku": "2717803576517155638",
"goodsStatus": 1,
"newGoodsStatus": 1,
"skuAttribute": [
{
"attrValueId": "544,474",
"attrName": "红色-单一尺寸",
"language": "CN"
},
{
"attrValueId": "544,474",
"attrName": "Red-one-size",
"language": "US"
},
{
"attrValueId": "544,474",
"attrName": "Vermelho-Tamanho Único",
"language": "PT"
},
{
"attrValueId": "544,474",
"attrName": "สีแดง-ไซส์เดียว",
"language": "TH"
},
{
"attrValueId": "544,474",
"attrName": "Rojo-Unitallai",
"language": "ES"
},
{
"attrValueId": "544,474",
"attrName": "Rosso-Tagli Unica",
"language": "IT"
}
],
"goodsTitle": "GoodsName111111111111",
"spuPicURL": "http://imgdeal-test01.shein.com/pi_img/2021/11/03/16359230894287290938_thumbnail_220x293.jpg",
"goodsWeight": 500.00,
"storageTag": 1,
"performanceTag": 2,
"goodsExchangeTag": 1,
"unpackingGroupNo": "",
"unpackingGroupInvoiceStatus": null,
"beExchangeEntityId": 0,
"orderCurrency": "EUR",
"sellerCurrencyPrice": 24.31,
"orderCurrencyStoreCouponPrice": 0.00,
"orderCurrencyPromotionPrice": 0.00,
"commission": 0.00,
"commissionRate": 0.0000,
"serviceCharge": 0.00,
"performanceServiceCharge": 0.00,
"estimatedIncome": 24.31,
"spuName": "MM2402234440",
"saleTax": 0.00,
"warehouseCode": null,
"warehouseName": null,
"sellerCurrencyDiscountPrice": 60.83
},
{
"goodsId": 2230236437987170377,
"skuCode": "I1omh30jb5ld",
"skc": "sMM24022344403001",
"goodsSn": "6480df7a5092fc5c267b1440",
"sellerSku": "2717803576517155638",
"goodsStatus": 1,
"newGoodsStatus": 1,
"skuAttribute": [
{
"attrValueId": "544,474",
"attrName": "红色-单一尺寸",
"language": "CN"
},
{
"attrValueId": "544,474",
"attrName": "Red-one-size",
"language": "US"
},
{
"attrValueId": "544,474",
"attrName": "Vermelho-Tamanho Único",
"language": "PT"
},
{
"attrValueId": "544,474",
"attrName": "สีแดง-ไซส์เดียว",
"language": "TH"
},
{
"attrValueId": "544,474",
"attrName": "Rojo-Unitallai",
"language": "ES"
},
{
"attrValueId": "544,474",
"attrName": "Rosso-Tagli Unica",
"language": "IT"
}
],
"goodsTitle": "GoodsName111111111111",
"spuPicURL": "http://imgdeal-test01.shein.com/pi_img/2021/11/03/16359230894287290938_thumbnail_220x293.jpg",
"goodsWeight": 500.00,
"storageTag": 1,
"performanceTag": 2,
"goodsExchangeTag": 1,
"unpackingGroupNo": "",
"unpackingGroupInvoiceStatus": null,
"beExchangeEntityId": 0,
"orderCurrency": "EUR",
"sellerCurrencyPrice": 24.31,
"orderCurrencyStoreCouponPrice": 0.00,
"orderCurrencyPromotionPrice": 0.00,
"commission": 0.00,
"commissionRate": 0.0000,
"serviceCharge": 0.00,
"performanceServiceCharge": 0.00,
"estimatedIncome": 24.31,
"spuName": "MM2402234440",
"saleTax": 0.00,
"warehouseCode": null,
"warehouseName": null,
"sellerCurrencyDiscountPrice": 60.83
}
],
"packageWaybillList": [
{
"packageNo": "GC24052941807269891",
"waybillNo": "",
"carrier": "",
"carrierCode": "",
"productInventoryList": [
{
"productId": "2230236437987170376"
},
{
"productId": "2230236437987170377"
}
],
"packageLabel": "",
"sortingCode": "",
"expressSortingCode": "",
"isCutOffSeller": 2
}
],
"orderCurrency": "EUR",
"productTotalPrice": 48.62,
"storeDiscountTotalPrice": 0.00,
"promotionDiscountTotalPrice": 0.00,
"totalCommission": 0.00,
"totalServiceCharge": 0.00,
"totalPerformanceServiceCharge": 0.00,
"estimatedGrossIncome": 48.62,
"totalSaleTax": 0.00,
"orderTime": "2024-05-29T22:08:00.000+0800",
"paymentTime": "2024-05-29T22:08:01.000+0800",
"orderAllocateTime": "2024-05-29T22:09:01.000+0800",
"requestDeliveryTime": "2024-05-31T22:09:01.000+0800",
"sellerDeliveryTime": "",
"warehouseDeliveryTime": "",
"printingTime": "",
"scheduleDeliveryTime": "",
"pickUpTime": "",
"orderReceiptTime": "",
"orderRejectionTime": "",
"orderReportedLossTime": "",
"orderReturnTime": "",
"orderMsgUpdateTime": "2024-05-29T22:09:02.437+0800",
"billNo": "GSUNGP26B0004CC",
"salesArea": 1,
"stockMode": 3,
"salesSite": "shein-fr",
"storeCode": 9876405759,
"settleActuallyPrice": 0.00,
"unProcessReason": [],
"packageInvoiceProblems": [
{
"problemCode": null,
"problemDescEnglish": "The order package requires a CTE logistics invoice, and the platform logistics provider is currently invoicing. Please be patient and wait",
"problemField": null,
"proposalEnglish": null,
"packageNo": "GC24052941807269891"
}
],
"expectedCollectTime": ""
}
],
"bbl": {}
}
Response Mapping:
Shein FIeld | Hemi Field | Comment | ||||
---|---|---|---|---|---|---|
code | N/A | |||||
msg | N/A | |||||
info | ||||||
orderNo | Orders > Marketplace Order ID | |||||
orderType | Orders Shein > Order Type | Type: 1 order, 2 exchange orders | ||||
Please note we want to store the value not the id | ||||||
performanceType | Orders > Order Type | 1: order fulfill by SHEIN integrated logistics channel, |
2: order fulfill by non-SHEIN integrated logistics channel, seller fulfill order to buyer directly
If we have 2 = “Home Delivery” If we have 1 = “Marketplace Fulfilled” | orderStatus | Orders > Marketplace Status | Based on the Order Status Mapping we want to map our internal tool status Orders > Status. <v1.2> If we have shipped or cancelled orders we want to to store all details as per abstraction</v1.2> | |||||
---|---|---|---|---|---|---|---|---|
isCod | Order Payment > Status |
AND Orders > Order Payment Method | Whether COD order (1-yes; 2-no)
If we have 1 we want to set the Order Payment > Status = “Pending” and Order Payment Method = COD If we have 2 we want to set the Order Payment > Status = “Completed” and Order Payment Method = CreditCard | | | isOverLimitOrder | | | | N/A | whether it is an over-limit unpacking order (1-yes; 2-no), if yes, the seller needs to confirm the unpacking (/open-api/order/unpacking-group-confirm) or cancel the unpacking (/open -api/order/unpacking-group-remove). | | | unpackingStatus | | | | N/A | | | | orderTag | | | | Orders Shein > Order Tag | Order label, 0 normal order, 1- "problem order", 4 special order, 5 urgent order Please note we want to store the value not the id | | | deliveryType | | | | N/A | Delivery mode, 1 direct delivery, 2 combined orders | | | printOrderStatus | | | | Orders Shein > Order Print Status | Order status 1-can print order; 2-cannot print order Please note we want to store the value not the id | | | invoiceStatus | | | | N/A | Billing status: 1- billed, 2- not billed. To the BR seller, it turns from 2 to 1 after the order invoice info has been sync via sync-invoice-info API. | | | orderGoodsInfoList | | | | | | | | | goodsId | | | <v1.1>Order Item Line > Marketplace Order Item ID | ID of each order SKU. Even a SKU has more than one quantity, the goodsIds are unique for each quantity.
Please note we want to group the products with the same skuCode and store them on a single line with multiple quantity.
We may have the same SKU on a separate lines only when we have different prices or VAT.</v1.1> | | | | skuCode | | | Product In Order > Channel Item Id | ID of SHEIN SKU | | | | skc | | | N/A | ID of SHEIN SKC(stock keeping color) | | | | goodsSn | | | N/A | ID of Seller SPU | | | | sellerSku | | | Product In Order > SKU | ID of Seller SKU | | | | goodsStatus | | | N/A | | | | | newGoodsStatus | | | Product In Order > Status | order goods status, defined same with order status, order status description
Based on this status we have to check if we have Partially Shipped order.
<v1.2>Based on this status we have to check if we have cancelled products.</v1.2> | | | | skuAttribute | | | | | | | | | attrValueId | | Product In Order > Item Variations (Value) | Please note we want to use only “US” language | | | | | attrName | | Product In Order > Item Variations (Name) | Please note we want to use only “US” language | | | | | language | | N/A | Please note we want to use only “US” language | | | | goodsTitle | | | Product In Order > Item Title | product name | | | | spuPicURL | | | N/A | SPU main image URL | | | | goodsWeight | | | Product In Order > Weight(g) | commodity weight they use grams as well so no need for conversion | | | | storageTag | | | N/A | Stock tags, 1 in stock, 2 out of stock, 3 sold out | | | | performanceTag | | | N/A | Shipping mark: 1-shipped, 2-unshipped 3-signed for | | | | goodsExchangeTag | | | N/A | Commodity exchange logo: 1-Not exchanged; 2-Exchanged goods; 3-In Exchange for goods; 4-Delete exchanged goods | | | | unpackingGroupNo | | | N/A | unpacking group number for invoicing | | | | unpackingGroupInvoiceStatus | | | N/A | Billing status: 1- billed, 2- not billed, 3-to be re-upload. To the BR seller, it turns from 2 to 1 after the order invoice info has been sync via sync-invoice-info API. | | | | beExchangeEntityId | | | N/A | The id of the product being exchanged | | | | orderCurrency | | | N/A | To the SPP-Pro seller, it's the seller local currency. To the SPP-Basic seller, it's the seller settlement currency | | | | sellerCurrencyPrice | | | Product In Order > Item Price | The order goods selling price. To the SPP_Pro seller, it's the order goods selling price. To the SPP-Basic seller, it will respond to null. | | | | orderCurrencyStoreCouponPrice | | | Product In Order > Discount Amount | If we receive all types of discounts orderCurrencyStoreCouponPrice or orderCurrencyPromotionPrice or sellerCurrencyDiscountPricewe want to sum them. The store coupon amount, only apply to the SPP-Pro seller. | | | | orderCurrencyPromotionPrice | | | Product In Order > Discount Amount | The promotion discount amount, only apply to the SPP-Pro seller | | | | commission | | | N/A | The commission fee that SHEIN charge to the seller, only applies to the SPP-Pro seller | | | | commissionRate | | | N/A | The commission fee rate | | | | serviceCharge | | | N/A | The service fee that SHEIN charge to the SFS seller | | | | performanceServiceCharge | | | N/A | The fulfillment service fee that SHEIN charge to the seller | | | | estimatedIncome | | | N/A | The estimated income(ps:Ex estimatedIncome = sellerCurrencyPrice-orderCurrencyStoreCouponPrice-orderCurrencyPromotionPrice-commission-serviceCharge-performanceServiceCharge-saleTax) | | | | spuName | | | N/A | | | | | saleTax | | | Product In Order > Sales Tax Amount | goods sale tax | | | | warehouseCode | | | N/A | the warehouseCode | | | | warehouseName | | | N/A | the warehouseName | | | | sellerCurrencyDiscountPrice | | | Product In Order > Discount Amount | seller currency discount price | | | packageWaybillList | | | | | | | | | packageNo | | | N/A | | | | | waybillNo | | | <v1.3>Order Shipment > Tracking Number</v1.3> | <v1.3>This is available only when the order is shipped</v1.3> | | | | carrier | | | Order Shipment > Courrier | | | | | carrierCode | | | N/A | | | | | productInventoryList | | | | | | | | | productId | | | We can use these fields to add the Order Shipment Rows and check which products are in the package by matching the productId and goodsId | | | | packageLabel | | | N/A | Package label: 1-lost package, 2-stranded package | | | | sortingCode | | | N/A | | | | | expressSortingCode | | | N/A | | | | | isCutOffSeller | | | N/A | 1: means it is a CutOff package and no need to call /open-api/order/confirm-shipping API to make an appointment for delivery. 2: means it's not a CutOffer package. | | | orderCurrency | | | | Orders > Order Currency | | | | productTotalPrice | | | | Orders > Order Total Amount AND Order Payment > Total Amount | Since the total price is with the actual discounts we want to remove them so we need to make additional calculations when we have the discount - productTotalPrice - storeDiscountTotalPrice - promotionDiscountTotalPrice | | | storeDiscountTotalPrice | | | | Orders > Discount Value | | | | promotionDiscountTotalPrice | | | | Orders > Discount Value | | | | totalCommission | | | | Orders Shein > Order Commision | | | | totalServiceCharge | | | | N/A | | | | totalPerformanceServiceCharge | | | | N/A | | | | estimatedGrossIncome | | | | N/A | | | | totalSaleTax | | | | Orders > Total Sales Tax | | | | orderTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | paymentTime | | | | Order Payment > Payment Date AND Orders > Order Paid Time | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | orderAllocateTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | requestDeliveryTime | | | | Orders > Delivery By Date | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | sellerDeliveryTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | warehouseDeliveryTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | printingTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | scheduleDeliveryTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | pickUpTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | orderReceiptTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | orderRejectionTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | orderReportedLossTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | orderReturnTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | orderMsgUpdateTime | | | | N/A | Date format (yyyy-MM-dd'T'HH:mm:ss.SSSZ) | | | billNo | | | | N/A | OPS order number | | | salesArea | | | | N/A | Market area: 1-local sales, 2-cross border sales | | | stockMode | | | | N/A | Stock mode: 1-SHEIN self-stocking, 2-stocking to SHEIN warehouse (SHEIN Fulfillment Service), 3-not stocking to SHEIN warehouse | | | salesSite | | | | N/A | | | | storeCode | | | | N/A | | | | settleActuallyPrice | | | | N/A | | | | unProcessReason | | | | N/A | | | | packageInvoiceProblems | | | | | | | | | problemCode | | | N/A | | | | | problemDescEnglish | | | N/A | | | | | problemField | | | N/A | | | | | proposalEnglish | | | N/A | | | | | packageNo | | | N/A | | | | expectedCollectTime | | | | N/A | The expected collect time of CutOff package |
Based on the mapping we will have to automatically populate some of our internal fields:
Field Name | Comment |
---|---|
Orders > Order Subtotal Amount | |
Product In Order > Quantity | |
Order Payment > Transaction Id | Orders > Marketplace Order ID |
Sample Error Response: 200OK
{
"code": "9998935",
"msg": "Order information error",
"info": {},
"bbl": {}
}
Get Order Address
The address information can be requested separately using the get order address. Unfortunately the Get Order Address is order per order and we cannot specify more than one marketplace order id.
API Call: POST /open-api/order/export-address API Docs: https://open.sheincorp.com/documents/apidoc/detail/2000134-2000001 Body:
{
"orderNo":"GSUNGE5670004CB", "handleType": 2
}
Request Parameters (Request Body)
Parameter Name | Data Type | Required | Hemi FIeld | Comment |
---|---|---|---|---|
orderNo | array | Yes | Orders > Marketplace Order ID | |
handleType | integer | Yes | If we are downloading new orders and we have handleType = 2 we should specify the type as “2” so we can make the order as “Ready For Shipping” |
If we are downloading already existing order we should specify the handleType as “1” otherwise we will receive an error. | 1- export receive address info, 2- export receive address and make orderStatus from 1 to 2 |
Sample request:
POST https://openapi.sheincorp.com**/open-api/order/export-address**
Body:
{
"orderNo":"GSUNGE5670004CB", "handleType": 2
}
Sample Response: 200OK
{
"code": "0",
"msg": "OK",
"info": {
"receiveMsgList": [
{
"orderNo": "GSUNGE5670004CB",
"lastName": "address",
"middleName": null,
"firstName": "test",
"country": "France",
"province": "Oise",
"city": "Creil",
"district": "",
"street": "",
"address": "22 rue descartes",
"addressExt": "",
"phone": "0658111111",
"postCode": "60100",
"taxNo": ""
}
],
"unProcessReason": []
},
"bbl": {}
}
Response Mapping:
Shein Field | Hemi Field | Comment | ||
---|---|---|---|---|
code | N/A | |||
msg | N/A | |||
info | ||||
receiveMsgList | ||||
orderNo | Orders > Marketplace Order ID | |||
lastName | Orders > Shipping Buyer Name |
AND Orders > Billing Name | | | | | middleName | Orders > Shipping Buyer Name AND Orders > Billing Name | Concatenated with lastName | | | | firstName | Orders > Shipping Buyer Name AND Orders > Billing Name | Concatenated with firstName | | | | country | Orders > Shipping Country Name AND Orders > Billing Country Name | Based on the country name we want to populate the Orders > Shipping Country Code AND Orders > Billing Country Code | | | | province | Orders > Shipping State Province AND Orders > Billing State Province | | | | | city | Orders > Shipping City AND Orders > Billing City Name | | | | | district | N/A | | | | | street | Orders > Shipping Street 1 AND Orders > Billing Street 1 | | | | | address | Orders > Shipping Street 2 AND Orders > Billing Street 2 | If Orders > Shipping Street 1 AND Orders > Billing Street 1 are missing we want to store this as Shipping Street 1 AND> Billing Street 1 | | | | addressExt | Orders > Shipping Ext Address ID AND Orders > Billing Address ID | | | | | phone | Orders > Shipping Phone AND Orders > Billing Phone | | | | | postCode | Orders > Shipping Postal Code AND Orders > Billing Postal Code | | | | | taxNo | Orders > Tax Number | | | | unProcessReason | | N/A | | | bbl | | | N/A | |
Please note if we get the address successfully we want to set Orders Shein > Shipping Info Received = Yes this way we will know that the address is already stored for the order.
Sample Error Response:200OK
{
"code": "9999002",
"msg": "失败原因:暂无可以导出地址的商品,请稍后重试",
"info": {},
"bbl": {}
}