Bỏ qua tới nội dung
QH2Pay Tài liệu Lấy API Token
Trong trang này

Lịch sử giao dịch

API truy vấn lịch sử giao dịch của các tài khoản ngân hàng thuộc về bạn.

GET /api/transactions
  • Xác thực: bắt buộc — Authorization: Bearer {token} (xem Xác thực).
  • Trả về các giao dịch thuộc tất cả tài khoản ngân hàng của chủ token.
  • Mặc định lấy giao dịch trong ngày hiện tại; muốn khoảng khác thì truyền transaction_date_from / transaction_date_to.
  • Kết quả sắp xếp theo transaction_date giảm dần (mới nhất trước) và được phân trang.

#Tham số truy vấn

Tất cả đều tùy chọn.

Tham số Kiểu Mặc định Mô tả
q string — Tìm kiếm (LIKE) theo reference_number, transaction_content, transaction_id
bank_account_id string (UUID) — Lọc theo một tài khoản ngân hàng. UUID phải thuộc về chủ token
type string — Lọc theo chiều tiền: in (tiền vào) hoặc out (tiền ra)
transaction_date_from date (Y-m-d) hôm nay Ngày bắt đầu (bao gồm)
transaction_date_to date (Y-m-d) hôm nay Ngày kết thúc (bao gồm). Tối đa 90 ngày kể từ from
per_page int (1–100) 20 Số bản ghi mỗi trang
page int 1 Trang hiện tại

Quy tắc khoảng thời gian:

  • Không truyền cả from lẫn to → lấy trong ngày hôm nay.
  • Chỉ truyền một trong hai → khoảng thời gian gói trọn trong đúng ngày đó.
  • from phải <= to, và khoảng cách tối đa 90 ngày.

#Ví dụ request

curl -G "https://app.qh2pay.com/api/transactions" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  --data-urlencode "q=LE THANH" \
  --data-urlencode "type=in" \
  --data-urlencode "transaction_date_from=2026-06-01" \
  --data-urlencode "transaction_date_to=2026-06-10" \
  --data-urlencode "per_page=20"
const params = new URLSearchParams({
  q: "LE THANH",
  type: "in",
  transaction_date_from: "2026-06-01",
  transaction_date_to: "2026-06-10",
  per_page: "20",
});

const res = await fetch(`https://app.qh2pay.com/api/transactions?${params}`, {
  headers: {
    Authorization: `Bearer ${API_TOKEN}`,
    Accept: "application/json",
  },
});
const json = await res.json();

#Response 200 OK

{
  "data": [
    {
      "id": 1032,
      "reference_number": "0551dTCO-82LiomOss",
      "transaction_content": "MBVCB.11081239687.703327.LE THANH TRUNG chuyen tien",
      "transaction_id": "20250812083338000006",
      "bank_account_id": "ca0a96f9-7ac2-4470-be2f-89f854a27cef",
      "virtual_number": "V3QHT8888",
      "amount": 150000,
      "type": 1,
      "type_label": "in",
      "status": 0,
      "transaction_date": "2026-06-10 08:33:38",
      "created_at": "2026-06-10 15:12:34"
    }
  ],
  "links": {
    "first": "https://app.qh2pay.com/api/transactions?page=1",
    "last": "https://app.qh2pay.com/api/transactions?page=3",
    "prev": null,
    "next": "https://app.qh2pay.com/api/transactions?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 3,
    "per_page": 20,
    "to": 20,
    "total": 57
  }
}

#Mô tả field trong data[]

Field Kiểu Mô tả
id int ID giao dịch
reference_number string | null Mã tham chiếu (core reference)
transaction_content string Nội dung / diễn giải giao dịch
transaction_id string Mã giao dịch
bank_account_id string (UUID) Tài khoản ngân hàng phát sinh giao dịch
virtual_number string | null Số tài khoản ảo (nếu có)
amount int Số tiền (VND)
type int 1 = tiền vào, 2 = tiền ra
type_label string in (tiền vào) hoặc out (tiền ra)
status int Trạng thái giao dịch
transaction_date string (Y-m-d H:i:s) Thời điểm giao dịch thực tế
created_at string (Y-m-d H:i:s) Thời điểm hệ thống ghi nhận

links và meta là cấu trúc phân trang chuẩn của Laravel API Resource — dùng meta.last_page / links.next để duyệt qua các trang.

#Lỗi validate

Tình huống HTTP Body
from > to 422 { "message": "transaction_date_from phải nhỏ hơn hoặc bằng transaction_date_to." }
Khoảng > 90 ngày 422 { "message": "Khoảng thời gian tối đa là 90 ngày." }
Sai kiểu dữ liệu tham số 422 Body lỗi validate chuẩn Laravel ({ "message": ..., "errors": { ... } })