Đọc tin biến động số dư API

Đọc SMS, thông báo biến động số dư của ngân hàng Việt Nam: số tiền +/−, số dư, thời gian, số tài khoản đã che, nội dung chuyển khoản và mã đơn hàng.

GETPOSThttps://apibox.io.vn/v1/vn-bank-notify
Dữ liệu & JSON▶ Dùng thử online

Gửi nội dung tin nhắn SMS, thông báo app hoặc email "biến động số dư" của ngân hàng (Vietcombank, VietinBank, BIDV, Agribank, Techcombank, MB, ACB, VPBank, TPBank, Sacombank…), API trả về ngân hàng, chiều giao dịch (in tiền vào / out tiền ra), số tiền, số dư sau giao dịch, thời gian (ISO, giờ Việt Nam), số tài khoản đã che chỉ còn 4 số cuối, nội dung chuyển khoản nguyên văn và bản chuẩn hoá (chữ in hoa, không dấu như ngân hàng gửi), cùng mã tham chiếu (FT…, Ref). Bộ đọc dựa trên từ khoá và định dạng số chứ không gắn cứng một mẫu cho mỗi ngân hàng, nên mẫu tin lạ hoặc mới đổi vẫn cho kết quả một phần, kèm confidence và warnings.

Lấy mã đơn hàng trong nội dung bằng prefix (vd. DH nhận DH1234, "DH 1234", "DH-1234") hoặc pattern (biểu thức chính quy, tối đa 100 ký tự). Gửi kèm orders ([{"code": "DH1234", "amount": 500000}]) để khớp thanh toán: ưu tiên theo mã, sau đó theo số tiền duy nhất, trả status matched (đủ) / underpaid (thiếu) / overpaid (thừa) và số chênh lệch. Xử lý hàng loạt tới 100 tin bằng messages, kèm danh sách đơn chưa được thanh toán.

Đây là lõi của luồng "chuyển khoản tự xác nhận" tự dựng (chuyển tiếp SMS từ điện thoại Android, hook email, webhook thông báo ngân hàng). Không lưu, không ghi log nội dung; số tài khoản được che trong kết quả.

Tham số

TênVị tríKiểuBắt buộcMặc định
textbody|querystringcóNội dung thông báo (tối đa 2.000 ký tự). Hoặc messages: mảng tối đa 100 tin.
prefixbody|querystringkhôngTiền tố mã đơn cần lấy trong nội dung, vd. DH (chữ, số, tối đa 12 ký tự).
patternbody|querystringkhôngBiểu thức chính quy cho mã đơn thay cho prefix (tối đa 100 ký tự, không lồng lượng từ).
bankbody|querystringkhôngNgân hàng khi tin không ghi tên (mã VietQR VCB, ICB, BIDV, MB…, tên hoặc BIN).
ordersbodyarraykhôngCác khoản chờ thanh toán [{"code", "amount", "id"?}] (tối đa 1.000) để đối chiếu.
expected_amountbody|querynumberkhôngMột số tiền cần nhận (khi không gửi orders): trạng thái đủ / thiếu / thừa.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/vn-bank-notify" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"MBBank: TK 07xxx123|GD: +350,000VND 10/11/26 09:15 |SD: 2,350,000VND|ND: DH777 chuyen khoan","prefix":"DH"}'

Kết quả trả về

{
  "bank": {
    "code": "MB",
    "bin": "970422",
    "short_name": "MBBank",
    "name": "Ngân hàng TMCP Quân đội"
  },
  "direction": "in",
  "amount": 350000,
  "signed_amount": 350000,
  "currency": "VND",
  "amount_text": "GD: +350,000VND",
  "balance": 2350000,
  "account_masked": "****7123",
  "account_last4": "7123",
  "time": "2026-11-10T09:15:00+07:00",
  "time_text": "10/11/26 09:15",
  "content": "DH777 chuyen khoan",
  "content_normalized": "DH777 CHUYEN KHOAN",
  "reference": null,
  "order_code": "DH777",
  "confidence": 1,
  "warnings": []
}

Ứng dụng

  • Tự xác nhận đơn chuyển khoản từ SMS được chuyển tiếp
  • Đưa thông báo biến động số dư vào kế toán mà không cần cổng trả phí
  • Khớp tiền về với hoá đơn theo mã đơn và số tiền
  • Chuẩn hoá nội dung chuyển khoản bị ngân hàng cắt ngắn, bỏ dấu

Hỏi đáp

Hỗ trợ những ngân hàng nào?

Bộ đọc nhận các từ khoá phổ biến (TK, GD, PS, SD, ND, Ref…) mà mọi ngân hàng lớn đều dùng, và nhận biết ngân hàng qua tên trong tin hoặc tham số bank. Mẫu tin thay đổi vẫn đọc được một phần, kèm cảnh báo.

Dữ liệu có bị lưu không?

Không. Tin nhắn chỉ được xử lý trong bộ nhớ cho đúng yêu cầu đó, số tài khoản trả về đã được che (giữ 4 số cuối).

Khớp đơn hàng thế nào?

Theo mã đơn tìm thấy trong nội dung (bỏ qua dấu cách, gạch nối, dấu tiếng Việt), nếu không có thì theo số tiền duy nhất. Trạng thái cho biết tiền đủ, thiếu hay thừa.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →