Error Codes
The revenue sharing flow uses 3 different code types:
| Type | Field | Meaning |
|---|---|---|
| Response code | ResponseCode | Whether Baokim received the request |
| Disbursement order status | Data.Status | Money transfer result of disbursement order |
| Error details | Data.ErrorCode, Data.Retryable | Reason 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
| Code | Meaning | API | CashPlus should do |
|---|---|---|---|
| 200 | Success | All | Read Data |
| 11 | Request failed | Registration, Query | Check request (missing object or required field) |
| 101 | Processing error on Baokim side | All | Retry. For disbursement order: retry same ReferenceId |
| 102 | RequestId or RequestTime invalid | All | Fix RequestId/RequestTime, retry |
| 103 | User Code invalid | Registration, Disbursement order (User) | Check that the User has been synced |
| 104 | User Account Number invalid | Registration, Disbursement order (User) | Fix the account number to match the synced account |
| 105 | User Amount invalid | Registration | Fix User.Amount |
| 106 | Merchant Amount invalid | Registration | Fix Merchant.Amount |
| 107 | Merchant Type / Type invalid | Registration, Disbursement order | Fix Type per Type rules |
| 108 | Partner Amount invalid | Registration | Fix Partner.Amount |
| 109 | Total Amount invalid (U + M + P > N) | Registration | Reduce share amounts |
| 110 | Partner Code invalid | All | Check PartnerCode |
| 111 | User Bank No invalid | Registration, Disbursement order (User) | Fix the bank code to match the synced account |
| 112 | Transaction ID invalid | Registration, Disbursement order, Query | Transaction does not exist or does not belong to PartnerCode |
| 113 | User memo invalid | Registration | Add User.Memo |
| 114 | Merchant memo invalid | Registration | Add Merchant.Memo |
| 115 | User Is New User invalid | Registration | User.IsNewUser = 1 or 2 |
| 119 | User account cannot receive funds | Disbursement 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 |
| 120 | Signature invalid | All | Check signature |
| 125 | Insufficient amount to cover disbursement fee | Disbursement order | The amount registered for the receiver does not cover the realtime fee |
| 133 | Share amounts not registered | Disbursement order | Call Share amount registration first |
| 134 | Receiver has an active order (Status 0, 99, or 200) | Disbursement order | Look up the previous order, do not make a new order |
| 136 | Amount differs from the amount registered for the receiver | Disbursement order | Send Amount exactly equal to the registered amount |
| 137 | Disbursement order does not exist | Query | If still before cutoff: call the order again (preferably with the same ReferenceId) |
| 138 | ReferenceId invalid | Disbursement order, Query | Fix ReferenceId |
| 141 | Past the 23:50:59 cutoff of the transaction day | Registration, Disbursement order | Stop, do not retry. The amount is settled to the Merchant on T+1 |
| 142 | ReferenceId already used for an order with different content | Disbursement order | Use a new ReferenceId for a new order; look up the old ReferenceId if needed |
| 143 | Transaction was registered through a different API version, or API v1 has been shut down | Registration, Disbursement order | Use the same version the transaction was registered with (see API version) |
Status — Disbursement order status
| Status | Meaning | Final | Receiver amount | CashPlus should do |
|---|---|---|---|---|
| 0 | T+1 order accepted, waiting for disbursement in the settlement period | ❌ | Holding | Wait for webhook |
| 99 | Baokim processing, no final result yet | ❌ | Holding | Wait for webhook or query. Do not make new order for this receiver |
| 200 | Disbursement successful | ✅ | Disbursed | Confirm success |
| 11 | Disbursement failed, money not transferred | ✅ | Not disbursed | Check Retryable and ErrorCode |
200and11are final states, no change after.- Baokim only returns
11when it is certain the money has not been sent. If not certain, the order stays at99until a result is available. - Order
11is 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 newReferenceId, before cutoff);false= do not retry.
| Group | Retryable | Example | CashPlus should do |
|---|---|---|---|
| User receiving account errors (account does not exist, locked, e-wallet, identified account that does not accept transfers) | false | 118 | Do not retry the User order. Notify the customer. The User share goes to the Merchant on T+1 |
| Limit exceeded, bank error, system error | true | 129, 130 | Call 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.