Chuyển tới nội dung chính

Mã lỗi

Luồng chia sẻ tiền dùng 3 loại mã khác nhau:

LoạiTrườngÝ nghĩa
Mã phản hồiResponseCodeRequest có được Baokim tiếp nhận hay không
Trạng thái lệnh chiData.StatusKết quả chuyển tiền của lệnh chi
Mã lỗi chi tiếtData.ErrorCode, Data.RetryableNguyên nhân khi lệnh chi thất bại (Status=11) và có được gọi lại không

ResponseCode=200 chỉ có nghĩa là Baokim đã nhận request. Muốn biết tiền đã chuyển hay chưa, xem Status.

Mã lỗi của nhóm API thu hộ và tra cứu dữ liệu được ghi ở từng trang API tương ứng.

ResponseCode — Mã phản hồi​

MãÝ nghĩaAPICashPlus nên làm
200Thành côngTất cảĐọc Data
11Yêu cầu thất bạiĐăng ký, Tra cứuKiểm tra lại request (thiếu object hoặc trường bắt buộc)
101Lỗi trong quá trình xử lý bên BaokimTất cảGọi lại. Với lệnh chi: gọi lại cùng ReferenceId
102RequestId hoặc RequestTime không hợp lệTất cảSửa RequestId/RequestTime, gọi lại
103User Code không hợp lệĐăng ký, Lệnh chi (User)Kiểm tra User đã đồng bộ tài khoản
104User Account Number không hợp lệĐăng ký, Lệnh chi (User)Sửa số tài khoản cho khớp tài khoản đã đồng bộ
105User Amount không hợp lệĐăng kýSửa User.Amount
106Merchant Amount không hợp lệĐăng kýSửa Merchant.Amount
107Merchant Type / Type không hợp lệĐăng ký, Lệnh chiSửa Type theo quy tắc Type
108Partner Amount không hợp lệĐăng kýSửa Partner.Amount
109Total Amount không hợp lệ (U + M + P > N)Đăng kýGiảm số chia
110Partner Code không hợp lệTất cảKiểm tra PartnerCode
111User Bank No không hợp lệĐăng ký, Lệnh chi (User)Sửa mã ngân hàng cho khớp tài khoản đã đồng bộ
112Transaction ID không hợp lệĐăng ký, Lệnh chi, Tra cứuGiao dịch không tồn tại hoặc không thuộc PartnerCode
113User memo không hợp lệĐăng kýBổ sung User.Memo
114Merchant memo không hợp lệĐăng kýBổ sung Merchant.Memo
115User Is New User không hợp lệĐăng kýUser.IsNewUser = 1 hoặc 2
119Tài khoản User không nhận được tiềnLệnh chi (User)Lệnh User trước đó đã thất bại vì lỗi tài khoản User. Không gọi lại; phần User về Merchant T+1
120Chữ ký không chính xácTất cảKiểm tra chữ ký
125Số tiền không đủ trả phí chiLệnh chiSố đăng ký cho người nhận không đủ trả phí realtime
133Chưa đăng ký số tiền chia sẻLệnh chiGọi Đăng ký số tiền chia sẻ trước
134Người nhận đang có lệnh hiệu lực (Status 0, 99 hoặc 200)Lệnh chiTra cứu lệnh cũ, không gọi lệnh mới
136Số tiền khác số đã đăng ký cho người nhậnLệnh chiGửi Amount bằng đúng số đã đăng ký
137Lệnh chi không tồn tạiTra cứuNếu còn trước cutoff: gọi lại lệnh (nên dùng cùng ReferenceId)
138ReferenceId không hợp lệLệnh chi, Tra cứuSửa ReferenceId
141Quá thời gian cutoff 23:50:59 ngày giao dịchĐăng ký, Lệnh chiDừng, không gọi lại. Phần tiền được quyết toán T+1 về Merchant
142ReferenceId đã dùng cho lệnh khác nội dungLệnh chiDùng ReferenceId mới cho lệnh mới; tra cứu ReferenceId cũ nếu cần
143Giao dịch đã đăng ký qua phiên bản API khác, hoặc API v1 đã ngừngĐăng ký, Lệnh chiDùng đúng phiên bản đã đăng ký giao dịch (xem Phiên bản API)

Status — Trạng thái lệnh chi​

StatusÝ nghĩaTrạng thái cuốiTiền của người nhậnCashPlus nên làm
0Lệnh T+1 đã tiếp nhận, chờ chi theo kỳ quyết toán❌Đang giữChờ webhook
99Baokim đang xử lý, chưa có kết quả cuối❌Đang giữChờ webhook hoặc tra cứu. Không gọi lệnh mới cho người nhận này
200Chi thành công✅Đã chiGhi nhận thành công
11Chi thất bại, tiền chưa ra✅Chưa chiXem Retryable và ErrorCode
  • 200 và 11 là trạng thái cuối, không thay đổi nữa.
  • Baokim chỉ trả 11 khi chắc chắn tiền chưa ra. Chưa chắc chắn thì lệnh giữ 99 cho tới khi có kết quả.
  • Lệnh 11 không được Baokim tự chi lại. Không gọi lại trước cutoff thì phần tiền đó về Merchant T+1.

ErrorCode — Mã lỗi chi tiết của lệnh chi​

Khi Status=11, lệnh có thêm:

  • ErrorCode: mã lỗi từ hệ thống chi.
  • Retryable: true = được gọi lệnh mới (với ReferenceId mới, trước cutoff); false = không gọi lại.
NhómRetryableVí dụCashPlus nên làm
Lỗi tài khoản nhận của User (tài khoản không tồn tại, bị khóa, ví điện tử, tài khoản định danh không nhận chuyển khoản)false118Không gọi lại lệnh User. Báo cho khách. Phần User về Merchant T+1
Vượt hạn mức, lỗi ngân hàng, lỗi hệ thốngtrue129, 130Gọi lệnh mới trước cutoff, hoặc để phần đó về Merchant T+1

Danh sách đầy đủ ErrorCode theo từng nhóm được Baokim cung cấp khi tích hợp. CashPlus nên dựa vào Retryable, không tự phân loại theo ErrorCode.

Ví dụ​

Gọi trùng ReferenceId — Lần 1 timeout, CashPlus gọi lại cùng ReferenceId=CPSPEND0001 với cùng nội dung → ResponseCode=200, Data là lệnh đã tạo ở lần 1, không phát sinh lệnh mới. Gọi lại cùng ReferenceId nhưng khác Amount → 142.

Người nhận đang có lệnh hiệu lực — Lệnh Merchant CPSPEND0001 đang Status=99, CashPlus gọi Merchant với ReferenceId=CPSPEND0002 → ResponseCode=134.

Hết hạn mức — Lệnh User trả Status=11, ErrorCode=129, Retryable=true. CashPlus gọi lệnh User mới với ReferenceId mới trước 23:50:59.

Lỗi tài khoản User — Lệnh User trả Status=11, ErrorCode=118, Retryable=false. CashPlus gọi lệnh User mới → 119. Phần User được quyết toán về Merchant tại cutoff.