curl --request POST \
--url https://access.utgl.io/v1/payouts/validate \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室",
"destination": {
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室"
},
"amount": 123,
"currency": "<string>"
}
'import requests
url = "https://access.utgl.io/v1/payouts/validate"
payload = {
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室",
"destination": {
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室"
},
"amount": 123,
"currency": "<string>"
}
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({
accountNumber: 6225888888888888,
firstName: 'DAWEN',
firstNameCN: '大文',
surname: 'CHEN',
surnameCN: '陈',
address: '上海市黄浦区南京东路333号202室',
destination: {
accountNumber: 6225888888888888,
firstName: 'DAWEN',
firstNameCN: '大文',
surname: 'CHEN',
surnameCN: '陈',
address: '上海市黄浦区南京东路333号202室'
},
amount: 123,
currency: '<string>'
})
};
fetch('https://access.utgl.io/v1/payouts/validate', 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/payouts/validate",
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([
'accountNumber' => 6225888888888888,
'firstName' => 'DAWEN',
'firstNameCN' => '大文',
'surname' => 'CHEN',
'surnameCN' => '陈',
'address' => '上海市黄浦区南京东路333号202室',
'destination' => [
'accountNumber' => 6225888888888888,
'firstName' => 'DAWEN',
'firstNameCN' => '大文',
'surname' => 'CHEN',
'surnameCN' => '陈',
'address' => '上海市黄浦区南京东路333号202室'
],
'amount' => 123,
'currency' => '<string>'
]),
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/payouts/validate"
payload := strings.NewReader("{\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\",\n \"destination\": {\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\"\n },\n \"amount\": 123,\n \"currency\": \"<string>\"\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/payouts/validate")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\",\n \"destination\": {\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\"\n },\n \"amount\": 123,\n \"currency\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://access.utgl.io/v1/payouts/validate")
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 \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\",\n \"destination\": {\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\"\n },\n \"amount\": 123,\n \"currency\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"valid": true,
"message": "<string>"
}{
"code": "UNIONPAY_INVALID_BANK_ACCOUNT",
"message": "<string>"
}Validate Payout Parameters
Validate payout parameters and destination before processing a payout request.
This endpoint is currently supported for the UNIONPAY and BANK_TRANSFER methods, and is intended to ensure that the payout request meets the necessary minimum criteria for successful processing. Note that even a pre-validated payout may still fail to be processed if the destination is invalid for other reasons not checked by this endpoint.
Special Validation for Korea (KR) Bank Transfer: When destinationCountry is “KR” and destinationCurrency is “KRW”:
- mobileNumber is required in destination information
- mobileNumber must be in E.164 format (e.g. +82123456789)
- If mobileNumber does not start with “+82”, email is required in destination information
- If destinationAmount is provided: Must be greater than or equal to 5 KRW
- If sourceAmount is provided: Must result in a destination amount greater than or equal to 5 KRW
curl --request POST \
--url https://access.utgl.io/v1/payouts/validate \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室",
"destination": {
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室"
},
"amount": 123,
"currency": "<string>"
}
'import requests
url = "https://access.utgl.io/v1/payouts/validate"
payload = {
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室",
"destination": {
"accountNumber": 6225888888888888,
"firstName": "DAWEN",
"firstNameCN": "大文",
"surname": "CHEN",
"surnameCN": "陈",
"address": "上海市黄浦区南京东路333号202室"
},
"amount": 123,
"currency": "<string>"
}
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({
accountNumber: 6225888888888888,
firstName: 'DAWEN',
firstNameCN: '大文',
surname: 'CHEN',
surnameCN: '陈',
address: '上海市黄浦区南京东路333号202室',
destination: {
accountNumber: 6225888888888888,
firstName: 'DAWEN',
firstNameCN: '大文',
surname: 'CHEN',
surnameCN: '陈',
address: '上海市黄浦区南京东路333号202室'
},
amount: 123,
currency: '<string>'
})
};
fetch('https://access.utgl.io/v1/payouts/validate', 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/payouts/validate",
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([
'accountNumber' => 6225888888888888,
'firstName' => 'DAWEN',
'firstNameCN' => '大文',
'surname' => 'CHEN',
'surnameCN' => '陈',
'address' => '上海市黄浦区南京东路333号202室',
'destination' => [
'accountNumber' => 6225888888888888,
'firstName' => 'DAWEN',
'firstNameCN' => '大文',
'surname' => 'CHEN',
'surnameCN' => '陈',
'address' => '上海市黄浦区南京东路333号202室'
],
'amount' => 123,
'currency' => '<string>'
]),
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/payouts/validate"
payload := strings.NewReader("{\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\",\n \"destination\": {\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\"\n },\n \"amount\": 123,\n \"currency\": \"<string>\"\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/payouts/validate")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\",\n \"destination\": {\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\"\n },\n \"amount\": 123,\n \"currency\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://access.utgl.io/v1/payouts/validate")
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 \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\",\n \"destination\": {\n \"accountNumber\": 6225888888888888,\n \"firstName\": \"DAWEN\",\n \"firstNameCN\": \"大文\",\n \"surname\": \"CHEN\",\n \"surnameCN\": \"陈\",\n \"address\": \"上海市黄浦区南京东路333号202室\"\n },\n \"amount\": 123,\n \"currency\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"valid": true,
"message": "<string>"
}{
"code": "UNIONPAY_INVALID_BANK_ACCOUNT",
"message": "<string>"
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Body
UnionPay account number (mainland china resident account holders only)
^\d{16,19}$6225888888888888
Account holder's first name
"DAWEN"
Account holder first name in Chinese
^[\u4e00-\u9fa5]+$"大文"
Account holder surname
"CHEN"
The receiver's surname in Chinese
"陈"
The account's address. Can be in Chinese or English. Must be longer than 20 characters and contain at least one space and one number. Chinese characters will be automatically converted to pinyin.
"上海市黄浦区南京东路333号202室"
UNIONPAY, BANK_TRANSFER Payout destination
- UnionPay Card Account
- Bank Transfer Account
Show child attributes
Show child attributes
Destination amount of payout
Destination currency of payout
Optional source information for the payout sender
Show child attributes
Show child attributes
Was this page helpful?

