> ## Documentation Index
> Fetch the complete documentation index at: https://developers.uqpay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PIN and no-PIN payments

> Manage card PINs and configure PIN-free transaction thresholds for physical cards.

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.

<Note>
  PIN settings apply to physical cards only. Virtual cards do not use PINs.
</Note>

## Set PIN at activation

A PIN is mandatory when activating a physical card. Include the `pin` field in the [Activate Card](/card-issuance/v1.6/api-reference/activate-card) request:

```bash theme={null}
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](/card-issuance/v1.6/api-reference/reset-pin) endpoint to change a card's PIN:

```bash theme={null}
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`                                     |

### Configure the threshold

Set `no_pin_payment_amount` during card update:

```bash theme={null}
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.                    |

<Warning>
  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.
</Warning>

## Related

* [Activate Card API](/card-issuance/v1.6/api-reference/activate-card)
* [Update Card API](/card-issuance/v1.6/api-reference/update-card)
* [Reset Card PIN API](/card-issuance/v1.6/api-reference/reset-pin)
* [Issue Physical Cards](/card-issuance/v1.6/guide/issue-physical-cards)
