Physical cards require a PIN for transaction authentication. UQPAY also supports configurable PIN-free thresholds so cardholders can make low-value purchases without entering a PIN.
PIN settings apply to physical cards only. Virtual cards do not use PINs.
Set PIN at activation
A PIN is mandatory when activating a physical card. Include the pin field in the Activate Card request:
curl -X POST https://api-sandbox.uqpaytech.com/api/v1/issuing/cards/activate \
-H "x-auth-token: YOUR_API_TOKEN" \
-H "x-idempotency-key: $(uuidgen | tr '[:upper:]' '[:lower:]')" \
-H "Content-Type: application/json" \
-d '{
"card_id": "b2c1b725-d8f1-4fbb-88a1-41bf9ffc8ead",
"activation_code": "81534005",
"pin": "123456"
}'
Reset PIN
Use the Reset Card PIN endpoint to change a card’s PIN:
curl -X POST https://api-sandbox.uqpaytech.com/api/v1/issuing/cards/pin \
-H "x-auth-token: YOUR_API_TOKEN" \
-H "x-idempotency-key: $(uuidgen | tr '[:upper:]' '[:lower:]')" \
-H "Content-Type: application/json" \
-d '{
"card_id": "b2c1b725-d8f1-4fbb-88a1-41bf9ffc8ead",
"pin": "567890"
}'
No-PIN payment threshold
The no_pin_payment_amount parameter sets a transaction amount below which PIN entry is not required. This improves the checkout experience for small, frequent purchases — especially in contactless payment scenarios.
Default behavior
| Condition | Behavior |
|---|
no_pin_payment_amount not set | Transactions up to 200 SGD proceed without PIN |
no_pin_payment_amount set to 0 | All transactions require PIN |
no_pin_payment_amount set to a value | Transactions up to that amount proceed without PIN |
For cards issued in USD, the default threshold corresponds to the USD equivalent of 200 SGD at the prevailing exchange rate.
Supported ranges
| Currency | Range |
|---|
| USD | 0 – 2,000 |
| SGD | 0 – 2,600 |
Supported BINs
| Environment | BINs |
|---|
| Production | 49372410, 49372408, 49372434, 45659910 |
| Sandbox | 40963608 |
Set no_pin_payment_amount during card update:
curl -X POST https://api-sandbox.uqpaytech.com/api/v1/issuing/cards/{card_id} \
-H "x-auth-token: YOUR_API_TOKEN" \
-H "x-idempotency-key: $(uuidgen | tr '[:upper:]' '[:lower:]')" \
-H "Content-Type: application/json" \
-d '{
"no_pin_payment_amount": 500
}'
Transaction decision logic
The authorization result depends on three factors: whether the card has a PIN, whether a custom no-PIN limit is configured, and the transaction amount.
| Has PIN | No-PIN limit configured | Transaction amount | Result |
|---|
| Yes | No | ≤ 200 SGD | Approved without PIN (or with correct PIN). Incorrect PIN is declined. |
| Yes | No | > 200 SGD | PIN required. Incorrect or missing PIN is declined. |
| Yes | Yes (e.g., 500 SGD) | ≤ custom limit | Approved without PIN (or with correct PIN). Incorrect PIN is declined. |
| Yes | Yes (e.g., 500 SGD) | > custom limit | PIN required. Incorrect or missing PIN is declined. |
If a card has no PIN set and no PIN-free limit configured, high-value transactions will fail due to missing authentication credentials. Always set a PIN during card activation.