VI | EN
Message us on Messenger
Developer resources

Queries the business performance data aggregated at principal level for the specified regions within the selected time range — Shopee API

v2.principal.get_principal_sales_performance_detail · 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.principal.get_principal_sales_performance_detail

POST/api/v2/principal/get_principal_sales_performance_detailVia 360: POST https://partner.quantri360.com/v1/shopee/api/v2/principal/get_principal_sales_performance_detail
Description

CẤP PRINCIPAL: Tra cứu hiệu quả kinh doanh, doanh số và chuyển đổi trong kỳ, trả tổng hợp và chi tiết theo khu vực.

  • HIỆN CHƯA GỌI ĐƯỢC QUA 360: đây là API cấp principal, 360 hiện ký theo gian hàng nên Shopee trả error_param "There is no principal_id in query.". Cần dùng API này → liên hệ 360.
  • Áp dụng: tài khoản principal (chủ thể quản lý nhiều gian hàng).
  • API chỉ đọc; error rỗng mới là thành công.
  • Khoảng ngày và biên kỳ được kiểm theo timezone; xem start_date, end_date và granularity. Tiền tệ LOCAL hoặc USD; bỏ currency mặc định USD.
  • Doanh số gồm đơn chưa thanh toán, đơn hủy và trả hàng/hoàn tiền, sau khoản giảm giá người bán chịu. summary nhiều khu vực luôn USD; đúng một khu vực dùng tiền tệ yêu cầu của khu vực đó.

Request

Endpoint

POST https://partner.quantri360.com/v1/shopee/api/v2/principal/get_principal_sales_performance_detail

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
start_datebodystringYes2026-10-01Ngày bắt đầu hợp lệ YYYY-MM-DD, không sau end_date; tính theo timezone. Mốc sớm nhất = ngày hiện tại theo timezone − 1 ngày − 2 năm. customize không được trước mốc này; day cùng ngày với end_date; week bắt đầu Chủ nhật; month ngày đầu tháng; quarter ngày đầu quý; year ngày đầu năm.
end_datebodystringYes2026-10-07Ngày kết thúc hợp lệ YYYY-MM-DD, không trước start_date. customize: không sau hôm qua theo timezone, tối đa 366 ngày tính cả hai đầu. day: bằng start_date. week: từ start_date đến min(start_date + 6 ngày, hôm qua). month/quarter/year: trong tháng/quý/năm đã chọn, không quá min(ngày cuối kỳ, hôm qua).
timezonebodystringYesGMT+7Múi giờ tính biên ngày, kiểm khoảng ngày và chuyển đổi dấu thời gian; chỉ GMT+7, GMT+8, GMT-3. Mọi kiểm tra ngày dùng múi giờ này.
granularitybodystringYescustomizeĐộ chi tiết: customize, day, week, month, quarter, year. customize truy vấn dữ liệu theo ngày; day một ngày; week tuần Chủ nhật–thứ Bảy; month/quarter/year theo tháng/quý/năm lịch. Giá trị khác bị từ chối với invalid_parameter.
region_listbodyobject[]NoBỏ qua hoặc [] để lấy tất cả khu vực thuộc principal. Khu vực trùng được loại trùng; không được lặp cùng khu vực với tiền tệ khác nhau.
region_list[].regionbodystringYesVNBắt buộc trong mỗi phần tử; mã khu vực hợp lệ hoặc tên khu vực được nhận diện, như SG, ID.
region_list[].currencybodystringNoUSDTiền tệ LOCAL hoặc USD, mặc định USD; giá trị khác bị từ chối với invalid_parameter.

Request examples

curl -s -X POST "https://partner.quantri360.com/v1/shopee/api/v2/principal/get_principal_sales_performance_detail" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"start_date":"2026-10-01","end_date":"2026-10-07","timezone":"GMT+7","granularity":"customize","region_list":[]}'
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.post(
    "https://partner.quantri360.com/v1/shopee/api/v2/principal/get_principal_sales_performance_detail",
    params={},
    json={
        "start_date": "2026-10-01",
        "end_date": "2026-10-07",
        "timezone": "GMT+7",
        "granularity": "customize",
        "region_list": []
    },
    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/principal/get_principal_sales_performance_detail');
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({"start_date":"2026-10-01","end_date":"2026-10-07","timezone":"GMT+7","granularity":"customize","region_list":[]}),
});
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/principal/get_principal_sales_performance_detail' . '?' . 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, '{"start_date":"2026-10-01","end_date":"2026-10-07","timezone":"GMT+7","granularity":"customize","region_list":[]}');
$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)

Mẫu thành công minh họa; response.summary và response.details đều là mảng, mỗi phần tử chứa chỉ số cho toàn kỳ yêu cầu. Nếu error/message là "-", không coi đó là chuỗi rỗng báo thành công; kiểm tra lỗi trước khi đọc response.

NameTypeSampleDescription
request_idstringd52ca43b277a4f9292fb8be658bfd33dMã request của Shopee để tra lỗi.
errorstringMã lỗi Shopee; rỗng = thành công.
messagestringMô tả lỗi.
responseobjectKết quả hiệu quả trong kỳ.
summaryobject[]Tổng hợp trong kỳ của các khu vực đã chọn.
currencystringUSDMã tiền tệ dùng cho các chỉ số tiền.
salesfloat100Tổng giá trị đơn đã đặt, gồm đã và chưa thanh toán, sau khi trừ khoản giảm giá do người bán chịu; gồm cả đơn hủy và trả hàng/hoàn tiền.
ordersint6410Số đơn đã đặt, gồm đơn chưa thanh toán.
units_soldint6410Số đơn vị sản phẩm trong đơn đã đặt, gồm đơn chưa thanh toán.
average_basket_sizefloat1Doanh số trung bình mỗi đơn = sales / orders.
items_per_orderfloat1Số đơn vị sản phẩm trung bình mỗi đơn = units_sold / orders.
average_selling_pricefloat1Giá bán trung bình mỗi đơn vị = sales / units_sold.
product_clicksint6410Tổng lượt nhấp thẻ sản phẩm trên ứng dụng và máy tính; chỉ có dữ liệu sau 31/12/2023.
product_viewsint6410Số lượt truy cập trang sản phẩm.
unique_visitorsint6410Số khách truy cập duy nhất đã xem gian hàng hoặc trang sản phẩm; nhiều lượt xem của cùng khách tính một. Chỉ có dữ liệu sau 31/12/2023.
item_conversion_ratefloat1Tỷ lệ chuyển đổi sản phẩm = units_sold / product_views.
order_conversion_ratefloat1Tỷ lệ chuyển đổi đơn = orders / product_clicks; chỉ có dữ liệu sau 31/12/2023.
detailsobject[]Chi tiết trong kỳ theo từng khu vực.
regionstringVNMã khu vực.
currencystringUSDMã tiền tệ dùng cho các chỉ số tiền.
salesfloat100Tổng giá trị đơn đã đặt, gồm đã và chưa thanh toán, sau khi trừ khoản giảm giá do người bán chịu; gồm cả đơn hủy và trả hàng/hoàn tiền.
ordersint6410Số đơn đã đặt, gồm đơn chưa thanh toán.
units_soldint6410Số đơn vị sản phẩm trong đơn đã đặt, gồm đơn chưa thanh toán.
average_basket_sizefloat1Doanh số trung bình mỗi đơn = sales / orders.
items_per_orderfloat1Số đơn vị sản phẩm trung bình mỗi đơn = units_sold / orders.
average_selling_pricefloat1Giá bán trung bình mỗi đơn vị = sales / units_sold.
product_clicksint6410Tổng lượt nhấp thẻ sản phẩm trên ứng dụng và máy tính; chỉ có dữ liệu sau 31/12/2023.
product_viewsint6410Số lượt truy cập trang sản phẩm.
unique_visitorsint6410Số khách truy cập duy nhất đã xem gian hàng hoặc trang sản phẩm; nhiều lượt xem của cùng khách tính một. Chỉ có dữ liệu sau 31/12/2023.
item_conversion_ratefloat1Tỷ lệ chuyển đổi sản phẩm = units_sold / product_views.
order_conversion_ratefloat1Tỷ lệ chuyển đổi đơn = orders / product_clicks; chỉ có dữ liệu sau 31/12/2023.

Response sample

{
  "request_id": "demo-request",
  "error": "",
  "message": "",
  "response": {
    "summary": [
      {
        "currency": "USD",
        "sales": 100,
        "orders": 10,
        "units_sold": 10,
        "average_basket_size": 1,
        "items_per_order": 1,
        "average_selling_price": 1,
        "product_clicks": 10,
        "product_views": 10,
        "unique_visitors": 10,
        "item_conversion_rate": 1,
        "order_conversion_rate": 1
      }
    ],
    "details": [
      {
        "region": "VN",
        "currency": "USD",
        "sales": 100,
        "orders": 10,
        "units_sold": 10,
        "average_basket_size": 1,
        "items_per_order": 1,
        "average_selling_price": 1,
        "product_clicks": 10,
        "product_views": 10,
        "unique_visitors": 10,
        "item_conversion_rate": 1,
        "order_conversion_rate": 1
      }
    ]
  }
}

Shopee error codes (5)

Show
CodeMeaning
error_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
error_permissionGian hàng không có quyền xem dữ liệu này (vd yêu cầu trả / đơn không thuộc gian hàng).
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).

Get started

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