/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.

An authsignature header is required for this request. See authentication section for more details on how to generate this signature.

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"

  
POST /0.2/check_partner_kyc HTTP/1.1
Host: sandbox.silamoney.com
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
Content-Type: application/json

{
  "header": {
    "created": 1234567890, 
    "app_handle": "handle.silamoney.eth", 
    "version": "0.2", 
    "crypto": "ETH", 
    "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": "ref",
  "entity_type": "individual",
  "verification_status": "passed",
}

---

{
    "success": false,
    "status": "FAILURE",
    "message": "cross_app_user is pending ID verification.",
   "response_time_ms": "171",
    "reference": "ref",
    "entity_type": "individual",
    "verification_status": "pending"
}

---

{
    "success": false,
    "status": "FAILURE",
    "message": "cross_app_user has failed ID verification.",
   "response_time_ms": "171",
   "reference": "ref",
    "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.


Did this page help you?