curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v2/terminal/register \
--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 '
{
"firm_code": "01",
"firm_sn": "SN123456789",
"terminal_model": "P1000"
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v2/terminal/register"
payload = {
"firm_code": "01",
"firm_sn": "SN123456789",
"terminal_model": "P1000"
}
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({firm_code: '01', firm_sn: 'SN123456789', terminal_model: 'P1000'})
};
fetch('https://api-sandbox.uqpaytech.com/api/v2/terminal/register', 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/register",
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([
'firm_code' => '01',
'firm_sn' => 'SN123456789',
'terminal_model' => 'P1000'
]),
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/register"
payload := strings.NewReader("{\n \"firm_code\": \"01\",\n \"firm_sn\": \"SN123456789\",\n \"terminal_model\": \"P1000\"\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/register")
.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 \"firm_code\": \"01\",\n \"firm_sn\": \"SN123456789\",\n \"terminal_model\": \"P1000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v2/terminal/register")
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 \"firm_code\": \"01\",\n \"firm_sn\": \"SN123456789\",\n \"terminal_model\": \"P1000\"\n}"
response = http.request(request)
puts response.read_body{
"create_time": "2025-12-05 10:38:53",
"firm_sn": "TG676SX1764902333",
"terminal_id": "10000254"
}{
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "terminal_model is not supported for firm_code, please contact technical support"
}Register Terminal
Register a new POS terminal device for transaction processing.
curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v2/terminal/register \
--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 '
{
"firm_code": "01",
"firm_sn": "SN123456789",
"terminal_model": "P1000"
}
'import requests
url = "https://api-sandbox.uqpaytech.com/api/v2/terminal/register"
payload = {
"firm_code": "01",
"firm_sn": "SN123456789",
"terminal_model": "P1000"
}
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({firm_code: '01', firm_sn: 'SN123456789', terminal_model: 'P1000'})
};
fetch('https://api-sandbox.uqpaytech.com/api/v2/terminal/register', 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/register",
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([
'firm_code' => '01',
'firm_sn' => 'SN123456789',
'terminal_model' => 'P1000'
]),
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/register"
payload := strings.NewReader("{\n \"firm_code\": \"01\",\n \"firm_sn\": \"SN123456789\",\n \"terminal_model\": \"P1000\"\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/register")
.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 \"firm_code\": \"01\",\n \"firm_sn\": \"SN123456789\",\n \"terminal_model\": \"P1000\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.uqpaytech.com/api/v2/terminal/register")
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 \"firm_code\": \"01\",\n \"firm_sn\": \"SN123456789\",\n \"terminal_model\": \"P1000\"\n}"
response = http.request(request)
puts response.read_body{
"create_time": "2025-12-05 10:38:53",
"firm_sn": "TG676SX1764902333",
"terminal_id": "10000254"
}{
"type": "invalid_request_error",
"code": "invalid_parameter",
"message": "terminal_model is not supported for firm_code, please contact technical support"
}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
Enabled terminal manufacturer code. terminal_model must be supported for the selected manufacturer.
Current supported combinations:
01(Shengben):P1000,P302(Newland):N910,N700,T903(Xinguodu):SP630,SP53004(iMin):Swift 2,Falcon 105(PAX):A920,A60
UQPAY maintains these combinations and may update them. See the POS API Integration Guide or contact UQPAY technical support if your model is not listed.
01, 02, 03, 04, 05 "01"
Terminal serial number
"SN123456789"
Terminal model supported for the selected firm_code. Use a model from the matching manufacturer in the supported combinations listed under firm_code above.
"P1000"

