Please read Onboarding first!!
Flows

Methods
1. CheckWallet
Purpose: Allow partner check if wallet has enough conditions to receive money or not (map bank, locked, destroyed, ...)
It also support partner check wallet name in case this wallet is satisfied all conditions to receive money.
Method: POST
URL: api/payment/checkwallet
Parameter
Request
| Name |
Type |
Required |
Description |
| requestId |
String |
Yes |
Unique String for each request |
| walletId |
String |
Yes |
walletId that need to check |
| walletName |
String |
No |
walletName that need to check |
Response
| Name |
Type |
Description |
| requestId |
String |
Same with request |
| resultCode |
Integer |
Result Code of request |
| message |
String |
Result message |
| referenceId |
String |
Unique for each response |
Example
Request
{
"requestId": "wqrwpo2343240xsad213",
"walletId": "0902890666"
"walletName": "Nguyen Van A"
}
Response
{
"requestId": "wqrwpo2343240xsad213",
"resultCode": 0,
"message": "Success",
"referenceId": "sdfsfsdfdggfgf"
}
ResultCode
| Code |
Message |
Status |
| 0 |
success |
Success |
| 2 |
Invalid encrypted data |
Failed |
| 4 |
Invalid param wallet Id |
Failed |
| 6 |
Invalid json string |
Failed |
| 11 |
Other error |
Failed |
| 15 |
System maintenance, please try later |
Failed |
| 1006 |
Wallet is unidentified |
Failed |
| 1007 |
Wallet is locked |
Failed |
| 1008 |
Not existed walletId of receiver. |
Failed |
| 1009 |
Wallet Name is not matched with ID |
Failed |
| 1010 |
Wallet Name format is invalid |
Failed |
| 1016 |
Wallet is destroyed |
Failed |
| 1017 |
Reject by MoMo rule |
Failed |
| 1023 |
Non link bank |
Failed |
2. Check Personal ID
Purpose: Allow partner check if wallet has enough conditions to receive money or not (map bank, locked, destroyed, ...) (API 1) and check user's personalId matches with personalId in KYC information or not
Method: POST
URL: api/payment/verify
Parameter
Request
| Name |
Type |
Require |
Description |
| requestId |
String |
Yes |
Unique String for each request |
| walletId |
String |
Yes |
walletId that need to check |
| personalId |
String |
Yes |
Personal ID number |
Response
| Name |
Type |
Description |
| requestId |
String |
Same with request |
| resultCode |
Integer |
Result Code of request |
| message |
String |
Result message |
| referenceId |
String |
Unique for each response |
Example
Request
{
"requestId": "wqrwpo2343240xsad213",
"walletId": "0902890666",
"persionalId": "123456789123"
}
```
#### Response
```json
{
"requestId": "wqrwpo2343240xsad213",
"resultCode": 0,
"message": "Success" ,
"referenceId":"sdfsfsdfdggfgf"
}
ResultCode
| Code |
Message |
Status |
| 0 |
success |
Success |
| 2 |
Invalid encrypted data |
Failed |
| 4 |
Invalid param wallet Id |
Failed |
| 6 |
Invalid json string |
Failed |
| 11 |
Other error |
Failed |
| 15 |
System maintenance, please try later |
Failed |
| 1006 |
Wallet don't identity |
Failed |
| 1007 |
Wallet is locked |
Failed |
| 1008 |
Not existed walletId of receiver |
Failed |
| 1009 |
Invalid national Id of receiver |
Failed |
| 1016 |
Wallet is destroyed |
Failed |
| 1017 |
Reject by MoMo rule |
Failed |
| 1023 |
Non link bank |
Failed |
3. Payment
Purpose: Allow partner to request MoMo pay specific amount of money to corresponding user's wallet
Method: POST
URL: api/payment/pay
Parameter
Request
| STT |
Name |
Type |
Required |
Description |
| 1 |
requestId |
String |
Yes |
Unique String for each request |
| 2 |
walletId |
String |
Yes |
Momo wallet id (phone number) need to transfer money to. |
| 3 |
amount |
Number |
Yes |
Amount need to payment |
| 4 |
walletName |
String |
|
Wallet holder name |
| 5 |
personalId |
String |
Yes |
Personal Id (if not validate, pass a dummy value (number)) |
| 6 |
createdDate |
String |
Yes |
created date (YYYY-MM-DDThh:mm:ssTZD) Ex: 2017-03-06T19:20:30+07:00 |
| 7 |
rejectIfOverBalance |
Boolean |
|
- New balance = current balance of walletId + amount - When new balance > balance allowed then rejectIfOverBalance: = True : do reject this transaction = False: do process cash to full balance allowed Default: false |
| 8 |
description |
String |
|
description |
| 9 |
validatePersionalId |
boolean |
|
Default = false : do transfer without validate personal id = True : validate personal id corresponding wallet |
| 10 |
reference_1 |
String |
|
partner's data use for other purposes, such as: reporting |
| 11 |
reference_2 |
String |
|
partner's data use for other purposes, such as: reporting |
Response
| Name |
Type |
Level |
Description |
| requestId |
String |
L1 |
Unique String for each request |
| referenceId |
String |
L1 |
Reference Id. Unique String for each response |
| resultCode |
String |
L1 |
Result Code of request |
| message |
String |
L1 |
Result message |
| paymentRef |
String |
L1 |
Using for report |
| acceptedAmount |
Number |
L1 |
Actual amount is paid |
Example
Request
{
"requestId": "wqrwpo2343240xsad213",
"walletId": "0987654321",
"walletName": "Nguyen Van A",
"personalId": "123456789",
"amount": 40000,
"requiredOtp": false,
"verifyOtpUrl": "",
"notifyUrl": "",
"rejectIfOverBalance": true,
"description": "test desc",
"reference_1":"",
"reference_2":""
}
Response
{
"requestId": "wqrwpo2343240xsad213",
"referenceId": "2313_e3w24_ddqwdq_dasdasda",
"resultCode": 0,
"message": "success",
"acceptedAmount": 40000,
"paymentRef": "12332445453"
}
ResultCode
| Code |
Message |
Status |
| 0 |
success |
Success |
| 2 |
Invalid encrypted data |
Failed |
| 4 |
Invalid param wallet Id |
Failed |
| 6 |
Invalid json string |
Failed |
| 8 |
Duplicate/ Invalid requestId |
Failed |
| 10 |
Unknown error |
Pending |
| 11 |
Other error |
Failed |
| 15 |
System maintenance, please try later |
Failed |
| 1001 |
Invalid amount/ capset |
Failed |
| 1005 |
Over balance of receiver |
Failed |
| 1006 |
Wallet don't identity |
Failed |
| 1007 |
Wallet is locked |
Failed |
| 1008 |
Not existed walletId of receiver |
Failed |
| 1009 |
Invalid national Id of receiver |
Failed |
| 1016 |
Wallet is destroyed |
Failed |
| 1017 |
Reject by MoMo rule |
Failed |
| 1022 |
Insufficient funds |
Failed |
| 1023 |
Non link bank |
Failed |
| 1027 |
Blacklist non KYC |
Failed |
| 1028 |
Blacklist non map bank |
Failed |
| 1029 |
Blacklist waiting KYC |
Failed |
| 1030 |
Blacklist KYC info doesn't map with Bank info |
Failed |
4. Check status
Purpose: Allow partner get status of a payment request
Method: POST
URL: api/payment/status
Parameter
Request
| Name |
Type |
Description |
| requestId |
String |
Unique String for each request |
| paymentId |
String |
Request Id of payment transaction needed to check |
Response
| Name |
Type |
Description |
| requestId |
String |
Same with request |
| resultCode |
Integer |
Result Code of request |
| referenceId |
String |
Unique for each response |
| message |
String |
Result message |
| data |
JsonObject |
Data is the same with data of the response of function that want to check |
Example
Request
{
"requestId": "wqrwpo2343240xsad213",
"paymentId": "123456"
}
Response
{
"requestId": "wqrwpo2343240xsad213",
"referenceId": "2313_e3w24_ddqwdq_dasdasda",
"resultCode": 0,
"message": "Success",
"data": {
"requestId": "wqrwposs2343240xsad213",
"referenceId": "2313_e3w24_w432423_dasdasda",
"resultCode": 0,
"message": "Success",
"acceptAmount": 40000
}
}
ResultCode
| Code |
Message |
Status |
| 0 |
success |
Success |
| 2 |
Invalid encrypted data |
Failed |
| 4 |
Invalid param wallet Id |
Failed |
| 6 |
Invalid json string |
Failed |
| 11 |
Other error |
Failed |
| 15 |
System maintenance, please try later |
Failed |
| 1003 |
Payment id not found |
Failed |
5. Get Trans
Purpose: Allow partner get all transaction of the day
Method: POST
URL: api/payment/get-trans
Parameter
Request
| Name |
Type |
Description |
| requestId |
String |
Unique String for each request |
| date |
String |
Date to get all trans (yyyy-MM-dd) |
Response
| Name |
Type |
Level |
Description |
| requestId |
String |
L1 |
Same with request |
| resultCode |
Integer |
L1 |
Result Code of request |
| referenceId |
String |
L1 |
Unique for each response |
| message |
String |
L1 |
Result message |
| data |
JsonArray |
L1 |
Array of JsonObject include these information |
| requestId |
String |
L2 |
Transfer request id |
| walletId |
String |
L2 |
Momo wallet Id (mobile phone) |
| amount |
Integer |
L2 |
Transfer amount |
| paymentDate |
String |
L2 |
Transfer date |
| paymentRef |
String |
L2 |
Reference Number |
| resultCode |
Int |
L2 |
Result Code |
| message |
String |
L2 |
Result Message |
Example
Request
{
"requestId": "wqrwpo2343240xsad213",
"date": "2017-12-04"
}
Response
{
"requestId": "wqrwpo2343240xsad213",
"referenceId": "2313_e3w24_ddqwdq_dasdasda",
"resultCode": 0,
"message": "Success",
"data": [
{
"requestId": "122345",
"walletId": "0989990105",
"amount": 400000,
"paymentDate": "2017-03-06T19:20:30+07:00",
"paymentRef": "2313r3r34r",
"resultCode": 0,
"message": "Success"
},
{
"requestId": "122346",
"walletId": "0989990106",
"amount": 100000,
"paymentDate": "2017-03-06T19:20:30+07:00",
"paymentRef": "2313r3r34r",
"resultCode": 0,
"message": "Insufficient funds"
}
]
}
ResultCode
| Code |
Message |
Status |
| 0 |
success |
Success |
| 2 |
Invalid encrypted data |
Failed |
| 4 |
Invalid param wallet Id |
Failed |
| 6 |
Invalid json string |
Failed |
| 11 |
Other error |
Failed |
| 15 |
System maintenance, please try later |
Failed |
| 1004 |
Invalid date. |
Failed |
6. Balance
Purpose: Allow partner get current partner wallet’s balance
Method: POST
URL: api/pay/balance
Parameter
Request
| Name |
Type |
Description |
| requestId |
String |
Unique String for each request |
| password |
String |
Static value as provided by MoMo |
Response
| Name |
Type |
Description |
| requestId |
String |
Same with request |
| resultCode |
Integer |
Result Code of request |
| referenceId |
String |
Unique for each response |
| message |
String |
Result message |
| amount |
Number |
Current balance |
Example
Request
{
"requestId": "wqrwpo2343240xsad213",
"password": "a1234567890"
}
Response
{
"requestId": "wqrwpo2343240xsad213",
"referenceId": "2313_e3w24_ddqwdq_dasdasda",
"resultCode": 0,
"message": "Success",
"amount": 100000000
}
ResultCode
| Code |
Message |
Status |
| 0 |
success |
Success |
| 2 |
Invalid encrypted data |
Failed |
| 4 |
Invalid param wallet Id |
Failed |
| 6 |
Invalid json string |
Failed |
| 11 |
Other error |
Failed |
| 15 |
System maintenance, please try later |
Failed |
| 1004 |
Password is incorrect |
Failed |