/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.
If certification is needed, you will not be able to transact until beneficial owners and the business have been certified.
Types of Business Requiring BO Certification
corporation
non_profit
llc
lp
llp
partnership
Request
Authorization / Authentication
Apps using Access Token Authorization
Use a valid access token in a Authorization: Bearer request header.
See Auth Token Overview for more details.
Apps using ECDSA Authentication
Both authsignature and usersignature headers are required for this request. The usersignature header should be generated with a keypair registered to the user (either registered from the /register endpoint or the /register_wallet endpoint).
See our ECDSA overview for more.
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
sandbox.silamoney.com
Content-Type: application/json
businesssignature: [GENERATED BUSINESSSIGNATURE HEX STRING HERE]
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
usersignature: [GENERATED USERSIGNATURE HEX STRING HERE]
{
"header": {
"created": 1234567890,
"app_handle": "your_app_handle",
"user_handle": "business_admin_user_handle",
"business_handle": "business_user_handle",
"reference": "<your unique id>",
"version": "0.2"
},
"member_handle": "BO_user_handle",
"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
Request Attributes
Key | Type | Description |
---|---|---|
header | JSON object | Required. Required keys: created - Unix epoch timestamp in seconds. Must not be future-dated and must not be dated more than 5 minutes in the past.app_handle - your app handleuser_handle - the business's administrator user_handle, doing the certifyingbusiness_handle - the user_handle for the business entityOptional keys: reference : Can be any value for your own reference. If not provided, one will be assigned.version : Cannot be null if key is present. Valid values: 0.2, v0.2, V0.2 |
member_handle | string | Required. The user_handle of the beneficial owner needing to be certified. |
certification_token | string | Required. Retrieved from calling /get_entity for the beneficial owner to be certified. Included in /get_entity response after the BO has passed KYC. |
Responses
Status Code | success Attribute | Description |
---|---|---|
200 | true | The specified beneficial owner been successfully certified. |
400 | false | Bad request format - check validation_details for more information. |
403 | false | authsignature , businesssignature , or usersignature header was absent or incorrect or the certification token was invalid. |
Updated 3 months ago