curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-client-id: <x-client-id>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"terminal_id": "10000005",
"prv_key": "cxwbHl6... "
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey"
payload = {
"terminal_id": "10000005",
"prv_key": "cxwbHl6... "
}
headers = {
"x-client-id": "<x-client-id>",
"x-idempotency-key": "<x-idempotency-key>",
"x-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-client-id': '<x-client-id>',
'x-idempotency-key': '<x-idempotency-key>',
'x-auth-token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({terminal_id: '10000005', prv_key: 'cxwbHl6... '})
};
fetch('https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey', 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-sandbox.uqpaytech.com/api/v2/terminal/getPinKey",
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([
'terminal_id' => '10000005',
'prv_key' => 'cxwbHl6... '
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-auth-token: <api-key>",
"x-client-id: <x-client-id>",
"x-idempotency-key: <x-idempotency-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-sandbox.uqpaytech.com/api/v2/terminal/getPinKey"
payload := strings.NewReader("{\n \"terminal_id\": \"10000005\",\n \"prv_key\": \"cxwbHl6... \"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-id", "<x-client-id>")
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-auth-token", "<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.post("https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey")
.header("x-client-id", "<x-client-id>")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("x-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"terminal_id\": \"10000005\",\n \"prv_key\": \"cxwbHl6... \"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-id"] = '<x-client-id>'
request["x-idempotency-key"] = '<x-idempotency-key>'
request["x-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"terminal_id\": \"10000005\",\n \"prv_key\": \"cxwbHl6... \"\n}"
response = http.request(request)
puts response.read_body{
"encrypt_pin_key": "4usf0C0PfalJuUMJ5CqyD7T+4l4r463G61hTwRqbQyZlH+/YANcQ4iH7akqSGvGdxVbvZOvGMaYRBZzKZmlR3hgXxDaQwfqeGtPkZg==",
"pin_key_expire": "2025-12-04T18:18:27.797116587+08:00",
"terminal_id": "10000005"
}Get PIN Key
Retrieve the PIN encryption key for a registered terminal device.
curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-client-id: <x-client-id>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"terminal_id": "10000005",
"prv_key": "cxwbHl6... "
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey"
payload = {
"terminal_id": "10000005",
"prv_key": "cxwbHl6... "
}
headers = {
"x-client-id": "<x-client-id>",
"x-idempotency-key": "<x-idempotency-key>",
"x-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-client-id': '<x-client-id>',
'x-idempotency-key': '<x-idempotency-key>',
'x-auth-token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({terminal_id: '10000005', prv_key: 'cxwbHl6... '})
};
fetch('https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey', 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-sandbox.uqpaytech.com/api/v2/terminal/getPinKey",
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([
'terminal_id' => '10000005',
'prv_key' => 'cxwbHl6... '
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-auth-token: <api-key>",
"x-client-id: <x-client-id>",
"x-idempotency-key: <x-idempotency-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-sandbox.uqpaytech.com/api/v2/terminal/getPinKey"
payload := strings.NewReader("{\n \"terminal_id\": \"10000005\",\n \"prv_key\": \"cxwbHl6... \"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-client-id", "<x-client-id>")
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
req.Header.Add("x-auth-token", "<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.post("https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey")
.header("x-client-id", "<x-client-id>")
.header("x-idempotency-key", "<x-idempotency-key>")
.header("x-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"terminal_id\": \"10000005\",\n \"prv_key\": \"cxwbHl6... \"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v2/terminal/getPinKey")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-client-id"] = '<x-client-id>'
request["x-idempotency-key"] = '<x-idempotency-key>'
request["x-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"terminal_id\": \"10000005\",\n \"prv_key\": \"cxwbHl6... \"\n}"
response = http.request(request)
puts response.read_body{
"encrypt_pin_key": "4usf0C0PfalJuUMJ5CqyD7T+4l4r463G61hTwRqbQyZlH+/YANcQ4iH7akqSGvGdxVbvZOvGMaYRBZzKZmlR3hgXxDaQwfqeGtPkZg==",
"pin_key_expire": "2025-12-04T18:18:27.797116587+08:00",
"terminal_id": "10000005"
}Authorizations
The API token for login provided by UQPAY.
Headers
The API client id generated by UQPAY
A unique identifier (UUID) used to maintain operation idempotency, ensuring that repeated executions of the same operation do not result in unintended effects or duplication. It helps preserve data consistency in the face of network errors, retries, or failures.
Specifies the sub-account on whose behalf the request is made. This should be set to the account_id, which can be retrieved via the List Connected Accounts. If omitted or empty, the request is executed using the master account.
More information at Connected Accounts.
Body
Response
PIN key retrieved successfully
Encrypted PIN key. Decrypt using the provided prv_key.
"4usf0C0PfalJuUMJ5CqyD7T+4l4r463G61hTwRqbQyZlH+/YANcQ4iH7akqSGvGdxVbvZOvGMaYRBZzKZmlR3hgXxDaQwfqeGtPkZg=="
Expiration time of the PIN key.
"2025-12-04T18:18:27.797116587+08:00"
The terminal ID.
"10000005"

