KYC

Verify phone verification code

This second step allow LinkCy to verify that the phone number and country code provided by the consumer is valid and he controls the SIM.

If the consumer does not provide a valid code, he will not get access to the KYC step which is also mandatory.

The SMS code is a 6-digits and valid for 10 minutes and the consumer has 5 attempts. Once the delay of the number of attempts is reached, you have to ask for another code by using: Send consumer verification code Endpoint here.

Note: You can simulate that step in a Sandbox environment. Code is always 123456.

SecurityLinkcy-Auth
Request
Request Body schema: application/json
required
Any of:
consumerId
string <uuid>

The id of the verified consumer.

Mandatory if not authenticated as consumer.

code
required
string^[0-9]{6}$

The code received by the consumer.

In play environment code is always 123456.

Responses
204

Phone was successfully verified

400

Bad Request

401

Unauthorized

403

Forbidden

409

Conflict

post/api/partner/verifications/phone/verify
Request samples
application/json
{
  • "consumerId": "9e675a24-20d6-4913-9836-f861cd23e89e",
  • "code": "string"
}
Response samples
application/json
{
  • "details": [
    ],
  • "errorCode": "INVALID_PHONE_CODE",
  • "error": "linkcy.bad.request",
  • "status": 400,
  • "timestamp": "2024-11-14T16:14:59.841341744Z"
}

Send phone verification code by sms

This Endpoint allows you to send a verification code to your user by SMS. This code is a 6-digit code.

If you want to personalize the Sender Name, please contact your customer care.

NOTE : In Sandbox, no SMS is sent. Verification code will always be 123456

SecurityLinkcy-Auth
Request
Request Body schema: application/json
required
Any of:
consumerId
string <uuid>

Id of the consumer verifying.

Mandatory if not authenticated as consumer.

Responses
200

Message sent

400

Bad Request

401

Unauthorized

403

Forbidden

409

Conflict

post/api/partner/verifications/phone/send
Request samples
application/json
{
  • "consumerId": "9e675a24-20d6-4913-9836-f861cd23e89e"
}
Response samples
application/json
{
  • "ttl": "PT10M"
}

Send an email verification link by email

This Endpoint allows you to send an email verification to your user. The user will receive a link by email in order to verify his current email.

SecurityLinkcy-Auth
Request
Request Body schema: application/json
required
Any of:
consumerId
string <uuid>

Id of the consumer verifying its email (Will be ignored and deducted from current authenticated user if end-user).

emailSubject
string [ 0 .. 255 ] characters

Subject of the verification email, by default is '[{partnerName}] Please verify your email address'.

urlOnSuccess
string

Redirect url on email verified.

urlOnFailure
string

Redirect url on email verification failed.

Responses
200

Verification email sent

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

409

Conflict

post/api/partner/verifications/email/send
Request samples
application/json
{
  • "consumerId": "9e675a24-20d6-4913-9836-f861cd23e89e",
  • "emailSubject": "[{partnerName}] Please verify your email",
  • "urlOnSuccess": "https://google.com",
  • "urlOnFailure": "https://google.com"
}
Response samples
application/json
{
  • "ttl": "PT48H"
}

Verify the address of an end-user

This endpoint allows you to verify an end-user's address using different methods:

  • LINK: This method generates a URL link that the end-user can use to complete its Proof of Address (POA).

  • UPLOADED_DOCUMENT: Use this method when a POA document has already been uploaded which will be used to verify the address.

  • DELEGATED: When the address verification is delegated to the partner (property "delegatedPoa" set to "true") and the POA document has been uploaded, you can use this method to update the address status to "VERIFIED".

SecurityLinkcy-Auth
Request
Request Body schema: application/json
required
One of:
type
required
string
Value: "LINK"
endUserId
required
string <uuid>
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

409

Conflict

post/api/partner/verifications/address
Request samples
application/json
{
  • "type": "LINK",
  • "endUserId": "120e9d1f-8444-4b91-85e8-5b208615a3e5"
}
Response samples
application/json
{
  • "url": "string",
  • "ttl": "string"
}

List KYC applications

Fetch all KYC applications based on parameters. More options will be added in the near future.

SecurityLinkcy-Auth
Request
query Parameters
sortAttribute
string
Enum: "CREATION_DATE" "UPDATE_DATE"
personType
string

Type of person. If empty, the query will return KYC applications of all people types.

Enum: "CONSUMER" "CORPORATE_RELATED_PHYSICAL_PERSON"
personId
string <uuid>

The ID of the person. If empty, the query will return everyone KYC applications.

kycStatus
string

Search KYCs by status. If empty, the query will return KYC applications with any status.

Enum: "NOT_STARTED" "CREATED" "PROCESSING" "ABORTED" "PENDING_REVIEW" … 2 more
pageSize
integer <int32> <= 100

The size of the page to be returned.

page
integer <int32> >= 0

The page number.

sortDirection
string
Enum: "ASC" "DESC"
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

get/api/partner/kyc
Request samples
Response samples
application/json
{
  • "content": [
    ],
  • "totalElements": 1,
  • "page": 0,
  • "pageSize": 0
}

Create a KYC for a consumer or a corporate-related person

Physical users need to complete a due diligence (KYC), this step is mandatory to be able to use banking features. Due diligence is performed with the local language of your users.

Once the field "phoneValidated" is in "true" state, you will be able to request a KYC for you consumer by link, SDK or if the KYC is delegated, you can directly provide us the results.

BY LINK:

The link is valid for 720H. Do not ask for multiple links, this can delay the onboarding of the consumer and trigger security thresholds on our side.

By default, for performance reasons related to pictures, we oblige the consumer to do the KYC on a mobile phone, if you want to allow them to use the computer, please ask your consumer care.

For a fully embedded experience, we suggest you provide us with a success and a failure URL.

BY SDK:

We will provide you a SDK token valid for 24H that will allow one your user to perform its KYC via SDK. Do not hesitate to contact us for more information.

Note: We do not allow consumers to download pictures from the gallery.

Delegated to partner:

When the partner configuration is set with field "delegatedKyc" to "true", you can directly provide us the data of the KYC already performed by the user in the request payload.

Note: before sending a delegated KYC, you must have previously uploaded the KYC Summary and the identity document of the user using the document create API endpoint.

SecurityLinkcy-Auth
Request
Request Body schema: application/json
required
Any of:
consumerId
string <uuid>

Id of the consumer doing the KYC (Will be ignored and deducted from current authenticated user if end-user).

required
DefaultKycCreateConfigurationRequestDto (object) or DelegatedKycCreateConfigurationRequestDto (object)
Responses
201

KYC successfully created

400

Bad Request

401

Unauthorized

403

Forbidden

409

Conflict

post/api/partner/kyc
Request samples
application/json
{}
Response samples
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "token": "string",
  • "kycApiUrl": "string",
  • "flowName": "string",
  • "ttl": "PT8H6M12.345S"
}

Get kyc application

Get all information about a kyc.

SecurityLinkcy-Auth
Request
path Parameters
kycId
required
string <uuid>
Responses
200

OK

400

Bad Request

401

Unauthorized

403

Forbidden

404

Not Found

get/api/partner/kyc/{kycId}
Request samples
Response samples
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "person": {
    },
  • "address": {
    },
  • "firstName": "string",
  • "middleName": "string",
  • "lastName": "string",
  • "gender": "MALE",
  • "birthDate": "2019-08-24",
  • "emailAddress": "string",
  • "birthCity": "string",
  • "birthIsoCountryCode": "ABW",
  • "status": {
    },
  • "accessType": "LINK",
  • "creationDate": "2019-08-24T14:15:22Z",
  • "updateDate": "2019-08-24T14:15:22Z"
}