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

List of orders — API Pancake POS

get /shops/{SHOP_ID}/orders · 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.

get /shops/{SHOP_ID}/orders

GET/shops/{SHOP_ID}/ordersGọi qua 360: GET https://partner.quantri360.com/v1/pancake_pos/shops/{SHOP_ID}/orders
Sắp mở. API này đã chạy thật qua 360 và đang được chốt giá — bạn có thể đọc tài liệu và chuẩn bị tích hợp trước.
Mô tả API

Danh sách đơn hàng của cửa hàng Pancake POS, lọc theo trạng thái, khoảng thời gian (tạo / cập nhật / gửi ĐVVC / đối soát / đổi sang một trạng thái…), nguồn đơn, quảng cáo, khách, ĐVVC. Mỗi đơn kèm đủ dòng sản phẩm, khách, địa chỉ giao, vận chuyển, lịch sử trạng thái; phản hồi có thêm aggs (tổng COD, phí ship, số đơn theo trạng thái của toàn bộ kết quả lọc). Dùng để đồng bộ đơn về kho dữ liệu, đối soát COD, báo cáo doanh thu theo nguồn / page / quảng cáo.

  • Mã trạng thái (status): 0 Mới · 17 Chờ xác nhận · 11 Chờ hàng · 12 Chờ in · 13 Đã in · 20 Đã đặt hàng · 1 Đã xác nhận · 8 Đang đóng hàng · 9 Chờ chuyển hàng · 2 Đã gửi hàng · 3 Đã nhận · 16 Đã thu tiền · 4 Đang hoàn · 15 Hoàn một phần · 5 Đã hoàn · 6 Đã hủy · 7 Đã xóa.
  • startDateTime / endDateTime là Unix GIÂY tuyệt đối; còn inserted_at trả về là giờ UTC không kèm múi giờ. Đơn tạo lúc 17:41 giờ VN hiện 2026-10-28T10:41:43 — muốn lọc “ngày 28/10 giờ VN” thì truyền 1793120400 → 1793206799.
  • Mảng trong query gửi kiểu lặp tham số có ngoặc vuông: filter_status[]=5&filter_status[]=6 (một giá trị cũng phải giữ []).
  • Tiền là số nguyên VND (không nhân 100).
  • Phản hồi đủ trường khá nặng (~10 KB / đơn): quét số lượng lớn nên dùng fields[] để rút trường cần, rồi gọi chi tiết khi cần.
  • Phản hồi chứa tên, SĐT, địa chỉ khách — chỉ lưu ở nơi có kiểm soát quyền.

Request

Địa chỉ

GET https://partner.quantri360.com/v1/pancake_pos/shops/{SHOP_ID}/orders

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_idquerystring1234567SHOP_ID đã nối — có thể bỏ khi đường dẫn có /shops/{SHOP_ID}.

Tham số request

TênVị tríKiểuBắt buộcMẫuMô tả
SHOP_IDpathintCó1234567Mã cửa hàng đã nối với 360 (khác cửa hàng của kết nối → 404).
page_numberqueryintKhông1Trang, bắt đầu từ 1.
page_sizequeryintKhông100Số đơn / trang. Tối đa 1000 (lớn hơn → HTTP 422).
updateStatusquerystringKhônginserted_atMốc thời gian để lọc startDateTime / endDateTime: inserted_at (tạo đơn) · updated_at (cập nhật cuối) · partner_inserted_at (gửi ĐVVC) · paid_at (đối soát) · picked_up_at (ĐVVC lấy hàng) · first_delivery_at · estimate_delivery_date · time_assign_seller / time_assign_care / time_assign_marketer · -1 (cập nhật trạng thái cuối) · hoặc MÃ TRẠNG THÁI (vd 3 = thời điểm đơn chuyển sang Đã nhận).
startDateTimequerytimestampKhông1790787600Từ (Unix GIÂY). Dùng kèm endDateTime.
endDateTimequerytimestampKhông1793206799Đến (Unix GIÂY).
filter_status[]queryint[]Không3Lọc trạng thái — lặp tham số cho nhiều giá trị: filter_status[]=5&filter_status[]=6. Mã xem ghi chú.
include_removedqueryintKhông01 = gồm cả đơn đã xóa.
searchquerystringKhông0901234567Tìm theo SĐT, tên khách, ghi chú, mã đơn…
option_sortquerystringKhônginserted_at_descThứ tự: inserted_at_desc (mặc định) · inserted_at_asc · last_updated_order_desc|asc · last_update_status_at_desc|asc · order_valuation_desc|asc …
fields[]querystring[]KhôngidChỉ trả các trường này (lặp tham số: fields[]=id&fields[]=status) — nên dùng khi quét nhiều trang để phản hồi nhẹ.
customer_idquerystringKhông3f9a2b77-d8cf-4a83-ba98-70932f5c3061Lọc đơn của một khách (mã customer_id ở API khách hàng).
partner_id[]queryint[]Không15Lọc theo ĐVVC (mã ở /partners, vd 15 = J&T, 5 = GHN).
order_sources[]querystringKhông-1Lọc nguồn đơn (mã ở /order_source, vd -1 = Facebook). Kèm is_filter_exclude_source=true để loại trừ.
ad_ids[]querystring[]Không120212345678900123Lọc theo mã quảng cáo Facebook.
extra_fields[]querystring[]Khôngreturn_rateTrường bổ sung (vd return_rate, conversation_note).

Phân trang

page_number = 1, 2, … tới total_pages; page_size tối đa 1000. Quét đồng bộ nên cố định option_sort=inserted_at_asc hoặc lọc theo updateStatus=updated_at để không trượt khi có đơn mới chen vào.

Ví dụ request

curl -s "https://partner.quantri360.com/v1/pancake_pos/shops/1234567/orders?page_number=1&page_size=100&updateStatus=inserted_at&startDateTime=1790787600&endDateTime=1793206799&filter_status[]=%5B3%5D" \
  -H "Authorization: Bearer $KEY"
Python
import requests

KEY = "q360_live_..."  # khóa API của brand
r = requests.get(
    "https://partner.quantri360.com/v1/pancake_pos/shops/1234567/orders",
    params={
        "page_number": 1,
        "page_size": 100,
        "updateStatus": "inserted_at",
        "startDateTime": 1790787600,
        "endDateTime": 1793206799,
        "filter_status[]": [
            3
        ]
    },
    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/pancake_pos/shops/1234567/orders');
for (const [k, v] of Object.entries({"page_number":1,"page_size":100,"updateStatus":"inserted_at","startDateTime":1790787600,"endDateTime":1793206799,"filter_status[]":[3]})) 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/pancake_pos/shops/1234567/orders' . '?' . http_build_query(['page_number' => 1, 'page_size' => 100, 'updateStatus' => 'inserted_at', 'startDateTime' => 1790787600, 'endDateTime' => 1793206799, 'filter_status[]' => '[3]']);
$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 Pancake POS)

TênKiểuMẫuMô tả
successbooltrue
page_numberint1
page_sizeint100
total_entriesint9374Tổng số đơn khớp bộ lọc.
total_pagesint94
aggsobjectTổng hợp trên TOÀN BỘ kết quả lọc (không chỉ trang hiện tại).
cod.valuenumber7954541575Tổng tiền thu hộ (VND).
shipping_fee.valuenumber92592221Tổng phí ship thu khách.
partner_fee.valuenumber199109343Tổng phí ĐVVC.
prepaid.valuenumber127411710Tổng tiền trả trước.
status.bucketsobject[]Số đơn theo trạng thái: `{ key: "3", doc_count: 6255 }` (key là chuỗi).
dataobject[]Đơn hàng (cùng cấu trúc với API chi tiết đơn).
idint9721Mã đơn (dùng cho /orders/{ORDER_ID}).
system_idint9721Mã hệ thống.
statusint2Mã trạng thái — xem ghi chú.
status_namestringshippedTên trạng thái dạng mã tiếng Anh (`new`, `submitted`, `shipped`, `delivered`, `returning`, `returned`, `canceled`…).
inserted_atstring2026-10-28T10:41:43.004047Tạo đơn — GIỜ UTC, không kèm múi giờ (+7 ra giờ VN).
updated_atstring2026-10-29T11:00:46.790865Cập nhật cuối (UTC).
total_priceint447000Tổng tiền hàng (VND, số nguyên).
total_discountint0Tổng giảm giá.
shipping_feeint30000Phí ship thu khách.
codint477000Tiền thu hộ.
prepaid / transfer_money / cashint0Đã trả trước / chuyển khoản / tiền mặt.
money_to_collectint477000Số tiền còn phải thu.
partner_feeint0Phí ĐVVC.
order_currencystringVND
order_sourcesstring-1Mã nguồn đơn (`-1` = Facebook…).
order_sources_namestringFacebook
account / account_namestring107896751234567 / Shop ABCTài khoản nguồn (vd page Facebook).
page_id / conversation_id / ad_id / post_idstringGắn với Facebook: trang, hội thoại, quảng cáo, bài viết sinh ra đơn.
bill_full_name / bill_phone_number / bill_emailstringNguyễn Văn A / 0901234567Người mua.
shipping_addressobjectĐịa chỉ giao: full_name, phone_number, address, full_address, province_id / province_name, district_id / district_name, commune_id / commune_name, new_full_address, new_province_id, new_commune_id (địa giới mới)…
itemsobject[]Dòng hàng: id, quantity, variation_id, product_id, discount_each_product, is_bonus_product, returned_count, variation_info{ name, display_id, barcode, retail_price, fields… }…
partnerobjectVận chuyển: partner_id, partner_name (vd `J&T`), extend_code (mã vận đơn), cod, total_fee, picked_up_at, paid_at, extend_update[] (hành trình: status, location, update_at kèm +07:00)…
status_historyobject[]Lịch sử đổi trạng thái: status, old_status, updated_at (UTC), editor{ id, name }.
customerobjectKhách: id, customer_id, name, phone_numbers, order_count, succeed_order_count, purchased_amount, reward_point…
tagsobject[][]Thẻ đơn (id, name).
warehouse_id / warehouse_infoKho xuất.
creator / assigning_seller / assigning_care / marketerobjectNhân viên tạo / bán / chăm sóc / marketer.
…Còn ~100 trường: note, note_print, returned_reason, sub_status, p_utm_*, histories, einvoices, fee_marketplace, advanced_platform_fee…

Mẫu phản hồi

{
  "success": true,
  "page_number": 1,
  "page_size": 1,
  "total_entries": 9374,
  "total_pages": 9374,
  "aggs": {
    "cod": {
      "value": 7954541575
    },
    "shipping_fee": {
      "value": 92592221
    },
    "partner_fee": {
      "value": 199109343
    },
    "prepaid": {
      "value": 127411710
    },
    "status": {
      "buckets": [
        {
          "key": "3",
          "doc_count": 6255
        },
        {
          "key": "5",
          "doc_count": 1210
        },
        {
          "key": "2",
          "doc_count": 1096
        }
      ]
    }
  },
  "data": [
    {
      "id": 9721,
      "system_id": 9721,
      "status": 2,
      "status_name": "shipped",
      "inserted_at": "2026-10-28T10:41:43.004047",
      "updated_at": "2026-10-29T11:00:46.790865",
      "total_price": 447000,
      "total_discount": 0,
      "shipping_fee": 30000,
      "cod": 477000,
      "order_currency": "VND",
      "order_sources": "-1",
      "order_sources_name": "Facebook",
      "account": "107896751234567",
      "account_name": "Shop ABC",
      "bill_full_name": "Nguyễn Văn A",
      "bill_phone_number": "0901234567",
      "items": [
        {
          "id": 11350153179,
          "quantity": 1,
          "discount_each_product": 0,
          "is_bonus_product": false,
          "variation_info": {
            "name": "WDHBD2020/Màu 1 - Đen/M",
            "retail_price": 447000
          }
        }
      ],
      "partner": {
        "partner_id": 15,
        "partner_name": "J&T",
        "extend_code": "802851400000",
        "cod": 0,
        "total_fee": 0,
        "extend_update": [
          {
            "status": "Kiện hàng đến kho trung chuyển",
            "update_at": "2026-10-29T18:53:09+07:00"
          }
        ]
      },
      "status_history": [
        {
          "status": 0,
          "old_status": null,
          "updated_at": "2026-10-28T10:41:42"
        },
        {
          "status": 1,
          "old_status": 0,
          "updated_at": "2026-10-28T10:41:48"
        },
        {
          "status": 2,
          "old_status": 9,
          "updated_at": "2026-10-29T11:00:46"
        }
      ]
    }
  ]
}

Bắt đầu dùng

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