Overview
This document describes the API methods that partner uses to interact with the MoMo.
Web authentication flow

Mobile authentication flow

Unbind from Vendor flow

Unbind from MoMo flow

Using methods:
I - Authentication
1. Init authenticate
The following endpoint initiates an authentication.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/auth/v1/authenticate |
POST |
Reference to Headers |
Sample Request
{
"requestId": "UNIQUE_REQUEST_ID_wQbrU3t8Wye67g3yIi9k",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"returnUrl": "https://momo.partner.com/callback",
"notifyUrl": "https://momo.partner.com/notify",
"amount": 30000
}
Sample Response
{
"requestId": "UNIQUE_REQUEST_ID_wQbrU3t8Wye67g3yIi9k",
"referenceId": "TRACE_ID_CJGvpInCyl",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"data": {
"payUrl": "https://payment.momo.vn/gw/authorize/qr?id=1947590028485",
"qrCode": "https://payment.momo.vn/gw/authorize/s?id=1947590028485"
}
}
Payload
Request Parameters
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique identifier for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
| returnUrl |
String |
x |
L1 |
MoMo user will be redirect to this URL to get result 2. Callback |
| notifyUrl |
String |
x |
L1 |
MoMo will invoke 3. Notification |
| amount |
Integer |
|
L1 |
Payment amount |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code. "0" means SUCCESS |
| message |
String |
x |
L1 |
The result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| data |
JsonObject |
x |
L1 |
Response data when resultCode is 0 |
| payUrl |
String |
x |
L2 |
This URL is used to redirect user to MoMo app/web to confirm binding |
| qrCode |
String |
x |
L2 |
MoMo QR code to be displayed on partner site, which user can scan to open MoMo app and confirm binding |
2. Callback
The following endpoint sends the authenticate results to the partner via URL, please validate the checksum param to make sure the info received is correct.
| SERVER |
CLIENT |
END POINT |
METHOD |
| PARTNER |
MoMo app/web |
PARTNER-RETURN-URL?data=QUERY-STRING-BASED64 |
GET |
Sample request
https://momo.partner.com/callback?data=VGhpcyBpcyBzYW1wbGUgYmFzZWQ2NA==
This data param will be encrypted using Base64 before send to partner in query string
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"sessionKey": "g0ZGZmNjVmOWIjNTk2NTk4ZTYyZGI3",
"signature": "B3ABE5D8C69B38733AD57EA75E83BCAE42BBBBAC75E3A5445862ED2F8A2CD677"
}
Query string with these parameters:
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with requestId in [Init authenticate request] |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code |
| message |
String |
x |
L1 |
The result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| sessionKey |
String |
x |
L1 |
Session key, to be used to get Access token |
| signature |
String |
x |
L1 |
All field's values will be encryted by SHA256. Notes: all fields values are appended together without space. |
The signature is:
SHA256(
<requestId>
<referenceId>
<resultCode>
<message>
<localMessage>
<sessionKey>
<checksumKey>
)
3. Notification
The following endpoint pushes the authentication result to partner.
Partner returns the HTTP Status 200 to signal that they received authentication info.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| PARTNER |
MOMO |
notifyUrl in [Init authenticate request] |
POST |
Content-Type application/pgp-encrypted
Accept application/pgp-encrypted |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"sessionKey": "g0ZGZmNjVmOWIjNTk2NTk4ZTYyZGI3"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"resultCode": 0,
"message": "Success"
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with requestId in Init Payment request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| sessionKey |
String |
x |
L1 |
Session key, to be used to get Access token |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| resultCode |
Number |
x |
L1 |
Result code, partner return it based on Result Code |
| message |
String(100) |
x |
L1 |
Result message |
II - Bind
The following endpoint exchanges the Session Key for an Access Token
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/auth/v1/associateAccount |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"sessionKey": "g0ZGZmNjVmOWIjNTk2NTk4ZTYyZGI3",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"data": {
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej",
"maskWalletId": "******1714",
"aliasWalletId": "78bs8sbs9e6aq93458vbw321z"
}
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| sessionKey |
String |
x |
L1 |
Session key, received from authenticate processor in previous step |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code. "0" means SUCCESS |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| data |
JsonObject |
x |
L1 |
Response data when resultCode is 0 |
| accessToken |
String |
x |
L2 |
Token used to initiate purchases with the payment processor |
| maskWalletId |
String |
x |
L2 |
MoMo masked wallet ID (only show last 4 digits) |
| aliasWalletId |
String |
x |
L2 |
MoMo hash wallet ID |
III - Bind & Sale
The following endpoint exchanges the Session Key for an Access Token and get (sale) money from MoMo wallet.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/auth/v1/associateAndSale |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"sessionKey": "g0ZGZmNjVmOWIjNTk2NTk4ZTYyZGI3",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"partnerRefId": "UNIQUE_PARTNER_REF_ID_o32ihkdsf",
"amount": 50000
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"data": {
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej",
"maskWalletId": "******1714",
"aliasWalletId": "78bs8sbs9e6aq93458vbw321z"
}
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| sessionKey |
String |
x |
L1 |
Session key, received from authenticate processor in previous step |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
| partnerRefId |
String |
x |
L1 |
Unique merchant payment transaction ID |
| amount |
Integer |
x |
L1 |
Payment amount |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| data |
JsonObject |
x |
L1 |
Response data when resultCode is 0 |
| accessToken |
String |
x |
L2 |
Token used to initiate purchases with the payment processor |
| maskWalletId |
String |
x |
L2 |
MoMo masked wallet ID (only show last 4 digits) |
| aliasWalletId |
String |
x |
L2 |
MoMo hash wallet ID |
IV - Authorize / Sale
Partner either uses 1-step (Sale) or 2-step (Authorize + Capture) Flow
Authorize + Capture: Recommended for use cases where there is a delay between the time when user books a product/service and the time when the product/service is delivered, where partner might need to adjust the transaction amount or rollback the transaction.
Example: delivery/ ride sharing service
Sale: Recommended for all other use cases
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/pay/v1/authorize |
POST |
Reference to Headers |
| MOMO |
PARTNER |
/pay/v1/sale |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"partnerRefId": "UNIQUE_PARTNER_REF_ID_o32ihkdsf",
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej",
"amount": 50000,
"description": "Thanh toán dịch vụ",
"extraData": "Extra data"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"data": {
"momoTransId": "15239559159890"
}
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identify likes user id or email |
| partnerRefId |
String |
x |
L1 |
Unique merchant payment transaction ID |
| accessToken |
String |
x |
L1 |
Token for payment |
| amount |
Integer |
x |
L1 |
Payment amount in VND |
| description |
String |
|
L1 |
Description request |
| extraData |
String(300) |
|
L1 |
String contains extra data |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| data |
JsonObject |
x |
L1 |
Response data when resultCode is 0 |
| momoTransId |
String |
x |
L2 |
MoMo transaction ID. Using for capture function or rollback function |
V - Capture
The following endpoint allow partner get capture on MoMo wallet after invoke authorize function.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/pay/v1/capture |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"partnerRefId": "UNIQUE_PARTNER_REF_ID_o32ihkdsf",
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej",
"momoTransId": "15239559159890"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"data": {
"acceptAmount": 50000
}
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
| partnerRefId |
String |
x |
L1 |
Unique merchant payment transaction ID |
| accessToken |
String |
x |
L1 |
Token for payment |
| momoTransId |
String |
x |
L1 |
Get from authorize |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code. "0" means SUCCESS |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| data |
JsonObject |
x |
L1 |
Response data when resultCode is 0 |
| acceptAmount |
String |
x |
L2 |
Payment amount in VND, which equals Authorize amount |
VI - Rollback
The following endpoint allows partner to rollback the authorized function. If the transaction has already been captured, use Refund endpoint.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/pay/v1/rollback |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"partnerRefId": "UNIQUE_PARTNER_REF_ID_o32ihkdsf",
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej",
"momoTransId": "15239559159890"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success"
"localMessage": "Thành công"
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
| partnerRefId |
String |
x |
L1 |
Unique merchant payment transaction ID |
| accessToken |
String |
x |
L1 |
Token for payment |
| momoTransId |
String |
x |
L1 |
Get from authorize |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code. "0" means SUCCESS |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
VII - Refund
The following endpoint allow partner refund.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/pay/v1/refund |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"partnerRefId": "UNIQUE_PARTNER_REF_ID_o32ihkdsf",
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej",
"momoTransId": "15239559159890"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success"
"localMessage": "Thành công",
"data": {
"momoTransId": "152378372736472"
}
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
| partnerRefId |
String |
x |
L1 |
Unique merchant payment transaction ID for refund |
| accessToken |
String |
x |
L1 |
Token for payment |
| momoTransId |
String |
x |
L1 |
Get from payment transaction |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code. "0" means SUCCESS |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| data |
JsonObject |
x |
L1 |
Response data when resultCode is 0 |
| momoTransId |
String |
x |
L2 |
Refund MoMo transaction ID |
VIII - Unbind
1. Unbind from vendor
The following endpoint allow partner to delete an access token.
Examples include: User deactivate account on Vendor’s system, user wants to remove binding with current MoMo wallet.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/auth/v1/unbind |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công"
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
| accessToken |
String |
x |
L1 |
Token for payment |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code. "0" means SUCCESS |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
2. Unbind from MoMo
MoMo server will send a notify Delete token to the Partner server with URL and body as below.
Partner returns the HTTP Status 200 to signal that they received delete token info.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| PARTNER |
MOMO |
unbindUrl in Partner server |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công"
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identifier like user id or email |
| accessToken |
String |
x |
L1 |
Token for payment |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| resultCode |
Number |
x |
L1 |
Response status. “0” means result is SUCCESS |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
IX - OTP
Each recurring token is linked with only one MoMo user account. If partner detects suspicious / risky activities from user’s account and want to validate user’s identity: partner can request OTP to be sent from MoMo, display a screen for user to input the OTP, and validate this OTP with MoMo.
Specific use cases recommended:
- Request from untrusted device
- User login from new device
- Unusually high value payment
- Unusually high purchase frequency
- New shipping address
1. Send OTP
The following endpoint allows partner to request send OTP:
- Can only send a limit number of sms per day, default is 5 sms/day and can config for each partner.
- Delay time between 2 request is 3 seconds
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/auth/v1/sendOtp |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"partnerClientId": "UNIQUE_PARTNER_CLIENT_ID_uewkjrhoi",
"accessToken": "ACCESS_TOKEN_g98jhUYh3bGsyqaeWVdvfrwej",
"language": "vi"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công",
"data": {
"otpId" : "693184163549263518"
}
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| partnerClientId |
String |
x |
L1 |
Unique user identify likes user id or email |
| accessToken |
String |
x |
L1 |
Token for payment |
| language |
String |
x |
L1 |
Language of OTP message sent to user. Current value allowed is vi or en. (Default is vi) |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
| data |
JsonObject |
x |
L1 |
Response data when resultCode is 0 |
| otpId |
String |
x |
L2 |
Id of OTP when send success. Will be use when call confirm |
2. Confirm OTP
The following endpoint allows partner to request confirm OTP. Success response means the OTP user has input is correct:
- Cannot send/request OTP until next day if user inputs the incorrect OTP 5 times
- OTP expiration time is 5 minutes.
| SERVER |
CLIENT |
END POINT |
METHOD |
HEADERS |
| MOMO |
PARTNER |
/auth/v1/confirmOtp |
POST |
Reference to Headers |
Sample Request
{
"requestId": "REQUEST_ID_1511347353577",
"otpId": "693184163549263518",
"otp": "464325"
}
Sample response
{
"requestId": "REQUEST_ID_1511347353577",
"referenceId": "TRACE_ID_1511347353577",
"resultCode": 0,
"message": "Success",
"localMessage": "Thành công"
}
Payload
Request Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Unique string for each request |
| otpId |
String |
x |
L1 |
Identifier of the OTP that MoMo sent |
| otp |
String |
x |
L1 |
The OTP that user input |
Response Params
| Name |
Type |
R |
L |
Description |
| requestId |
String |
x |
L1 |
Same with request |
| referenceId |
String |
x |
L1 |
Unique for each response |
| resultCode |
Number |
x |
L1 |
Result code. "0" means SUCCESS |
| message |
String |
x |
L1 |
Result message |
| localMessage |
String |
x |
L1 |
The result message, in Vietnamese |
Result Code
| Code |
Result message |
| 0 |
SUCCESS |
| -1 |
Transaction initiate (init) |
| 3 |
User/Agent not found |
| 4 |
Agent not registered |
| 5 |
Agent inactive |
| 6 |
Agent suspended |
| 14 |
Partner is not activated |
| 36 |
Expired transaction |
| 45 |
Request timeout |
| 151 |
Amount not in range |
| 153 |
Decrypt Hash data failed |
| 208 |
Partner is not active/create |
| 210 |
Check amount failed. The payment enable amount from %sđ up to %sđ. |
| 403 |
Permission denied |
| 404 |
Request not found |
| 1001 |
Insufficient funds |
| 1004 |
Wallet Cap Exceeded |
| 1006 |
General system failure |
| 2004 |
Access token invalid |
| 2005 |
Token expired |
| 2007 |
Capset per day limit |
| 2101 |
User not login |
| 2110 |
Confirm OTP wrong many times |
| 2111 |
Request send OTP too fast |
| 2113 |
Send OTP failed |
| 2114 |
Send OTP request not found |
| 2115 |
OTP expired. It cannot be confirmed |
| 2116 |
OTP not match with any OTP |
| 2118 |
OTP was used. Send another OTP request to renew. |
| 2125 |
BillId can't refund. |
| 2129 |
Check signature fail |
| 2131 |
Bill not exists or expired |
| 2132 |
Transaction has been processed |
| 2137 |
Account has been linked with another MoMo account |
| 2138 |
Data invalid |
| 2146 |
Duplicate request |
| 2400 |
Bad format data |
| 9000 |
Transaction is processing |
| 9043 |
User has not completed KYC requirement (map bank) |