Marketplaces / Temu Technical Scope / Temu Price Update

Temu Price Update

Version Date Created / Updated Notes
v1.0 29.01.2024 Bogomil First publish

The price update is used to edit the price information of specified products. By providing the product ID and the new price, merchants can update the product price ensuring the accuracy and timeliness of stock information.

All triggers, validations etc are as per abstraction - Price Update General requirements

Update Price

Please note all price updates are happening via Temu’s own IDs.

First they are always grouped per goodsId (or in other words per variation since one variation group in Hemi will have the same goodsId on each item). And then price per product are provided by the skuId which is Temu’s own single product ID

After examination of docs and examples it seems we can send only one goodsId at a time so that’s how we will start. We want to select only the changed SKUs within a variation as well so essentially we want to select all pending changes, group by goodsId and then fire away 1 by 1

Please note - there is an option we are missing an example or something that we can send multiple objects in an array. In any such case we will change up the structure but the logic for selection will remain

Also with the update price we can update only the Base Price on Temu and we are not able to change the RRP.

API Docs : https://partner.temu.com/documentation?menu_code=fb16b05f7a904765aac4af3a24b87d4a&sub_menu_code=dbf95d09e514491f8685013824cecc76

API Call : POST https://openapi-b-eu.temu.com/openapi/router

API Name: bg.local.goods.priceorder.change.sku.price

Please don’t forget that the call itself is to be used based on the value of Channel > Country as described here: ‼ Please note that the above is true for all calls. In each call we will give the endpoint with an example host but we need to use the correct domain pointer based on the Channel > Country value

Find a request sample with params below :

{
"type": "bg.local.goods.priceorder.change.sku.price",
"timestamp": timestamp,
"app_key": "app_key",
"data_type": "JSON",
"access_token": "access_token"
}

Sample Body

[
    {
        "goodsId": "604269868588112",
        "changeSkuPriceDTOList": [
            {
                "skuChangePriceBaseDTOList": [
                    {
                        "newSupplierPrice": {
                            "amount": "1",
                            "currency": "EUR"
                        },
                        "skuId": "58224724203874"
                    },
                    {
                        "newSupplierPrice": {
                            "amount": "10",
                            "currency": "EUR"
                        },
                        "skuId": "58224724203875"
                    }
                ]
            }
        ]
    }
]

Request mapping :

Temu Field Hemi Field Required Comment
goodsId Product Account > Channel Item Id Yes
changeSkuPriceDTOList
skuChangePriceBaseDTOList
newSupplierPrice
amount Product Account > Price Yes
currency Product Account > Currency

OR Account > Exchange Rate Calculator Currency | Yes | Product Account is with priority | | | | skuId | | Product Account Temu > SKU Id | Yes | New Field which should be available for import |

Example success response 200:

{
    "result": {
        "failedSkuReasonMap": {},
        "failedSkuList": [],
        "successSkuList": [
            62897648567566
        ]
    },
    "success": true,
    "requestId": "eu-d8e3f165-f364-45e9-918a-0f4e59355a39",
    "errorCode": 1000000,
    "errorMsg": ""
}

Example success response 200:

{
    "result": {
        "failedSkuReasonMap": {
            "62897648567566": "Skc/Sku supply price has not changed"
        },
        "failedSkuList": [
            62897648567566
        ],
        "successSkuList": []
    },
    "success": true,
    "requestId": "eu-e45fb644-eb20-4e03-af47-44afda01de0a",
    "errorCode": 1000000,
    "errorMsg": ""
}

We want to treat this as success as well because it means the price on the product is the same!

Example error response 200:

{
    "result": {
        "failedSkuReasonMap": {
            "55441585353697": "Sku has unfinished price order"
        },
        "failedSkuList": [
            55441585353697
        ],
        "successSkuList": []
    },
    "success": true,
    "requestId": "eu-c3d26da0-603e-46fc-aa64-19336909d9c5",
    "errorCode": 1000000,
    "errorMsg": ""
}

This error indicates that the price change is send to Temu but they have not processed it yet, so we want to return an error with Product Account > Update Price Error = “” "SKU has a pending price update that has not been processed yet. Please wait until the update is completed before proceeding.”

Example error response 200:

{
    "success": false,
    "requestId": "eu-ce84d1d3-d1e3-4756-8b56-55495a935cb7",
    "errorCode": 4000000,
    "errorMsg": "Temu internal system error, please try again later."
}

Example error response 200:

{
    "success": false,
    "requestId": "eu-fa06ca81-b1b8-44bd-bbf5-783322c28a78",
    "errorCode": 150010188,
    "errorMsg": "The mall and goods not match."
}

Example partial error error response 200:

{
    "result": {
        "failedSkuReasonMap": {
            "53998476360382": "Skc/Sku supply price has not changed",
            "55613384045069": "Skc/Sku supply price has not changed"
        },
        "failedSkuList": [
            55613384045069,
            53998476360382
        ],
        "successSkuList": [
            67398774303169
        ]
    },
    "success": true,
    "requestId": "eu-b20a5912-b34c-4d70-ac3a-b879bc46a8e3",
    "errorCode": 1000000,
    "errorMsg": ""
}

Example error response 200:

{
    "result": {
        "failedSkuReasonMap": {
            "68429566448399": "Sku has unfinished price order",
            "65268470569097": "Sku has unfinished price order",
            "56291988916091": "Sku has unfinished price order"
        },
        "failedSkuList": [
            68429566448399,
            56291988916091,
            65268470569097
        ],
        "successSkuList": []
    },
    "success": true,
    "requestId": "eu-df6d7ce4-2f3f-41b0-81b7-12e3e318b2f7",
    "errorCode": 1000000,
    "errorMsg": ""
}

In all other cases we will treat the update as error and in Product Account > Update Price Error we want to store both the errorCode and errorMsg because in some cases we may not have errorMsg

Is this article helpful?
0 0 0