Update profile
curl --request PATCH \
--url https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": {
"fullName": "John Doe",
"birthdate": "1987-01-01",
"primaryCitizenship": "GB",
"address": {
"city": "Manchester",
"line1": "1 High Street",
"line2": "Northern Quarter",
"postalCode": "M4 1AA"
}
}
}
'import requests
url = "https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile"
payload = { "input": {
"fullName": "John Doe",
"birthdate": "1987-01-01",
"primaryCitizenship": "GB",
"address": {
"city": "Manchester",
"line1": "1 High Street",
"line2": "Northern Quarter",
"postalCode": "M4 1AA"
}
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: {
fullName: 'John Doe',
birthdate: '1987-01-01',
primaryCitizenship: 'GB',
address: {
city: 'Manchester',
line1: '1 High Street',
line2: 'Northern Quarter',
postalCode: 'M4 1AA'
}
}
})
};
fetch('https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile', 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.enterprise.sandbox.uphold.com/core/kyc/processes/profile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'input' => [
'fullName' => 'John Doe',
'birthdate' => '1987-01-01',
'primaryCitizenship' => 'GB',
'address' => [
'city' => 'Manchester',
'line1' => '1 High Street',
'line2' => 'Northern Quarter',
'postalCode' => 'M4 1AA'
]
]
]),
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.enterprise.sandbox.uphold.com/core/kyc/processes/profile"
payload := strings.NewReader("{\n \"input\": {\n \"fullName\": \"John Doe\",\n \"birthdate\": \"1987-01-01\",\n \"primaryCitizenship\": \"GB\",\n \"address\": {\n \"city\": \"Manchester\",\n \"line1\": \"1 High Street\",\n \"line2\": \"Northern Quarter\",\n \"postalCode\": \"M4 1AA\"\n }\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input\": {\n \"fullName\": \"John Doe\",\n \"birthdate\": \"1987-01-01\",\n \"primaryCitizenship\": \"GB\",\n \"address\": {\n \"city\": \"Manchester\",\n \"line1\": \"1 High Street\",\n \"line2\": \"Northern Quarter\",\n \"postalCode\": \"M4 1AA\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input\": {\n \"fullName\": \"John Doe\",\n \"birthdate\": \"1987-01-01\",\n \"primaryCitizenship\": \"GB\",\n \"address\": {\n \"city\": \"Manchester\",\n \"line1\": \"1 High Street\",\n \"line2\": \"Northern Quarter\",\n \"postalCode\": \"M4 1AA\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"profile": {
"code": "profile",
"status": "ok",
"verification": {
"model": "none",
"method": "manual",
"dependencies": [],
"rules": {
"fullName": {
"presence": "required",
"editable": true
},
"birthdate": {
"presence": "required",
"editable": true
},
"birthplace": {
"presence": "disallowed",
"editable": false,
"rules": {
"country": {
"presence": "required",
"editable": false
},
"town": {
"presence": "required",
"editable": false
}
}
},
"primaryCitizenship": {
"presence": "disallowed",
"editable": false
},
"otherCitizenships": {
"presence": "disallowed",
"editable": false
},
"address": {
"presence": "required",
"editable": true,
"rules": {
"subdivision": {
"presence": "optional",
"editable": false
},
"city": {
"presence": "required",
"editable": true
},
"line1": {
"presence": "required",
"editable": true
},
"line2": {
"presence": "optional",
"editable": true
},
"postalCode": {
"presence": "required",
"editable": true
}
}
}
}
},
"input": {
"fullName": "John Doe",
"birthdate": "1987-01-01",
"primaryCitizenship": "GB",
"address": {
"country": "GB",
"subdivision": "GB-MAN",
"city": "Manchester",
"line1": "1 High Street",
"line2": "Northern Quarter",
"postalCode": "M4 1AA"
}
}
}
}KYC
Update profile
Update the profile process for an individual user.
PATCH
/
core
/
kyc
/
processes
/
profile
Update profile
curl --request PATCH \
--url https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"input": {
"fullName": "John Doe",
"birthdate": "1987-01-01",
"primaryCitizenship": "GB",
"address": {
"city": "Manchester",
"line1": "1 High Street",
"line2": "Northern Quarter",
"postalCode": "M4 1AA"
}
}
}
'import requests
url = "https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile"
payload = { "input": {
"fullName": "John Doe",
"birthdate": "1987-01-01",
"primaryCitizenship": "GB",
"address": {
"city": "Manchester",
"line1": "1 High Street",
"line2": "Northern Quarter",
"postalCode": "M4 1AA"
}
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
input: {
fullName: 'John Doe',
birthdate: '1987-01-01',
primaryCitizenship: 'GB',
address: {
city: 'Manchester',
line1: '1 High Street',
line2: 'Northern Quarter',
postalCode: 'M4 1AA'
}
}
})
};
fetch('https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile', 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.enterprise.sandbox.uphold.com/core/kyc/processes/profile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'input' => [
'fullName' => 'John Doe',
'birthdate' => '1987-01-01',
'primaryCitizenship' => 'GB',
'address' => [
'city' => 'Manchester',
'line1' => '1 High Street',
'line2' => 'Northern Quarter',
'postalCode' => 'M4 1AA'
]
]
]),
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.enterprise.sandbox.uphold.com/core/kyc/processes/profile"
payload := strings.NewReader("{\n \"input\": {\n \"fullName\": \"John Doe\",\n \"birthdate\": \"1987-01-01\",\n \"primaryCitizenship\": \"GB\",\n \"address\": {\n \"city\": \"Manchester\",\n \"line1\": \"1 High Street\",\n \"line2\": \"Northern Quarter\",\n \"postalCode\": \"M4 1AA\"\n }\n }\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"input\": {\n \"fullName\": \"John Doe\",\n \"birthdate\": \"1987-01-01\",\n \"primaryCitizenship\": \"GB\",\n \"address\": {\n \"city\": \"Manchester\",\n \"line1\": \"1 High Street\",\n \"line2\": \"Northern Quarter\",\n \"postalCode\": \"M4 1AA\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enterprise.sandbox.uphold.com/core/kyc/processes/profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"input\": {\n \"fullName\": \"John Doe\",\n \"birthdate\": \"1987-01-01\",\n \"primaryCitizenship\": \"GB\",\n \"address\": {\n \"city\": \"Manchester\",\n \"line1\": \"1 High Street\",\n \"line2\": \"Northern Quarter\",\n \"postalCode\": \"M4 1AA\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"profile": {
"code": "profile",
"status": "ok",
"verification": {
"model": "none",
"method": "manual",
"dependencies": [],
"rules": {
"fullName": {
"presence": "required",
"editable": true
},
"birthdate": {
"presence": "required",
"editable": true
},
"birthplace": {
"presence": "disallowed",
"editable": false,
"rules": {
"country": {
"presence": "required",
"editable": false
},
"town": {
"presence": "required",
"editable": false
}
}
},
"primaryCitizenship": {
"presence": "disallowed",
"editable": false
},
"otherCitizenships": {
"presence": "disallowed",
"editable": false
},
"address": {
"presence": "required",
"editable": true,
"rules": {
"subdivision": {
"presence": "optional",
"editable": false
},
"city": {
"presence": "required",
"editable": true
},
"line1": {
"presence": "required",
"editable": true
},
"line2": {
"presence": "optional",
"editable": true
},
"postalCode": {
"presence": "required",
"editable": true
}
}
}
}
},
"input": {
"fullName": "John Doe",
"birthdate": "1987-01-01",
"primaryCitizenship": "GB",
"address": {
"country": "GB",
"subdivision": "GB-MAN",
"city": "Manchester",
"line1": "1 High Street",
"line2": "Northern Quarter",
"postalCode": "M4 1AA"
}
}
}
}
Update profile is the endpoint through which the user can update their personal information, such as name, date of birth, citizenship, and residential address.
This process solely updates the user’s personal information and residential address. It does not perform identity or address verification. For identity verification, refer to the identity process. For address verification, refer to the proof-of-address process.
Region-specific rules
Some fields are only accepted based on the user’s region. When a field isn’t accepted, it’s ignored rather than rejected (see Warnings).subdivision: only accepted when the proof-of-address process ispartner-verifiedfor your organization and thecountryfield is not set toUS.birthplace: only accepted when theaddress.countryfield is set to a country that requires it for regulatory compliance.otherCitizenships: only accepted when theaddress.countryfield is set to a country that requires it for regulatory compliance.
Warnings
If you submit a field whosepresence is disallowed or whose editable is false, it’s silently ignored rather than rejected, and reported in a warnings object on the response:
{
"profile": {
// ... profile fields ...
},
"warnings": {
"input": [
{
"code": "verification_rule_violated",
"message": "Field 'input.otherCitizenships' was ignored as its presence is disallowed",
"details": {
"property": "input.otherCitizenships",
"rule": "presence"
}
}
]
}
}
Was this page helpful?
⌘I