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