VI | EN
Message us on Messenger
Developer resources

Use this api to update items of the discount promotion. — Shopee API

v2.discount.update_discount_item · call it through Quantri360 with one API key for your own accounts / assets that you connected and authorized — 360 handles request signing and refreshing the authorization you granted.

v2.discount.update_discount_item

POST/api/v2/discount/update_discount_itemVia 360: POST https://partner.quantri360.com/v1/shopee/api/v2/discount/update_discount_item
Write endpoint — changes data on Shopee. The key must be created with "Allow write API calls" ticked, otherwise you get 403 write_not_allowed. Every call is logged.
Description

Sửa giá và giới hạn mua của sản phẩm trong chương trình giảm giá.

  • Gọi qua /v1/shopee/api/v2/discount/update_discount_item với Authorization: Bearer <key>; dùng platform_shop_id khi có nhiều shop. 360 tự gắn partner_id, shop_id, sign và access_token.
  • API GHI: thay đổi dữ liệu thật trên Shopee; cần key có quyền ghi (can_write) và gói mở module Khuyến mãi. Thay đổi cấu hình ưu đãi hoặc giá khuyến mãi người mua thấy.
  • HTTP 200 vẫn có thể có lỗi nghiệp vụ; kiểm error trước khi dùng kết quả. Kiểm từng phần tử trong danh sách kết quả, gồm mã lỗi và thông báo của phần tử.
  • Đọc trạng thái hiện tại bằng get_discount trước khi gọi.
  • Không sửa / xóa chương trình đã kết thúc; các sản phẩm phải có trạng thái hợp lệ và không thuộc ngành bị cấm khuyến mãi.
  • Tối đa 50 sản phẩm mỗi lần; một chương trình tối đa 1000 sản phẩm (15000 khi được cấp riêng) và 50000 phân loại. Giá khuyến mãi không cao hơn giá gốc, phải trong khoảng giá thị trường; tại VN mức giảm không quá 50%. Tồn khuyến mãi phải nhỏ hơn tồn hiện tại và lớn hơn số lượng mua tối thiểu được trả trong message.

Request

Endpoint

POST https://partner.quantri360.com/v1/shopee/api/v2/discount/update_discount_item

Authentication & shop

NameInTypeSampleDescription
AuthorizationheaderheaderBearer q360_live_ab12cd34_…Khóa API của brand (tạo ở mục API key). Bắt buộc với mọi request. Brand suy từ key — không truyền mã brand.
platform_shop_idquerystring100001Gian hàng (lấy ở GET /v1/platforms → shops[].platform_shop_id). BẮT BUỘC khi brand có > 1 gian hàng trên nền tảng; 360 bỏ tham số này trước khi chuyển tiếp.

Request parameters

NameInTypeRequiredSampleDescription
discount_idbodyint64Yes100001Mã chương trình giảm giá.
item_listbodyobject[]Yes[{"item_id":100011,"item_promotion_price":45000,"model_list":[{"model_id":100012,"model_promotion_price":45000}],"purchase_limit":1}]Danh sách sản phẩm cần sửa; tối đa 50 sản phẩm mỗi lần.
item_list[].item_idbodyint64Yes100011Mã sản phẩm.
item_list[].item_promotion_pricebodyfloatNo45000Giá khuyến mãi của sản phẩm.
item_list[].model_listbodyobject[]No[{"model_id":100012,"model_promotion_price":45000}]Danh sách phân loại thuộc sản phẩm.
item_list[].model_list[].model_idbodyint64Yes100012Mã phân loại sản phẩm; không có phân loại thì có thể bỏ, mặc định 0.
item_list[].model_list[].model_promotion_pricebodyfloatYes45000Giá khuyến mãi của phân loại.
item_list[].purchase_limitbodyint32No1Số lượng tối đa người mua được mua trong chương trình.

Request examples

curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/discount/update_discount_item" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"discount_id":100001,"item_list":[{"item_id":100011,"purchase_limit":1,"model_list":[{"model_id":100012,"model_promotion_price":45000}]}]}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee/api/v2/discount/update_discount_item",
    params={},
    json={
        "discount_id": 100001,
        "item_list": [
            {
                "item_id": 100011,
                "purchase_limit": 1,
                "model_list": [
                    {
                        "model_id": 100012,
                        "model_promotion_price": 45000
                    }
                ]
            }
        ]
    },
    headers={"Authorization": f"Bearer {KEY}"},
    timeout=60,
)
print(r.status_code)
print(r.json())
Node.js
const KEY = 'q360_live_...'; // khóa API của brand
const url = new URL('https://partner.quantri360.com/v1/shopee/api/v2/discount/update_discount_item');
for (const [k, v] of Object.entries({})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
  method: 'POST',
  headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"discount_id":100001,"item_list":[{"item_id":100011,"purchase_limit":1,"model_list":[{"model_id":100012,"model_promotion_price":45000}]}]}),
});
console.log(r.status, await r.json());
PHP
<?php
$key = 'q360_live_...'; // khóa API của brand
$url = 'https://partner.quantri360.com/v1/shopee/api/v2/discount/update_discount_item' . '?' . http_build_query([]);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key, 'Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"discount_id":100001,"item_list":[{"item_id":100011,"purchase_limit":1,"model_list":[{"model_id":100012,"model_promotion_price":45000}]}]}');
$res = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status, "\n", $res;

Response

Response fields (as returned by Shopee)

Phản hồi minh họa thành công; đọc error/message trước khi dùng kết quả.

NameTypeSampleDescription
request_idstringd52ca43b277a4f9292fb8be658bfd33dMã request của Shopee để tra lỗi.
errorstringMã lỗi Shopee; rỗng = thành công.
messagestringMô tả lỗi.
warningstringCảnh báo cần kiểm tra.
responseobjectKết quả xử lý.
discount_idint64100001Mã chương trình giảm giá.
countint321Số sản phẩm xử lý thành công.
error_listobject[]Danh sách sản phẩm / phân loại gặp lỗi.
item_idint64100011Mã sản phẩm.
model_idint64100012Mã phân loại sản phẩm; không có phân loại thì có thể bỏ, mặc định 0.
fail_messagestringChi tiết lỗi của phần tử; rỗng khi thành công.
fail_errorstringMã lỗi của phần tử; rỗng khi thành công.

Response sample

{
  "request_id": "demo-request",
  "error": "",
  "message": "",
  "warning": "",
  "response": {
    "discount_id": 100001,
    "count": 1,
    "error_list": []
  }
}

Shopee error codes (41)

Show
CodeMeaning
discount.error_assigned_promo_stockKhông sửa tồn dành riêng của sản phẩm đã thêm hoặc đã tắt.
discount.error_item_abnormalSản phẩm bất thường.
discount.item_status_abnormalTrạng thái sản phẩm bất thường.
discount.error_item_under_block_categoriesNgành hàng bị cấm khuyến mãi theo quy định thị trường.
discount.fail_model_price_checkChênh lệch giá cao nhất và thấp nhất của sản phẩm quá lớn.
discount.get_model_orgin_price_errorKhông lấy được giá gốc phân loại; thử lại.
discount.discount_is_endKhông sửa hoặc xóa chương trình đã kết thúc.
discount.error_b2c_item_not_allowedSản phẩm B2C không được khuyến mãi trong gian hàng FBS.
discount.item_in_promotion_too_manyTối đa 1000 sản phẩm mỗi chương trình.
discount.item_in_promotion_too_many_whitelistTối đa 15000 sản phẩm mỗi chương trình khi được cấp riêng.
discount.item_purchase_limit_errorGiới hạn mua phải lớn hơn ngưỡng trong message.
discount.item_need_model_idSản phẩm có phân loại phải gửi model_id.
discount.item_not_in_promotionKhông tìm thấy sản phẩm trong chương trình.
discount.item_status_invalidTrạng thái sản phẩm không hợp lệ.
discount.item_id_not_existKhông tìm thấy item_id.
discount.item_id_repeateditem_id bị trùng.
discount.model_in_promotion_too_manyTối đa 50000 phân loại mỗi chương trình.
discount.model_not_in_promotionPhân loại không thuộc chương trình này.
discount.model_id_not_existKhông tìm thấy model_id.
discount.model_id_repeatedmodel_id bị trùng.
discount.promotion_price_for_vnMức giảm tại VN vượt 50% giá gốc.
discount.promotoin_price_too_highGiá khuyến mãi vượt mức tối đa của thị trường.
discount.promotion_price_too_lowGiá khuyến mãi thấp hơn mức tối thiểu của thị trường.
discount.item_exceed_discount_limitSản phẩm đã đạt giới hạn tham gia khuyến mãi.
discount.error_update_admin_discountKhông sửa chương trình do quản trị tạo.
discount.error_update_streaming_discountKhông sửa chương trình tạo từ phát trực tiếp.
discount.exceed_discount_item_batch_sizeMỗi lần chỉ thêm tối đa 50 sản phẩm.
error_dataDữ liệu không tồn tại hoặc không hợp lệ cho thao tác (vd mã không có, loại yêu cầu không cho phép).
error_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
common.error_not_foundKhông tìm thấy thông tin.
error_serverLỗi hệ thống Shopee — thử lại sau ít phút.
common.error_serverLỗi hệ thống Shopee — thử lại sau.
error_shopGian hàng không hợp lệ — kiểm tra platform_shop_id.
common.error_shopGian hàng không hợp lệ — kiểm tra platform_shop_id.
discount.discount_need_promotion_priceThiếu giá khuyến mãi.
discount.promotion_price_higher_input_priceGiá khuyến mãi cao hơn giá gốc.
error_authỦy quyền gian hàng cho 360 đã hết hạn hoặc bị thu hồi (360 đã tự làm mới token một lần) — chủ gian hàng kết nối lại Shopee trong Partner.
error_limitChạm hạn mức gọi Shopee trong ngày của kết nối — 360 trả kèm thời điểm thử lại; giảm tần suất gọi.
error_rate_limitGọi quá nhanh — chờ vài giây rồi gọi lại (360 cũng giới hạn theo key: 429 + Retry-After).
shop_bannedGian hàng đang bị Shopee khóa — mọi API tạm ngưng tới khi gỡ khóa.
error_kyc_authGian hàng chưa hoàn tất đăng ký người bán trên Kênh Người Bán.

Get started

  1. Sign up for Partner
  2. Enable a data type of the Khuyến mãi (Marketing) group on the platform page
  3. Create an API key (tick the Shopee channel)
  4. Call it as in the examples above