curl --request PUT \
--url https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"id": "<string>",
"firstName": "John",
"lastName": "Doe",
"roles": [],
"email": "jsmith@example.com",
"phone": "<string>",
"dateOfBirth": "1990-01-15",
"ownershipPercentage": 50,
"currentAddress": {
"street": "123 Main Street",
"city": "Lagos",
"state": "Lagos",
"postalCode": "100001",
"country": "NG"
},
"sourceOfWealthExplanation": "<string>",
"taxId": "440301199209153216",
"bvn": "<string>",
"nin": "<string>"
}
'import requests
url = "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}"
payload = {
"id": "<string>",
"firstName": "John",
"lastName": "Doe",
"roles": [],
"email": "jsmith@example.com",
"phone": "<string>",
"dateOfBirth": "1990-01-15",
"ownershipPercentage": 50,
"currentAddress": {
"street": "123 Main Street",
"city": "Lagos",
"state": "Lagos",
"postalCode": "100001",
"country": "NG"
},
"sourceOfWealthExplanation": "<string>",
"taxId": "440301199209153216",
"bvn": "<string>",
"nin": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
firstName: 'John',
lastName: 'Doe',
roles: [],
email: 'jsmith@example.com',
phone: '<string>',
dateOfBirth: '1990-01-15',
ownershipPercentage: 50,
currentAddress: {
street: '123 Main Street',
city: 'Lagos',
state: 'Lagos',
postalCode: '100001',
country: 'NG'
},
sourceOfWealthExplanation: '<string>',
taxId: '440301199209153216',
bvn: '<string>',
nin: '<string>'
})
};
fetch('https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}', 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.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'firstName' => 'John',
'lastName' => 'Doe',
'roles' => [
],
'email' => 'jsmith@example.com',
'phone' => '<string>',
'dateOfBirth' => '1990-01-15',
'ownershipPercentage' => 50,
'currentAddress' => [
'street' => '123 Main Street',
'city' => 'Lagos',
'state' => 'Lagos',
'postalCode' => '100001',
'country' => 'NG'
],
'sourceOfWealthExplanation' => '<string>',
'taxId' => '440301199209153216',
'bvn' => '<string>',
'nin' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"roles\": [],\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"1990-01-15\",\n \"ownershipPercentage\": 50,\n \"currentAddress\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Lagos\",\n \"state\": \"Lagos\",\n \"postalCode\": \"100001\",\n \"country\": \"NG\"\n },\n \"sourceOfWealthExplanation\": \"<string>\",\n \"taxId\": \"440301199209153216\",\n \"bvn\": \"<string>\",\n \"nin\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.put("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"roles\": [],\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"1990-01-15\",\n \"ownershipPercentage\": 50,\n \"currentAddress\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Lagos\",\n \"state\": \"Lagos\",\n \"postalCode\": \"100001\",\n \"country\": \"NG\"\n },\n \"sourceOfWealthExplanation\": \"<string>\",\n \"taxId\": \"440301199209153216\",\n \"bvn\": \"<string>\",\n \"nin\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"roles\": [],\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"1990-01-15\",\n \"ownershipPercentage\": 50,\n \"currentAddress\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Lagos\",\n \"state\": \"Lagos\",\n \"postalCode\": \"100001\",\n \"country\": \"NG\"\n },\n \"sourceOfWealthExplanation\": \"<string>\",\n \"taxId\": \"440301199209153216\",\n \"bvn\": \"<string>\",\n \"nin\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Related person updated successfully",
"data": {
"id": "<string>",
"firstName": "John",
"lastName": "Doe",
"roles": [
"Beneficial Owner"
],
"email": "jsmith@example.com",
"phone": "<string>",
"dateOfBirth": "1990-01-15",
"ownershipPercentage": 50,
"currentAddress": {
"street": "123 Main Street",
"city": "Lagos",
"state": "Lagos",
"postalCode": "100001",
"country": "NG"
},
"sourceOfWealthExplanation": "<string>",
"taxId": "440301199209153216",
"bvn": "<string>",
"nin": "<string>"
}
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Update Related Person
Updates a related person on a business account’s application. Provided fields are merged into the existing record.
curl --request PUT \
--url https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"id": "<string>",
"firstName": "John",
"lastName": "Doe",
"roles": [],
"email": "jsmith@example.com",
"phone": "<string>",
"dateOfBirth": "1990-01-15",
"ownershipPercentage": 50,
"currentAddress": {
"street": "123 Main Street",
"city": "Lagos",
"state": "Lagos",
"postalCode": "100001",
"country": "NG"
},
"sourceOfWealthExplanation": "<string>",
"taxId": "440301199209153216",
"bvn": "<string>",
"nin": "<string>"
}
'import requests
url = "https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}"
payload = {
"id": "<string>",
"firstName": "John",
"lastName": "Doe",
"roles": [],
"email": "jsmith@example.com",
"phone": "<string>",
"dateOfBirth": "1990-01-15",
"ownershipPercentage": 50,
"currentAddress": {
"street": "123 Main Street",
"city": "Lagos",
"state": "Lagos",
"postalCode": "100001",
"country": "NG"
},
"sourceOfWealthExplanation": "<string>",
"taxId": "440301199209153216",
"bvn": "<string>",
"nin": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '<string>',
firstName: 'John',
lastName: 'Doe',
roles: [],
email: 'jsmith@example.com',
phone: '<string>',
dateOfBirth: '1990-01-15',
ownershipPercentage: 50,
currentAddress: {
street: '123 Main Street',
city: 'Lagos',
state: 'Lagos',
postalCode: '100001',
country: 'NG'
},
sourceOfWealthExplanation: '<string>',
taxId: '440301199209153216',
bvn: '<string>',
nin: '<string>'
})
};
fetch('https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}', 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.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'id' => '<string>',
'firstName' => 'John',
'lastName' => 'Doe',
'roles' => [
],
'email' => 'jsmith@example.com',
'phone' => '<string>',
'dateOfBirth' => '1990-01-15',
'ownershipPercentage' => 50,
'currentAddress' => [
'street' => '123 Main Street',
'city' => 'Lagos',
'state' => 'Lagos',
'postalCode' => '100001',
'country' => 'NG'
],
'sourceOfWealthExplanation' => '<string>',
'taxId' => '440301199209153216',
'bvn' => '<string>',
'nin' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}"
payload := strings.NewReader("{\n \"id\": \"<string>\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"roles\": [],\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"1990-01-15\",\n \"ownershipPercentage\": 50,\n \"currentAddress\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Lagos\",\n \"state\": \"Lagos\",\n \"postalCode\": \"100001\",\n \"country\": \"NG\"\n },\n \"sourceOfWealthExplanation\": \"<string>\",\n \"taxId\": \"440301199209153216\",\n \"bvn\": \"<string>\",\n \"nin\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.put("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"<string>\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"roles\": [],\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"1990-01-15\",\n \"ownershipPercentage\": 50,\n \"currentAddress\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Lagos\",\n \"state\": \"Lagos\",\n \"postalCode\": \"100001\",\n \"country\": \"NG\"\n },\n \"sourceOfWealthExplanation\": \"<string>\",\n \"taxId\": \"440301199209153216\",\n \"bvn\": \"<string>\",\n \"nin\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rolla.xyz/api/v1/external/accounts/{accountId}/related-persons/{personId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"<string>\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\",\n \"roles\": [],\n \"email\": \"jsmith@example.com\",\n \"phone\": \"<string>\",\n \"dateOfBirth\": \"1990-01-15\",\n \"ownershipPercentage\": 50,\n \"currentAddress\": {\n \"street\": \"123 Main Street\",\n \"city\": \"Lagos\",\n \"state\": \"Lagos\",\n \"postalCode\": \"100001\",\n \"country\": \"NG\"\n },\n \"sourceOfWealthExplanation\": \"<string>\",\n \"taxId\": \"440301199209153216\",\n \"bvn\": \"<string>\",\n \"nin\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Related person updated successfully",
"data": {
"id": "<string>",
"firstName": "John",
"lastName": "Doe",
"roles": [
"Beneficial Owner"
],
"email": "jsmith@example.com",
"phone": "<string>",
"dateOfBirth": "1990-01-15",
"ownershipPercentage": 50,
"currentAddress": {
"street": "123 Main Street",
"city": "Lagos",
"state": "Lagos",
"postalCode": "100001",
"country": "NG"
},
"sourceOfWealthExplanation": "<string>",
"taxId": "440301199209153216",
"bvn": "<string>",
"nin": "<string>"
}
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}taxId can be patched onto an existing person — useful for representatives added before
the field existed, whose USD issuance is blocked until one is supplied. See
Add Related Person
for the per-country formats.Example Request
curl -X PUT "https://api.rolla.xyz/api/v1/external/accounts/eec3cbed-79d8-4370-87a0-b6be9e287337/related-persons/a3d4f21e-f499-488f-8508-43228dfea485" \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"ownershipPercentage": 75
}'
Example Response
{
"success": true,
"message": "Related person updated successfully",
"data": {
"id": "a3d4f21e-f499-488f-8508-43228dfea485",
"firstName": "Jane",
"lastName": "Doe",
"ownershipPercentage": 75
}
}
Authorizations
Your Rolla API key
Path Parameters
Identifier of an account owned by the same user as your API key's business
Related person identifier
Body
"John"
"Doe"
Beneficial Owner, Director "1990-01-15"
0 <= x <= 100Show child attributes
Show child attributes
The person's government identifier, in the format their country of residence issues — Mainland China: 18-character resident ID; Hong Kong: HKID; United States: SSN or ITIN; elsewhere: national ID or tax number as issued. Nigerian residents send nin instead. Required before the application can be submitted, and can be patched onto an existing person. The format is validated by the USD provider when the account is issued.
"440301199209153216"
Bank Verification Number (11 digits). Nigerian residents only.
National Identification Number (11 digits). Nigerian residents only; accepted in place of taxId.