/certify_beneficial_owner

Certifies that a beneficial owner's personal data and ownership stake are accurate.

Most business types require certification after verification, meaning that a business administrator must ascertain and certify that all beneficial owners (there could be 0) have accurate personal information and ownership stakes registered.

To certify a beneficial owner with this endpoint, the business must have passed verification first. When calling /get_entity on the individual, there will be a certification token in the response that can be passed to this endpoint. This is done to guarantee that opportunity was afforded to review the beneficial owner's data and ownership stake information.

A list of business types requiring certification is provided here: https://docs.silamoney.com/docs/get_business_types

  

Requests

header.user_handle should have the handle of the administrator performing the certification.
header.business_handle should have the registered business entity of which the specified individual and administrator are members.
member_handle should have the registered individual entity to be certified.
certification_token should have a valid certification token.

Headers authsignature, usersignature, and businesssignature are required for this request. The usersignature header should be generated with a keypair registered to the individual user identified by the header.user_handle key (either registered from the /register endpoint or the /register_wallet endpoint). The businesssignature header should be generated with a keypair registered to the business user (either registered from the /register endpoint or the /register_wallet endpoint). See authentication section for more details on how to generate this signature.

The certification_token in this request comes from a /get_entity response once verification has completed for the beneficial owner member. Carefully have an applicant review the registered data and ownership stake returned from /get_entity, then hit this endpoint with the certification token to confirm all is correct.

Note - We recently renamed the field auth_handle to app_handle. For backward compatibility, auth_handle is still valid but has been removed from our documentation.

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

{
    "header": {
        "created": 1234567890,
        "app_handle": "your_app_handle.silamoney.eth",
        "user_handle": "your_admin_individual_member.silamoney.eth",
        "business_handle": "your_business_user.silamoney.eth",
        "reference": "<your unique id>"
    },
    "member_handle": "your_beneficial_owner_member.silamoney.eth",
    "certification_token": "889288b15f686baa1f782ba6f51f3594fcfc72cb"
}

***

HTTP/1.1 200 OK

{
    "success": true,
    "status": "SUCCESS",
    "message": "Beneficial owner successfully certified.",
    "response_time_ms": "171",
    "reference": "<your unique id>"
}
const res = await sila.certifyBeneficialOwner(
  user_handle,
  user_private_key,
  business_handle,
  business_private_key,
  member_handle,
  certification_token
);

// Success response object

console.log(res.statusCode); // 200
console.log(res.data.success); // TRUE
console.log(res.data.message); // Response message
console.log(res.data.status);
payload = {
    "user_handle": user_handle,
    "business_handle": business_handle,
    "member_handle": member_handle,
    "certification_token": certification_token
}

response = BusinessOperations.certifyBeneficialOwner(app, payload, user_private_key, business_private_key)

# Success Response

{
    "status": 'SUCCESS',
    "status_code": 200,
    "success": true,
    "message": "Beneficial owner successfully certified."
}
ApiResponse response = api.certifyBeneficialOwner("user handle", "user private key", "business handle", "business private key", "member handle", "certification token");

// Success Object Response
  
System.out.println(response.getStatusCode()); // 200
System.out.println(((BaseResponse) response.getData()).getMessage()); // Beneficial owner successfully certified.
System.out.println(((BaseResponse) response.getData()).getSuccess()); // true
System.out.println(((BaseResponse) response.getData()).getStatus()); // SUCCESS
$businessHandle = 'business.silamoney.eth';
$businessPrivateKey = 'some private key';
$userHandle = 'user.silamoney.eth'; // Must be a registered administrator in the business
$userPrivateKey = 'some other private key';
$beneficialHandle = 'beneficial_owner.silamoney.eth';
$beneficialToken = 'some token'; // The token for the certification.

$response = $client->certifyBeneficialOwner($businessHandle, $businessPrivateKey, $userHandle, $userPrivateKey, $beneficialHandle, $beneficialToken);

// Response 200

echo $response->getStatusCode(); // 200
echo $response->getData()->status;
echo $response->getData()->success; // TRUE
echo $response->getData()->message; // Beneficial owner successfully certified
Console.WriteLine(response.Success);
Console.WriteLine(response.Status);
ApiResponse<object> response = api.CertifyBeneficialOwner(userHandle, userPrivateKey, businessHandle, businessPrivateKey, member_handle, certificationToken);

// Success object response

Console.WriteLine(response.StatusCode); // 200
var parsedData = (BaseResponse)response.Data;
Console.WriteLine(response.Message); // Beneficial owner successfully certified
  

Responses

Status Codesuccess AttributeDescription
200trueThe specified beneficial owner been successfully certified.
400falseBad request format - check validation_details for more information.
403falseauthsignature, businesssignature, or usersignature header was absent or incorrect or the certification token was invalid.