VI | EN
Nhắn Messenger
Dành cho developer

Lấy chi tiết doanh thu theo từng đơn — API Shopee

v2.payment.get_income_detail · gọi qua Quantri360 bằng một API key cho chính tài khoản / tài sản bạn đã kết nối và ủy quyền — 360 lo việc ký request và làm mới phiên đăng nhập bạn đã cấp.

v2.payment.get_income_detail

GET/api/v2/payment/get_income_detailGọi qua 360: GET https://partner.quantri360.com/v1/shopee/api/v2/payment/get_income_detail
Mô tả API

Danh sách tiền theo TỪNG ĐƠN như mục "Doanh thu" trên Kênh Người Bán: tab Đã thanh toán (tiền đã về ví, kèm thời điểm và số tiền) hoặc tab Sẽ thanh toán (đơn chưa quyết toán, kèm số tiền dự kiến). Dùng để đối soát tiền về theo ngày và biết đang có bao nhiêu tiền treo ở Shopee.

  • BẪY PHÂN TRANG: next_page là OBJECT. Truyền nguyên object vào cursor sẽ thành chuỗi "[object Object]" và Shopee trả lại TRANG 1 → vòng lặp cộng trùng. Luôn lấy next_page.cursor và khử trùng theo order_sn (không có đơn mới → dừng).
  • Released: khoảng ngày > 14 ngày → error_param "…the date range must not exceed 14 days." — chia đoạn ≤ 14 ngày.
  • Pending BỎ QUA date_from / date_to: luôn trả TOÀN BỘ đơn đang chờ. Tổng estimated_escrow_amount khớp pending_amount của get_income_overview.
  • page_size ngoài 1–100 → error_param "Invalid or missing page_size parameter…".
  • Chỉ có bút toán CỘNG theo đơn: khoản Shopee đòi lại sau quyết toán (khách hoàn hàng) KHÔNG xuất hiện ở đây — xem đủ dòng tiền bằng get_wallet_transaction_list.
  • Mảng trong phản hồi tên list (không phải income_detail_list).

Request

Địa chỉ

GET https://partner.quantri360.com/v1/shopee/api/v2/payment/get_income_detail

Xác thực & gian hàng

TênVị tríKiểuMẫuMô tả
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.

Tham số request

TênVị tríKiểuBắt buộcMẫuMô tả
income_statusqueryintCó1Gian hàng nội địa VN: 1 = Đã thanh toán (Released) · 2 = Đang chờ (Pending). (Gian hàng xuyên biên giới thêm 0 = To Release.)
date_fromquerystringKhông2026-10-20Từ ngày (YYYY-MM-DD) theo ngày tiền về. CHỈ có tác dụng với income_status = 1.
date_toquerystringKhông2026-10-28Đến ngày (YYYY-MM-DD). Với income_status = 1: date_from → date_to tối đa 14 ngày.
page_sizequeryintCó100Số đơn mỗi trang: 1–100.
cursorquerystringKhôngTrang đầu để trống; trang sau = response.next_page.cursor (lấy CHUỖI cursor bên trong object).

Phân trang

Lặp với cursor = response.next_page.cursor (next_page là OBJECT {cursor, page_size}, không phải chuỗi) cho tới khi cursor rỗng hoặc list rỗng; khử trùng theo order_sn.

Ví dụ request

curl -s "https://partner.quantri360.com/v1/shopee/api/v2/payment/get_income_detail?income_status=1&date_from=2026-10-20&date_to=2026-10-28&page_size=100&cursor=" \
  -H "Authorization: Bearer $KEY"
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.get(
    "https://partner.quantri360.com/v1/shopee/api/v2/payment/get_income_detail",
    params={
        "income_status": 1,
        "date_from": "2026-10-20",
        "date_to": "2026-10-28",
        "page_size": 100,
        "cursor": ""
    },
    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/payment/get_income_detail');
for (const [k, v] of Object.entries({"income_status":1,"date_from":"2026-10-20","date_to":"2026-10-28","page_size":100,"cursor":""})) url.searchParams.set(k, typeof v === 'object' ? JSON.stringify(v) : String(v));
const r = await fetch(url, {
  method: 'GET',
  headers: { Authorization: `Bearer ${KEY}` },
});
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/payment/get_income_detail' . '?' . http_build_query(['income_status' => 1, 'date_from' => '2026-10-20', 'date_to' => '2026-10-28', 'page_size' => 100, 'cursor' => '']);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $key]);
$res = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $status, "\n", $res;

Response

Tham số phản hồi (nguyên của Shopee)

TênKiểuMẫuMô tả
request_idstringd52ca43b277a4f9292fb8be658bfd33dMã request của Shopee để tra lỗi.
errorstringMã lỗi Shopee; rỗng = thành công.
messagestringMô tả lỗi.
responseobject
listobject[]Mỗi phần tử một đơn, mới nhất trước.
order_snstring2610250ABCDE21Mã đơn.
payment_methodstringTK Ngân hàng liên kết ShopeePayPhương thức thanh toán của khách (tiếng Việt).
statusstringĐã thanh toán cho Người bánTrạng thái hiển thị (tiếng Việt): "Đã thanh toán cho Người bán" (Released) · "Đang chờ đơn hàng hoàn tất" (Pending)…
currencystringVNDTiền tệ.
released_amountfloat267690Chỉ Released: số tiền đã về ví (= escrow_amount_after_adjustment của get_escrow_detail).
actual_payout_timetimestamp1793204105Chỉ Released: thời điểm tiền về (Unix giây).
estimated_escrow_amountfloat407340Chỉ Pending: số tiền dự kiến nhận.
estimated_payout_timetimestamp0Chỉ Pending: thời điểm dự kiến về — gần như luôn = 0, không dùng để dự báo.
next_pageobjectThông tin trang sau.
cursorstring10000000076Truyền vào tham số cursor lần sau; rỗng = hết.
page_sizeint100

Mẫu phản hồi

{
  "error": "",
  "message": "",
  "request_id": "7fc8a48b5ef6cb50…",
  "response": {
    "list": [
      {
        "actual_payout_time": 1793204105,
        "currency": "VND",
        "order_sn": "2610250ABCDE21",
        "payment_method": "TK Ngân hàng liên kết ShopeePay",
        "released_amount": 267690,
        "status": "Đã thanh toán cho Người bán"
      },
      {
        "actual_payout_time": 1793200097,
        "currency": "VND",
        "order_sn": "2610250ABCDE22",
        "payment_method": "Thẻ Tín dụng/Ghi nợ",
        "released_amount": 190693,
        "status": "Đã thanh toán cho Người bán"
      }
    ],
    "next_page": {
      "cursor": "10000000076",
      "page_size": 100
    }
  }
}

Mã lỗi của Shopee (8)

Bấm để xem
MãÝ nghĩa
error_paramTham số sai / thiếu / sai kiểu — xem `message` để biết tham số nào.
error_shopGian hàng không hợp lệ — kiểm tra platform_shop_id.
error_user_refresh_tokenYour refresh token is error, please check refresh token or user_id.
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.

Bắt đầu dùng

  1. Đăng ký tài khoản Partner
  2. Mở loại dữ liệu thuộc nhóm Tài chính / đối soát ở trang nền tảng
  3. Tạo API key (tick kênh Shopee)
  4. Gọi theo ví dụ ở trên