Submit KYB data
curl --request POST \
--url https://api.next.orenda.finance/v1/applications/kyb \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"company_name": "Acme Ltd",
"registration_number": "12345678",
"country": "GB"
}
'import requests
url = "https://api.next.orenda.finance/v1/applications/kyb"
payload = {
"company_name": "Acme Ltd",
"registration_number": "12345678",
"country": "GB"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({company_name: 'Acme Ltd', registration_number: '12345678', country: 'GB'})
};
fetch('https://api.next.orenda.finance/v1/applications/kyb', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.next.orenda.finance/v1/applications/kyb",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'company_name' => 'Acme Ltd',
'registration_number' => '12345678',
'country' => 'GB'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.next.orenda.finance/v1/applications/kyb"
payload := strings.NewReader("{\n \"company_name\": \"Acme Ltd\",\n \"registration_number\": \"12345678\",\n \"country\": \"GB\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.next.orenda.finance/v1/applications/kyb")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"company_name\": \"Acme Ltd\",\n \"registration_number\": \"12345678\",\n \"country\": \"GB\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/applications/kyb")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"company_name\": \"Acme Ltd\",\n \"registration_number\": \"12345678\",\n \"country\": \"GB\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"isComplete": true,
"message": "KYB data submitted successfully"
}
}{
"success": false,
"code": "VALIDATION_ERROR",
"message": "isCompany is required"
}{
"success": false,
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}{
"success": false,
"code": "WEB_TOKEN_PROVIDER_MISMATCH",
"message": "Sumsub is not the active provider for this application"
}{
"success": false,
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal Server Error"
}Onboarding
Submit KYB data
Send the answers for a company (KYB) step.
POST
/
v1
/
applications
/
kyb
Submit KYB data
curl --request POST \
--url https://api.next.orenda.finance/v1/applications/kyb \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"company_name": "Acme Ltd",
"registration_number": "12345678",
"country": "GB"
}
'import requests
url = "https://api.next.orenda.finance/v1/applications/kyb"
payload = {
"company_name": "Acme Ltd",
"registration_number": "12345678",
"country": "GB"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({company_name: 'Acme Ltd', registration_number: '12345678', country: 'GB'})
};
fetch('https://api.next.orenda.finance/v1/applications/kyb', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.next.orenda.finance/v1/applications/kyb",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'company_name' => 'Acme Ltd',
'registration_number' => '12345678',
'country' => 'GB'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.next.orenda.finance/v1/applications/kyb"
payload := strings.NewReader("{\n \"company_name\": \"Acme Ltd\",\n \"registration_number\": \"12345678\",\n \"country\": \"GB\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.next.orenda.finance/v1/applications/kyb")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"company_name\": \"Acme Ltd\",\n \"registration_number\": \"12345678\",\n \"country\": \"GB\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.next.orenda.finance/v1/applications/kyb")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"company_name\": \"Acme Ltd\",\n \"registration_number\": \"12345678\",\n \"country\": \"GB\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"isComplete": true,
"message": "KYB data submitted successfully"
}
}{
"success": false,
"code": "VALIDATION_ERROR",
"message": "isCompany is required"
}{
"success": false,
"code": "UNAUTHORIZED",
"message": "Unauthorized"
}{
"success": false,
"code": "WEB_TOKEN_PROVIDER_MISMATCH",
"message": "Sumsub is not the active provider for this application"
}{
"success": false,
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal Server Error"
}For company applications (
isCompany: true), submit the KYB answers here instead of
Submit KYC data. The application is taken from your bearer token,
so there’s no id in the path. Answers are keyed against the same
schema, which returns company and beneficial-owner fields for
companies.
Partial saves are allowed; isComplete says whether the step is finished. Keep polling
GET /v1/applications. If beneficial-owner sync reports problems, the
data is still saved and the response includes a uboProcessingError.Authorizations
The user's access_token from authentication. The program and environment (sandbox/prod) are read from the token.
Body
application/json
Field answers keyed by the KYB schema field key, including company and beneficial-owner fields. Values are strings, nested groups, or base64url-encoded file contents.
⌘I