Bỏ qua để đến nội dung

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

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.