Skip to main content

Error Codes

The revenue sharing flow uses 3 different code types:

TypeFieldMeaning
Response codeResponseCodeWhether Baokim received the request
Disbursement order statusData.StatusMoney transfer result of disbursement order
Error detailsData.ErrorCode, Data.RetryableReason when disbursement order fails (Status=11) and whether it can be retried

ResponseCode=200 only means Baokim received the request. To check if money was transferred, see Status.

Error codes for collection API and data query groups are documented on their respective API pages.

ResponseCode — Response code​

CodeMeaningAPICashPlus should do
200SuccessAllRead Data
11Request failedRegistration, QueryCheck request (missing object or required field)
101Processing error on Baokim sideAllRetry. For disbursement order: retry same ReferenceId
102RequestId or RequestTime invalidAllFix RequestId/RequestTime, retry
103User Code invalidRegistration, Disbursement order (User)Check that the User has been synced
104User Account Number invalidRegistration, Disbursement order (User)Fix the account number to match the synced account
105User Amount invalidRegistrationFix User.Amount
106Merchant Amount invalidRegistrationFix Merchant.Amount
107Merchant Type / Type invalidRegistration, Disbursement orderFix Type per Type rules
108Partner Amount invalidRegistrationFix Partner.Amount
109Total Amount invalid (U + M + P > N)RegistrationReduce share amounts
110Partner Code invalidAllCheck PartnerCode
111User Bank No invalidRegistration, Disbursement order (User)Fix the bank code to match the synced account
112Transaction ID invalidRegistration, Disbursement order, QueryTransaction does not exist or does not belong to PartnerCode
113User memo invalidRegistrationAdd User.Memo
114Merchant memo invalidRegistrationAdd Merchant.Memo
115User Is New User invalidRegistrationUser.IsNewUser = 1 or 2
119User account cannot receive fundsDisbursement order (User)A previous User order failed due to a User account error. Do not retry; the User share goes to the Merchant on T+1
120Signature invalidAllCheck signature
125Insufficient amount to cover disbursement feeDisbursement orderThe amount registered for the receiver does not cover the realtime fee
133Share amounts not registeredDisbursement orderCall Share amount registration first
134Receiver has an active order (Status 0, 99, or 200)Disbursement orderLook up the previous order, do not make a new order
136Amount differs from the amount registered for the receiverDisbursement orderSend Amount exactly equal to the registered amount
137Disbursement order does not existQueryIf still before cutoff: call the order again (preferably with the same ReferenceId)
138ReferenceId invalidDisbursement order, QueryFix ReferenceId
141Past the 23:50:59 cutoff of the transaction dayRegistration, Disbursement orderStop, do not retry. The amount is settled to the Merchant on T+1
142ReferenceId already used for an order with different contentDisbursement orderUse a new ReferenceId for a new order; look up the old ReferenceId if needed
143Transaction was registered through a different API version, or API v1 has been shut downRegistration, Disbursement orderUse the same version the transaction was registered with (see API version)

Status — Disbursement order status​

StatusMeaningFinalReceiver amountCashPlus should do
0T+1 order accepted, waiting for disbursement in the settlement period❌HoldingWait for webhook
99Baokim processing, no final result yet❌HoldingWait for webhook or query. Do not make new order for this receiver
200Disbursement successful✅DisbursedConfirm success
11Disbursement failed, money not transferred✅Not disbursedCheck Retryable and ErrorCode
  • 200 and 11 are final states, no change after.
  • Baokim only returns 11 when it is certain the money has not been sent. If not certain, the order stays at 99 until a result is available.
  • Order 11 is not auto-retried by Baokim. If not retried before cutoff, that amount goes to the Merchant on T+1.

ErrorCode — Disbursement order error details​

When Status=11, the order also includes:

  • ErrorCode: error code from the disbursement system.
  • Retryable: true = a new order may be called (with a new ReferenceId, before cutoff); false = do not retry.
GroupRetryableExampleCashPlus should do
User receiving account errors (account does not exist, locked, e-wallet, identified account that does not accept transfers)false118Do not retry the User order. Notify the customer. The User share goes to the Merchant on T+1
Limit exceeded, bank error, system errortrue129, 130Call a new order before cutoff, or let that share go to the Merchant on T+1

The full list of ErrorCode values by group is provided by Baokim during integration. CashPlus should rely on Retryable rather than classifying by ErrorCode itself.

Example​

Duplicate ReferenceId — First call timeout, CashPlus retries with same ReferenceId=CPSPEND0001 and the same content → ResponseCode=200, Data is order created at first call, no new order. Retrying the same ReferenceId with a different Amount → 142.

Receiver has an active order — Merchant order CPSPEND0001 at Status=99, CashPlus makes Merchant order with ReferenceId=CPSPEND0002 → ResponseCode=134.

Exceeded limit — User order returns Status=11, ErrorCode=129, Retryable=true. CashPlus makes a new User order with a new ReferenceId before 23:50:59.

User account error — User order returns Status=11, ErrorCode=118, Retryable=false. CashPlus makes a new User order → 119. The User share is settled to the Merchant at cutoff.