Kiến thức thanh toán

Đối soát chuyển khoản: 6 trường hợp lệch hay gặp

Chuyển thiếu, chuyển thừa, trả nhiều lần, gộp nhiều đơn, sai nội dung và webhook trùng: dấu hiệu nhận biết, cách xử lý tự động và khi nào cần người kiểm tra.

Nội dung bài viết
  1. 1. Chuyển thiếu
  2. 2. Chuyển thừa
  3. 3. Một đơn trả nhiều lần
  4. 4. Một lần chuyển cho nhiều đơn
  5. 5. Sai hoặc thiếu nội dung
  6. 6. Webhook trùng
  7. Quy trình đối soát cuối ngày
  8. BankOpenAPI làm gì ở đây

Nếu mọi khách đều chuyển đúng số tiền, đúng nội dung, đúng một lần thì không cần đối soát. Thực tế không như vậy. Bài này liệt kê sáu trường hợp lệch hay gặp nhất khi nhận tiền bằng chuyển khoản, kèm cách để hệ thống tự xử lý phần lớn và chỉ đẩy phần còn lại cho người.

1. Chuyển thiếu

Khách chuyển 1.200.000đ cho đơn 1.250.000đ, thường do gõ nhầm hoặc trừ phí.

  • Tự động: ghi nhận số đã trả, chuyển đơn sang trạng thái "thanh toán một phần", báo khách số còn thiếu.
  • Cần người: khi phần thiếu nhỏ và shop muốn bỏ qua. Nên có ngưỡng cấu hình được, ví dụ thiếu dưới 1.000đ thì coi như đủ.

2. Chuyển thừa

Khách chuyển 1.300.000đ cho đơn 1.250.000đ.

  • Tự động: xác nhận đơn, ghi phần thừa vào số dư hoặc ví của khách nếu hệ thống có ví.
  • Cần người: khi phải trả lại phần thừa cho khách.

3. Một đơn trả nhiều lần

Khách chia tiền làm hai, ba lần chuyển, hay gặp với đơn giá trị lớn.

  • Tự động: cộng dồn các giao dịch có cùng mã đơn hoặc cùng virtual account, xác nhận đơn khi tổng đủ.
  • Lưu ý: đặt thời hạn cho đơn. Quá hạn mà chưa đủ tiền thì báo người xử lý.

4. Một lần chuyển cho nhiều đơn

Khách đặt ba đơn rồi chuyển một lần, nội dung ghi DH1024 DH1025 DH1026.

  • Tự động: tìm tất cả mã đơn trong nội dung. Nếu tổng tiền các đơn bằng số tiền nhận thì xác nhận cả ba.
  • Cần người: khi tổng không khớp, vì không biết nên phân bổ tiền cho đơn nào.

5. Sai hoặc thiếu nội dung

Khách không ghi gì, ghi tên mình, hoặc ghi nhầm mã đơn.

  • Tự động: nếu tiền vào virtual account thì vẫn khớp được theo số tài khoản nhận. Nếu tiền vào tài khoản chính, có thể gợi ý đơn đang chờ có cùng số tiền, nhưng đừng tự xác nhận.
  • Cần người: đưa vào danh sách "giao dịch chưa khớp" để kế toán gán tay.

Đây là lý do nên dùng virtual account cho khách trả thường xuyên: trường hợp này gần như biến mất.

6. Webhook trùng

Cùng một giao dịch được gửi tới server hai lần do retry hoặc gửi lại thủ công. Nếu không chặn, đơn bị xác nhận hai lần, hoặc tệ hơn, số dư của khách bị cộng hai lần.

  • Tự động: dùng ID giao dịch làm khóa chống trùng (idempotency key). Giao dịch đã có trong database thì bỏ qua và vẫn trả 200.

Bài Nhận webhook báo có không mất, không trùng có đoạn code mẫu cho phần này.

Quy trình đối soát cuối ngày

Ngay cả khi phần lớn giao dịch được khớp tự động, vẫn nên có một bước đối soát mỗi ngày:

  1. Lấy tổng tiền vào theo từng tài khoản ngân hàng trong ngày.
  2. Lấy tổng tiền của các đơn đã xác nhận trong ngày.
  3. So hai con số. Nếu lệch, mở danh sách giao dịch chưa khớp và các đơn thanh toán một phần.
  4. Xử lý xong thì đánh dấu ngày đó đã đối soát.

Bước này chỉ mất vài phút nếu hệ thống chuẩn bị sẵn danh sách lệch, thay vì phải tải sao kê về rồi dò bằng Excel.

BankOpenAPI làm gì ở đây

BankOpenAPI tự khớp tiền về với đơn, gửi webhook kèm kết quả khớp, và lập báo cáo đối soát theo ngày, theo tài khoản, trong đó có danh sách giao dịch chưa khớp đơn. Phần cần người quyết định thì bạn chỉ phải xem đúng những giao dịch đó.

Bắt đầu với BankOpenAPI

Đăng ký tài khoản, liên kết tài khoản ngân hàng và nhận webhook báo có đầu tiên. Cần tư vấn thì nhắn chúng tôi.