curl --request POST \
--url https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"cardAccountId": "6e519e8e-15ac-483e-b6ac-d0f42aee36b2",
"rejectedReason": "Document expired",
"rejectionAdditionalInfo": "Please update your proof of address and resubmit within 14 days."
}
'import requests
url = "https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status"
payload = {
"cardAccountId": "6e519e8e-15ac-483e-b6ac-d0f42aee36b2",
"rejectedReason": "Document expired",
"rejectionAdditionalInfo": "Please update your proof of address and resubmit within 14 days."
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cardAccountId: '6e519e8e-15ac-483e-b6ac-d0f42aee36b2',
rejectedReason: 'Document expired',
rejectionAdditionalInfo: 'Please update your proof of address and resubmit within 14 days.'
})
};
fetch('https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status', 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://access.utgl.io/v1/cardaccounts/simulate-client-identity-status",
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([
'cardAccountId' => '6e519e8e-15ac-483e-b6ac-d0f42aee36b2',
'rejectedReason' => 'Document expired',
'rejectionAdditionalInfo' => 'Please update your proof of address and resubmit within 14 days.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://access.utgl.io/v1/cardaccounts/simulate-client-identity-status"
payload := strings.NewReader("{\n \"cardAccountId\": \"6e519e8e-15ac-483e-b6ac-d0f42aee36b2\",\n \"rejectedReason\": \"Document expired\",\n \"rejectionAdditionalInfo\": \"Please update your proof of address and resubmit within 14 days.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://access.utgl.io/v1/cardaccounts/simulate-client-identity-status")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"cardAccountId\": \"6e519e8e-15ac-483e-b6ac-d0f42aee36b2\",\n \"rejectedReason\": \"Document expired\",\n \"rejectionAdditionalInfo\": \"Please update your proof of address and resubmit within 14 days.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cardAccountId\": \"6e519e8e-15ac-483e-b6ac-d0f42aee36b2\",\n \"rejectedReason\": \"Document expired\",\n \"rejectionAdditionalInfo\": \"Please update your proof of address and resubmit within 14 days.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cardAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kycStatus": "<string>"
}{
"code": "BAD_REQUEST",
"message": "<string>"
}{
"code": "ERR_SANDBOX_ONLY",
"message": "This endpoint is only available in sandbox mode"
}Simulate client identity approval or rejection
Simulate approving or rejecting a client identity (KYC) for a card account in the Sandbox environment.
This endpoint allows you to test your integration by triggering KYC approval or rejection without manual intervention. Webhooks will be sent as they would in production, enabling you to test your complete integration flow. Note: This endpoint is only available in Sandbox mode.
curl --request POST \
--url https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"cardAccountId": "6e519e8e-15ac-483e-b6ac-d0f42aee36b2",
"rejectedReason": "Document expired",
"rejectionAdditionalInfo": "Please update your proof of address and resubmit within 14 days."
}
'import requests
url = "https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status"
payload = {
"cardAccountId": "6e519e8e-15ac-483e-b6ac-d0f42aee36b2",
"rejectedReason": "Document expired",
"rejectionAdditionalInfo": "Please update your proof of address and resubmit within 14 days."
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cardAccountId: '6e519e8e-15ac-483e-b6ac-d0f42aee36b2',
rejectedReason: 'Document expired',
rejectionAdditionalInfo: 'Please update your proof of address and resubmit within 14 days.'
})
};
fetch('https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status', 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://access.utgl.io/v1/cardaccounts/simulate-client-identity-status",
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([
'cardAccountId' => '6e519e8e-15ac-483e-b6ac-d0f42aee36b2',
'rejectedReason' => 'Document expired',
'rejectionAdditionalInfo' => 'Please update your proof of address and resubmit within 14 days.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://access.utgl.io/v1/cardaccounts/simulate-client-identity-status"
payload := strings.NewReader("{\n \"cardAccountId\": \"6e519e8e-15ac-483e-b6ac-d0f42aee36b2\",\n \"rejectedReason\": \"Document expired\",\n \"rejectionAdditionalInfo\": \"Please update your proof of address and resubmit within 14 days.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
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://access.utgl.io/v1/cardaccounts/simulate-client-identity-status")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"cardAccountId\": \"6e519e8e-15ac-483e-b6ac-d0f42aee36b2\",\n \"rejectedReason\": \"Document expired\",\n \"rejectionAdditionalInfo\": \"Please update your proof of address and resubmit within 14 days.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://access.utgl.io/v1/cardaccounts/simulate-client-identity-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cardAccountId\": \"6e519e8e-15ac-483e-b6ac-d0f42aee36b2\",\n \"rejectedReason\": \"Document expired\",\n \"rejectionAdditionalInfo\": \"Please update your proof of address and resubmit within 14 days.\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"cardAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kycStatus": "<string>"
}{
"code": "BAD_REQUEST",
"message": "<string>"
}{
"code": "ERR_SANDBOX_ONLY",
"message": "This endpoint is only available in sandbox mode"
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Body
The card account ID whose client identity will be approved or rejected
"6e519e8e-15ac-483e-b6ac-d0f42aee36b2"
The action to simulate on the client identity
approve, reject Required when action is reject. The reason for rejection.
500"Document expired"
Optional additional details about the KYC rejection, such as documents or follow-up instructions.
1000"Please update your proof of address and resubmit within 14 days."
Was this page helpful?

