Skip to content

Thanh toán — chuyển khoản / COD / QR không khớp

This content is not available in your language yet.

Sau vận chuyển, đối soát thanh toán là nguồn rắc rối lớn nhất của shop VN. Trang này xử lý các case phổ biến: chuyển khoản sai, QR không tự xác nhận, COD thu hộ chậm, MoMo/VNPay không khớp.

Dấu hiệu / tình huống Mã/trạng thái Nguyên nhân chính Sửa ở đâu
Khách chuyển rồi nhưng đơn vẫn Chờ thanh toán payment_status: pending SePay webhook chưa nhận / cú pháp QR sai Chuyển khoản không tự khớp
“Chuyển khoản thành công” nhưng số tiền lệch amount_mismatch Khách chuyển thiếu/thừa Sai số tiền
Đơn có mã giao dịch nhưng nội dung để sai reference_not_matched Khách gõ nội dung sai cú pháp Sai nội dung CK
COD đã giao nhưng đơn không sang Đã thanh toán cod_pending Carrier chưa đẩy kết quả thu hộ COD thu hộ chậm
MoMo / VNPay quét xong không đổi trạng thái Chưa kết nối / webhook gateway fail MoMo/VNPay không khớp
SePay báo webhook tới nhưng đơn không update webhook_received + match_failed reference_code không khớp mã đơn Đối soát thủ công

Luồng đúng: khách quét VietQR (có mã đơn trong nội dung) → chuyển → SePay webhook nhận trong ~1 phút → đơn tự sang Đã thanh toán. Nếu không khớp:

  1. Vào Đơn hàng → mở đơn → xem mục Thanh toán.
  2. Kiểm tra QR gửi cho khách có chứa đúng mã đơn trong reference_code không. (QR chuẩn sinh tự động từ TrolyPage — nếu bạn copy QR cũ/generic thì không khớp.)
  3. Vào Kênh thanh toán SePay → kiểm tra badge 🟢 Đã kết nối. Nếu 🔴 → Webhook troubleshooting.
  4. Đợi 1-5 phút (SePay đôi khi trễ trong giờ cao điểm ngân hàng).

2. Khách chuyển sai số tiền (thiếu/thừa)

Phần tiêu đề “2. Khách chuyển sai số tiền (thiếu/thừa)”
  • Thiếu: đơn không tự khớp (vì amount_receivedtotal_amount).
    • Fix: báo khách chuyển bổ sung phần thiếu (cùng cú pháp mã đơn), HOẶC bạn đối soát thủ công + ghi chú phần còn thiếu.
  • Thừa (khách làm tròn lên / chuyển nhầm nhiều hơn): đơn vẫn khớp nếu SePay cho sai số ±0. Nếu không khớp → đối soát thủ công + hoàn tiền phần thừa cho khách.

QR VietQR sinh sẵn nội dung chuẩn (vd DH9821). Nếu khách xóa/sửa nội dung khi chuyển → SePay không match được reference_code.

  • Fix: yêu cầu khách chuyển lại đúng cú pháp, HOẶC bạn đối soát thủ công dựa vào số tiền + thời gian + tên khách.

Carrier (ViettelPost, GHN…) thu tiền hộ khi giao thành công, rồi đẩy kết quả về TrolyPage qua Goship.

  • Đơn giao xong nhưng vẫn Chờ thanh toán (COD) → bình thường trong 2-12 giờ (carrier cần thời gian đối soát nội bộ).
  • Quá 24 giờ chưa update → Vận đơn → bấm Làm mới trạng thái → nếu vẫn không có kết quả thu hộ → liên hệ carrier/Goship kèm mã vận đơn.

COD ≠ chuyển khoản ngay

COD luôn chậm hơn chuyển khoản QR. Đừng báo khách “đã thanh toán” cho đến khi trạng thái đơn thực sự sang Đã thanh toán.

MoMo/VNPay qua API gateway riêng (không phải SePay). Nếu quét xong không update:

  1. Vào Kênh thanh toán → kiểm tra MoMo/VNPay đã kết nối.
  2. Nếu chưa kết nối → hiện chưa hỗ trợ tự động → phải đối soát thủ công.
  3. Nếu đã kết nối mà fail → Webhook troubleshooting (gateway webhook fail).

Khi webhook không tự khớp được (số tiền lệch, nội dung sai, COD chậm):

  1. Vào Đơn hàng → mở đơn.
  2. Bấm Đánh dấu đã thanh toán (hoặc sửa payment_statuspaid).
  3. Nhập mã giao dịch (nếu có) + ghi chú nguồn (chuyển khoản tay/COD/đối soát thủ công) để sau này kiểm tra được.
  4. Lưu.