/check_partner_kyc
Returns whether entity attached to partnered app is verified, not valid, or still pending.
The endpoint is used to check KYC status of end users across apps.
Example: App A is seeking to enable services for their users through app B. App B has a need to verify that the users have been KYC'd and passed.
The KYC status would be looked up based on match on queried user handle and app handle, so the customer calling the API would have to know both in order to get results.
This endpoint must be enabled by a support request to Sila to establish the mapping between apps.
Requests
The request body at this endpoint is the header_msg
JSON object.
The handle which seeking KYC confirmation should be in the header.auth handle
field.
The required query_app_handle
field is used for partner company app.
The required query_user_handle
field is used for entity (user) of partner company app.
"query_app_handle": "PARTNER_COMPANY_APP"
"query_user_handle": "PARTNER_USER_HANDLE"
Authorization / Authentication
Apps using Access Token Authorization
Use a valid access token in an Authorization: Bearer request header.
See Authenticating with an Access Token for more details.
Apps using ECDSA Authentication
Only authsignature
header is required for this request.
See the section on ECDSA Authentication for more detail about ECDSA signature generation.
POST /0.2/check_partner_kyc HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
{
"header": {
"created": 1234567890,
"app_handle": "handle.silamoney.eth",
"version": "0.2",
"reference": "<your unique id>"
},
"query_app_handle": "cross_app_name",
"query_user_handle": "cross_app_user"
}
***
HTTP/1.1 200 OK
{
"success": true,
"status": "SUCCESS",
"message": "cross_app_user has passed ID verification!",
"response_time_ms": "171",
"reference": "<your unique id>",
"entity_type": "individual",
"verification_status": "passed",
}
---
{
"success": false,
"status": "FAILURE",
"message": "cross_app_user is pending ID verification.",
"response_time_ms": "171",
"reference": "<your unique id>",
"entity_type": "individual",
"verification_status": "pending"
}
---
{
"success": false,
"status": "FAILURE",
"message": "cross_app_user has failed ID verification.",
"response_time_ms": "171",
"reference": "<your unique id>",
"entity_type": "individual",
"verification_status": "failed",
}
ApiResponse response = api.checkPartnerKyc("query app handle", "query user handle");
CheckPartnerKycResponse parsedResponse = (CheckPartnerKycResponse) response.getData();
parsedResponse.getStatus();
parsedResponse.getMessage();
parsedResponse.getReference();
parsedResponse.getEntityType();
parsedResponse.getVerificationStatus();
// data to send
$userHandle = 'user.silamoney.eth';
$queryAppHandle = 'appB.silamoney.auth'; // The app where the user to check was registered.
$queryUserHandle = 'userB.silamoney.eth'; // The user to be checked.
$response = $client->ckeckPartnerKYC($userHandle, $queryAppHandle, $queryUserHandle);
// Success 200
echo $response->getStatusCode(); // 200
echo $response->getData()->reference; // Random reference.
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // User has passed ID verification!
echo $response->getData()->entity_type; // 'individual' or 'business'.
echo $response->getData()->verification_status; // passed.
$response->getData()->valid_kyc_levels; // An array of KYC levels valid for the user.
// Additional business values
echo $response->getData()->certification_status; // certified
$response->getData()->certification_history; // An array of all the certifications executed for the business (administrator user handle, created, expires after...)
$response->getData()->members; // An array of users linked to the business and their verification and certification status (user handle, role, beneficial owner certification status...)
let res = await sila.checkPartnerKyc({
query_app_handle: "query_app_handle",
query_user_handle: "query_user_handle"
});
res.success;
res.status;
res.message;
res.reference;
res.entity_type;
res.verification_status;
payload = {
"query_app_handle": "app handle",
"query_user_handle": "user handle"
}
response = User.check_partner_kyc(app, payload)
respone['success']
respone['status']
respone['message']
respone['reference']
respone['entity_type']
respone['verification_status']
var response = api.CheckPartnerKyc(
queryAppHandle: "query app handle",
queryUserHandle: "query user handle"
);
var parsedresponse = (CheckPartnerKycResponse)response.Data;
parsedresponse.Success;
parsedresponse.EntityType;
parsedresponse.Message;
parsedresponse.Reference;
parsedresponse.Status;
parsedresponse.VerificationStatus;
Key | Type | Description |
---|---|---|
header | JSON object | Required. Requires these keys in JSON format: created, app_handle. See the /check_handle endpoint for the complete list of fields in this object. |
query_app_handle | String | Required. Alphanumeric value. This value should match the required regex pattern: ^[-a-zA-Z0-9_.]+$ (not including .silamoney.com portion). Examples: handle.silamoney.eth or handle |
query_user_handle | String | Required. Alphanumeric value. This value should match the required regex pattern: ^[-a-zA-Z0-9_.]+$ (not including .silamoney.com portion). Examples: handle.silamoney.eth or handle |
Responses
There are several new keys in the /check_partner_kyc response:
entity_type
: Value will always be "individual" for individual users.verification_status
: For individual users, this value can be one of: ["unverified", "pending", "passed", "failed"]. There are descriptions of these statuses in the table below.
Verification Statuses
More verification statuses than these may be added in the future, so please implement accordingly.
Status Code | success Attribute | verification_status Attribute | Description |
---|---|---|---|
200 | true | "passed" | The query user handle has successfully passed KYC verification. |
200 | false | "unverified" | Verification has not been requested for this query user handle. |
200 | false | "pending" | The query user handle is still pending KYC verification. |
200 | false | "failed" | The query user handle has failed KYC verification. |
200 | false | "webhook_pending" | Awaiting additional verification. |
400 | false | N/A | Bad request - check message and/or validation_details keys for more information. |
401 | false | N/A | authsignature or usersignature header was absent or incorrect. |
403 | false | N/A | Query User Handle not registered by query app. |
403 | false | N/A | Cross-app permission has not been granted for this app. |
Updated about 2 months ago