OKB
The integration with OKB is used to identify an individual by their personal data.
The service can run several verification strategies for a single subject in a single request and return an aggregated result.
Strategies:
person_identify_v2— identification by the subject's personal data, verifying the match of the phone number, full name, and card.
The list of supported strategies may be expanded.
You must pass these request headers in every request:
| Name | Type | Required | Description |
|---|---|---|---|
X-Api-Key |
string | Yes | Unique shop identifier |
X-Signature |
string | Yes | Request signature |
The signature is generated using secret_key — the secret key found in the merchant's shop settings.
Identification by transaction
Method: POST
- Production:
https://api.pay.kvell.group/v1/person/scoring/okb/transaction - Stage:
https://api.pay.stage.kvell.group/v1/person/scoring/okb/transaction
Request body parameters
Name |
Data type | Required | Description |
|---|---|---|---|
okb_api_key |
string | Yes | Personal access token issued after registering with OKB |
strategy_code |
string | Yes | Strategy to run |
person |
json | Yes | Individual object |
∟first_name |
string | Yes | Individual's first name in uppercase. Allowed characters: Russian letters, hyphen, space, period |
∟last_name |
string | Yes | Individual's last name in uppercase. Allowed characters: Russian letters, hyphen, space, period |
∟second_name |
string | Yes | Individual's patronymic in uppercase. Allowed characters: Russian letters, hyphen, space, period |
∟phone |
string | Yes | Individual's mobile phone number in the format 7dddddddddd |
∟birth_date |
string | Yes | Individual's date of birth in the format YYYY-MM-DD |
consent |
json | Yes | Object containing the set of parameters about consent to the service request |
∟received_at |
string | Yes | Date the consent to perform the request was obtained, in the format YYYY-MM-DD |
∟responsibility_flag |
bool | Yes | Flag indicating awareness of liability for violating consent collection rules: true — the client is aware, false — not aware |
∟was_received |
bool | Yes | Flag indicating whether consent for the service request was obtained: true — consent was given, false — consent was not given |
extra_data |
json | Yes | Additional strategy parameters |
∟transaction |
string | Yes | Number of a successful transaction on the merchant's side |
∟client_id |
bool | int | Client (financial institution) identifier issued by OKB |
Request example
{
"okb_api_key": "okb_api_key",
"strategy_code": "person_identify_v2",
"person": {
"first_name": "АРТЁМ",
"last_name": "АРТЁМОВ",
"second_name": "АРТЁМОВИЧ",
"phone": "79996660101",
"birth_date": "1975-02-01"
},
"consent": {
"received_at": "2025-09-22",
"responsibility_flag": true,
"was_received": true
},
"extra_data": {
"transaction": "99ad8b11-48b8-41ea-85b7-29136d714fb1",
"client_id": 9000
}
}
Building the signature
The X-Signature signature is generated by concatenating X-Api-Key, json <request body>, and secret_key.
sha256 is computed from the resulting string:
Response
{
"status": true,
"data": {
"person_identify_v2": {
"params": {
"result": {
"hit": "1.0",
"result": "1.0"
}
},
"is_hit": true
}
},
"message": "OK",
"request_id": "72e1b179-7e1e-441c-bb85-9a7343e8fb19"
}
Name |
Type | Description |
|---|---|---|
data |
json | Payload: resulting information about the strategy calculations |
∟person_identify_v2 |
json | Strategy |
∟is_hit |
string | Flag indicating whether the subject was found: true — hit (subject found), false — no hit (subject not found) |
∟params |
string | Model calculation result parameters |
∟result |
json | Object |
∟hit |
string | Hit |
∟result |
string | Model verification result |
message |
string | Short status message for the request |
request_id |
string | Unique request identifier |
status |
bool | Response status |
Possible response combinations:
- result = 1 + hit = 1 — the card matches the phone number;
- result = 0 + hit = 1 — the number was found, the card does not match;
- result = 0 + hit = 0 — the number was not found.
Identification by card number
Method: POST
- Production:
https://api.pay.kvell.group/v1/person/scoring/okb/card - Stage:
https://api.pay.stage.kvell.group/v1/person/scoring/okb/card
Request body parameters
Name |
Data type | Required | Description |
|---|---|---|---|
okb_api_key |
string | Yes | Personal access token issued after registering with OKB |
strategy_code |
string | Yes | Strategy to run |
person |
json | Yes | Individual object |
∟first_name |
string | Yes | Individual's first name in uppercase. Allowed characters: Russian letters, hyphen, space, period |
∟last_name |
string | Yes | Individual's last name in uppercase. Allowed characters: Russian letters, hyphen, space, period |
∟second_name |
string | Yes | Individual's patronymic in uppercase. Allowed characters: Russian letters, hyphen, space, period |
∟phone |
string | Yes | Individual's mobile phone number in the format 7dddddddddd |
∟birth_date |
string | Yes | Individual's date of birth in the format YYYY-MM-DD |
consent |
json | Yes | Object containing the set of parameters about consent to the service request |
∟received_at |
string | Yes | Date the consent to perform the request was obtained, in the format YYYY-MM-DD |
∟responsibility_flag |
bool | Yes | Flag indicating awareness of liability for violating consent collection rules: true — the client is aware, false — not aware |
∟was_received |
bool | Yes | Flag indicating whether consent for the service request was obtained: true — consent was given, false — consent was not given |
extra_data |
json | Yes | Additional strategy parameters |
∟card_pan |
string | Yes | Card number |
∟client_id |
bool | int | Client (financial institution) identifier issued by OKB |
Request example
{
"okb_api_key": "okb_api_key",
"strategy_code": "person_identify_v2",
"person": {
"first_name": "АРТЁМ",
"last_name": "АРТЁМОВ",
"second_name": "АРТЁМОВИЧ",
"phone": "79996660101",
"birth_date": "1975-02-01"
},
"consent": {
"received_at": "2025-09-22",
"responsibility_flag": true,
"was_received": true
},
"extra_data": {
"card_pan": "4111111111111111",
"client_id": 9000
}
}
Building the signature
The X-Signature signature is generated by concatenating X-Api-Key, json <request body>, and secret_key.
sha256 is computed from the resulting string:
Response
{
"status": true,
"data": {
"person_identify_v2": {
"params": {
"result": {
"hit": "1.0",
"result": "1.0"
}
},
"is_hit": true
}
},
"message": "OK",
"request_id": "72e1b179-7e1e-441c-bb85-9a7343e8fb19"
}
Name |
Type | Description |
|---|---|---|
data |
json | Payload: resulting information about the strategy calculations |
∟person_identify_v2 |
json | Strategy |
∟is_hit |
string | Flag indicating whether the subject was found: true — hit (subject found), false — no hit (subject not found) |
∟params |
string | Model calculation result parameters |
∟result |
json | Object |
∟hit |
string | Hit |
∟result |
string | Model verification result |
message |
string | Short status message for the request |
request_id |
string | Unique request identifier |
status |
bool | Response status |
Possible response combinations:
- result = 1 + hit = 1 — the card matches the phone number;
- result = 0 + hit = 1 — the number was found, the card does not match;
- result = 0 + hit = 0 — the number was not found.