Methods:
1. GetCreditScore
Allow partner get Credit score of wallet
- Method: POST
- URL: api/scoring/get-credit-score
Flow

Example
Request
{
"requestId":"qweqwe123321",
"phoneNumber":"0123456789",
"nationalId":"123456789"
}
Response
{
"requestId": "qweqwe123321",
"resultCode": 0,
"message": "Success",
"referenceId":"sdfsfsdfdggfgf",
"data":
{
"partner": "partnerX",
"phoneNumber": "0123456789",
"nationalId":"123456789",
"momoCreditScore": 0.15,
"version": "MOMO_CREDIT_SCORE",
"scoredTimestamp": 12345678
}
}
Request
| Method | URL |
|---|---|
| POST | api/scoring/get-credit-score |
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Unique string for each request |
| 2 | phoneNumber | String | phoneNumber need to check | |
| 3 | nationalId | String | national Id need to check |
*Note: Request must have "phoneNumber" or "nationalId" (at least 1 field must not empty)
Response
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Same with request |
| 2 | resultCode | String | Yes | Result code of request |
| 3 | message | String | Yes | Result message of request |
| 4 | referenceId | String | Yes | Reference Id. Unique String for each response |
| 5 | partner | String | Yes | Partner code |
| 6 | phoneNumber | String | Same with request | |
| 7 | nationalId | String | Same with request | |
| 8 | momoCreditScore | Float | Yes | Credit score |
| 9 | version | String | “MOMO_CREDIT_SCORE” or “MOMO_CREDIT_SCORE_EXT” | |
| 10 | scoredTimestamp | Long | Running time |
ErrorCode
| Code | Message | Status |
|---|---|---|
| 0 | Success | Success |
| 4 | Invalid wallet Id | Fail |
| 8 | Duplicate/Invalid request Id | Fail |
| 11 | Other error | Fail |
| 101 | Invalid params | Fail |
| 104 | No data found | Fail |
2. CheckKYC
Allow partner check KYC data
- Method: POST
- URL: api/scoring/check-kyc
Flow

Example
Request
{
"requestId": "qweqwe123321",
"phoneNumber":"0123456789",
"nationalId": "123456789000",
"additionalId": "",
"fullName": "NGUYEN VAN A",
"dateOfBirth": "2001-12-30",
"bankAccount": "123123123",
"email": "abc@domain.com",
"refPhone1": "0900000001",
"refName1": "",
"refPhone2": "0900000002",
"refName1": "",
"workPhone": "0900000003",
"workPlace": ""
}
Response
{
"requestId": "qweqwe123321",
"resultCode": 0,
"message": "Success",
"referenceId":"sdfsfsdfdggfgf",
"data": [
{
"wallet": 1,
"verifyPhone": "MATCH",
"verifyId": "MATCH",
"verifyName": "MATCH",
"verifyDob": "MATCH",
"verifyBank": "MATCH",
"verifyEmail": "NOT_MATCH",
"verifyRefPhone1": "MATCH",
"verifyRefPhone2": "NOT_MATCH",
"verifyWorkPhone": "NO_INFO",
"liveliness": "A",
"verifyNameSimiliarity": 1,
"verifyNameLevenstein": 1,
"verifyEmailSimiliarity": 1,
"walletAge": "E"
},
{
"wallet": 2,
"verifyPhone": "NOT_MATCH",
"verifyId": "MATCH",
"verifyName": "MATCH",
"verifyDob": "MATCH",
"verifyBank": "NO_INFO",
"verifyEmail": "MATCH",
"verifyRefPhone1": "NO_INFO",
"verifyRefPhone2": "NO_INFO",
"verifyWorkPhone": "NO_INFO",
"liveliness": "A",
"verifyNameSimiliarity": 1,
"verifyNameLevenstein": 1,
"verifyEmailSimiliarity": 1,
"walletAge": "E"
},
{
"wallet": 3,
"verifyPhone": "NOT_MATCH",
"verifyId": "MATCH",
"verifyName": "MATCH",
"verifyDob": "MATCH",
"verifyBank": "NO_INFO",
"verifyEmail": "MATCH",
"verifyRefPhone1": "NO_INFO",
"verifyRefPhone2": "NO_INFO",
"verifyWorkPhone": "NO_INFO",
"liveliness": "A",
"verifyNameSimiliarity": 1,
"verifyNameLevenstein": 1,
"verifyEmailSimiliarity": 1,
"walletAge": "E"
},
{
"wallet": 4,
"verifyPhone": "NOT_MATCH",
"verifyId": "MATCH",
"verifyName": "MATCH",
"verifyDob": "MATCH",
"verifyBank": "NO_INFO",
"verifyEmail": "MATCH",
"verifyRefPhone1": "NO_INFO",
"verifyRefPhone2": "NO_INFO",
"verifyWorkPhone": "NO_INFO",
"liveliness": "A",
"verifyNameSimiliarity": 1,
"verifyNameLevenstein": 1,
"verifyEmailSimiliarity": 1,
"walletAge": "E"
}
]
}
Request
| Method | URL |
|---|---|
| POST | api/scoring/check-kyc |
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Unique string for each request |
| 2 | phoneNumber | String | Yes | phoneNumber need to check |
| 3 | nationalId | String | Yes | NationalId or passportNo |
| 4 | additionalNationalId | String | such as: passport id | |
| 5 | fullName | String | Yes | "LASTNAME MIDDLE_NAME FIRSTNAME" |
| 6 | dateOfBirth | String | Format: "yyyy-mm-dd" | |
| 7 | bankAccount | String | bank id | |
| 8 | String | "abc@domain.com" | ||
| 9 | refPhone1 | String | "0123456789", mobile or home phone | |
| 10 | refName1 | String | "LASTNAME MIDDLE_NAME FIRSTNAME | |
| 11 | refPhone2 | String | "0123456789", mobile or home phone | |
| 12 | refName2 | String | "LASTNAME MIDDLE_NAME FIRSTNAME | |
| 13 | workPhone | String | "0123456789", mobile or home phone | |
| 14 | workPlace | String | UPPERCASE ALL (work place) |
Response
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Same with request |
| 2 | resultCode | String | Yes | Result code of request |
| 3 | message | String | Yes | Result message of request |
| 4 | referenceId | String | Yes | Reference Id. Unique String for each response |
| 5 | wallet | Numeric | Yes | {1,2,3,4} |
| 6 | verifyPhone | String | Yes | {"MATCH", "NOT_MATCH", "NO_INFO"} |
| 7 | verifyId | String | Yes | {"MATCH", "NOT_MATCH", "NO_INFO"} |
| 8 | verifyName | String | Yes | {"MATCH", "NOT_MATCH", "NO_INFO"} |
| 9 | verifyDob | String | {"MATCH", "NOT_MATCH", "NO_INFO"} | |
| 10 | verifyBank | String | {"MATCH", "NOT_MATCH", "NO_INFO"} | |
| 11 | verifyEmail | String | {"MATCH", "NOT_MATCH", "NO_INFO"} | |
| 12 | verifyRefPhone1 | String | {"MATCH", "NOT_MATCH", "NO_INFO"} | |
| 13 | verifyRefPhone2 | String | {"MATCH", "NOT_MATCH", "NO_INFO"} | |
| 14 | verifyWorkPhone | String | {"MATCH", "NOT_MATCH", "NO_INFO"} | |
| 15 | liveliness | String | {"A", "B", "C", "D", "E", "NO_INFO"} | |
| 16 | verifyNameSimiliarity | Float | Yes | {0, 0.1, 0.2,…, 1} |
| 17 | verifyNameLevenstein | Float | Yes | {0, 0.1, 0.2,…, 1} |
| 18 | verifyEmailSimiliarity | Float | Yes | {0, 0.1, 0.2,…, 1} |
| 19 | walletAge | String | Yes | {"A", "B", "C", "D", "E", "F", "NO_INFO"} |
ErrorCode
| Code | Message | Status |
|---|---|---|
| 0 | Success | Success |
| 4 | Invalid wallet Id | Fail |
| 8 | Duplicate/Invalid request Id | Fail |
| 11 | Other error | Fail |
| 101 | Request Id is empty | Fail |
| 102 | Invalid nationd id | Fail |
| 103 | Full name is empty | Fail |
| 104 | No data found | Fail |
3. StoreApplicationStatus
Allow partner send application status to Momo
- Method: POST
- URL: api/scoring/application-status
Flow

Example
Request
{
"requestId":"qweqwe123321",
"vendorCode":"ewqewq123123",
"phoneNumber":"0123456789",
"creditScoreRequestId":"credit123456",
"kycRequestId":"kyc123456",
"applicationTime":12345678,
"decisionTime":12345678,
"disburseTime":12345678,
"paymentTime":12345678,
"approvalStatus":"approved",
"appliedAmount":10000,
"appliedTenor":123,
"approvedAmount":1000,
"approvedTenor":123
}
Response
{
"requestId": "qweqwe123321",
"resultCode": 0,
"message": "Success",
"referenceId":"sdfsfsdfdggfgf"
}
Request
| Method | URL |
|---|---|
| POST | api/scoring/application-status |
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Unique string for each request |
| 2 | vendorCode | String | Yes | Vendor code provided by Momo |
| 3 | phoneNumber | String | Yes | phoneNumber need to check |
| 4 | creditScoreRequestId | String | At least (3), (4) not null | Id of Credit score request |
| 5 | kycRequestId | String | At least (3), (4) not null | Id of Kyc request |
| 6 | applicationTime | long | Application time | |
| 7 | decisionTime | long | Decision time | |
| 8 | disburseTime | long | Disburse time | |
| 9 | paymentTime | long | Payment time | |
| 10 | approvalStatus | String | Yes | "approved" or "rejected" |
| 11 | appliedAmount | long | Applied amount | |
| 12 | appliedTenor | long | Applied tenor | |
| 13 | approvedAmount | long | Approved amount | |
| 14 | approvedTenor | long | Approved tenor |
Response
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Same with request |
| 2 | resultCode | String | Yes | Result code of request |
| 3 | message | String | Yes | Result message of request |
| 4 | referenceId | String | Yes | Reference Id. Unique String for each response |
ErrorCode
| Code | Message | Status |
|---|---|---|
| 0 | Success | Success |
| 4 | Invalid wallet Id | Fail |
| 8 | Duplicate/Invalid request Id | Fail |
| 11 | Other error | Fail |
| 105 | Both Credit Score and Kyc Request Id are empty | Fail |
| 106 | Vendor code is empty | Fail |
| 107 | Approval status is empty | Fail |
4. PastInquiries
Allow partner get Momo Credit Score & KYC check history and disbursement, repayment history
- Method: POST
- URL: api/scoring/check-pastinquiries
Request
{
"requestId":"1647430687",
"phoneNumber":"0123456789",
"nationalId":"VN1234567",
"requestedTimestamp":"1647430687"
}
Response
{
"requestId": "1647430687",
"resultCode": 0,
"message": "Success",
"referenceId":"sdfsfsdfdggfgf",
"data": [
{
"periodDays": 7,
"numRequester": 0,
"numRequest": 0,
"numDisbursement": 0,
"numOrgDisbursement": 0,
"amountDisbursement": "A",
"minAmountDisbursement": "A",
"maxAmountDisbursement": "A",
"numRepayment": 0,
"numOrgRepayment": 0,
"amountRepayment": "A",
"minAmountRepayment": "A",
"maxAmountRepayment": "A"
},
{
"periodDays": 30,
"numRequester": 0,
"numRequest": 0,
"numDisbursement": 0,
"numOrgDisbursement": 0,
"amountDisbursement": "A",
"minAmountDisbursement": "A",
"maxAmountDisbursement": "A",
"numRepayment": 0,
"numOrgRepayment": 0,
"amountRepayment": "A",
"minAmountRepayment": "A",
"maxAmountRepayment": "A"
},
{
"periodDays": 90,
"numRequester": 0,
"numRequest": 0,
"numDisbursement": 0,
"numOrgDisbursement": 0,
"amountDisbursement": "A",
"minAmountDisbursement": "A",
"maxAmountDisbursement": "A",
"numRepayment": 0,
"numOrgRepayment": 0,
"amountRepayment": "A",
"minAmountRepayment": "A",
"maxAmountRepayment": "A"
}
]
}
Request
| Method | URL |
|---|---|
| POST | api/scoring/check-pastinquiries |
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Unique string for each request |
| 2 | phoneNumber | String | Yes | phoneNumber need to check |
| 3 | nationalId | String | Yes | NationalId or passportNo |
| 4 | requestedTimestamp | Long | Yes | Requested timestamp in millisecond |
Response
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Same with request |
| 2 | resultCode | String | Yes | Result code of request |
| 3 | message | String | Yes | Result message of request |
| 4 | referenceId | String | Yes | Reference Id. Unique String for each response |
| 5 | periodDays | String | Yes | indicate this item for 1 week (7), 1 month (30) or 3 months (90) |
| 6 | numRequester | long/int64 | Yes | number of partners that request which are matched phone or NID |
| 7 | numRequest | long/int64 | Yes | Number request which are matched phone or NID |
| 8 | numDisbursement | long/int64 | Yes | |
| 9 | numOrgDisbursement | long/int64 | Yes | |
| 10 | amountDisbursement | String | Yes | {A -> L} |
| 11 | minAmountDisbursement | String | Yes | {A -> O} |
| 12 | maxAmountDisbursement | String | Yes | {A -> O} |
| 13 | numRepayment | long/int64 | Yes | |
| 14 | numOrgRepayment | long/int64 | Yes | |
| 15 | amountRepayment | String | Yes | {A -> L} |
| 16 | minAmountRepayment | String | Yes | {A -> O} |
| 17 | maxAmountRepayment | String | Yes | {A -> O} |
| ErrorCode |
| Code | Message | Status |
|---|---|---|
| 0 | Success | Success |
| 4 | Invalid wallet Id | Fail |
| 8 | Duplicate/Invalid request Id | Fail |
| 11 | Other error | Fail |
| 101 | Request Id is empty | Fail |
| 102 | Invalid nationd id | Fail |
| 103 | Full name is empty | Fail |
| 104 | No data found | Fail |
5. Suspicion Check
- Method: POST
- URL: api/scoring/suspicion-check
Request
{
"requestId":"1647430687",
"phoneNumber":"0392333333",
"nationalId":"049011111111",
"requestedTimestamp":"1647430687"
}
Response
{
"requestId": "1647430687",
"resultCode": 0,
"message": "Success",
"referenceId":"sdfsfsdfdggfgf",
"data": [
{
"suspicionType": "SuspicionType1",
"suspicionValue": true,
"reportDate": 1647018000000
},
{
"suspicionType": "SuspicionType2",
"suspicionValue": false,
"reportDate": 1647018000000
},
{
"suspicionType": "SuspicionType3",
"suspicionValue": true,
"reportDate": 1647018000000
},
{
"suspicionType": "SuspicionType4",
"suspicionValue": true,
"reportDate": 1647018000000
},
{
"suspicionType": "SuspicionType5",
"suspicionValue": false,
"reportDate": 1647018000000
}
]
}
Request
| Method | URL |
|---|---|
| POST | api/scoring/suspicion-check |
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Unique string for each request |
| 2 | phoneNumber | String | Yes | phoneNumber need to check |
| 3 | nationalId | String | Yes | NationalId or passportNo |
| 4 | requestedTimestamp | Long | Yes | Requested timestamp in millisecond |
Response
| No | Parameters | Data Type | Require | Description |
|---|---|---|---|---|
| 1 | requestId | String | Yes | Same with request |
| 2 | resultCode | String | Yes | Result code of request |
| 3 | message | String | Yes | Result message of request |
| 4 | referenceId | String | Yes | Reference Id. Unique String for each response |
| 5 | suspicionType | String | Yes | SuspicionType1 SuspicionType2 SuspicionType3 SuspicionType4 SuspicionType5 |
| 6 | suspicionValue | boolean | Yes | True (in blacklist) False (not in blacklist) |
| 7 | reportDate | long/int64 | Yes | Report date in timestamp millisecond |
| ErrorCode |
| Code | Message | Status |
|---|---|---|
| 0 | Success | Success |
| 4 | Invalid wallet Id | Fail |
| 8 | Duplicate/Invalid request Id | Fail |
| 11 | Other error | Fail |
| 101 | Request Id is empty | Fail |
| 102 | Invalid nationd id | Fail |
| 103 | Full name is empty | Fail |
| 104 | No data found | Fail |