SG PSA compliance for wallet-based programs
Payment Services Act (PSA) scope
PSA definition
Any wallet-based program, contracted in Singapore, regardless of wallet funding source, as long as it is cardholder entitled – meaning the cardholder has the freedom to choose how the funds residing in the wallet are being spent – is subjected to PSA compliance.
The legislation applies to all Singapore Residents:
- Singapore Citizen
- Singapore Permanent Resident
- Holder of a valid Employment Pass issued by the authorities in Singapore
If you are unsure whether your e-wallet program is subjected to PSA compliance, reach out to your respective Nium representatives for more information.
System-level limits
In compliance with PSA, Nium implements measures where Nium-issued Singapore-based e-wallets can hold the following maximums:
S$ maximum | Timeframe | Wallets | Referred to as |
---|---|---|---|
S$5,000 | At any time | Per wallet | |
S$30,000 | Calendar year | Total across all e-wallets |
These system-level limits apply to all Singapore residents holding a PSA-compliant e-wallet issued by Nium.
Client-level limits
In addition to the system-level wallet balance limit and annual loading limit, Nium's e-wallet program lets you set any client-level limits according to your risk tolerance.
When lower than system limits
If your configured wallet balance limit or annual loading limit is lower than the system-level limits, then your configured limit or limits apply to all of your customers.
For example, If your configured annual loading limit is S$25,000 (while the system level limit is S$30,000), then the S$25,000 annual loading limit takes precedence for all of your customers.
When higher than system limits
If your configured wallet balance limit or annual loading limit is higher than the system-level limits, then your configured limit or limits apply to only non-Singapore resident e-wallet customers while system-level limits still apply to Singapore Resident e-wallet customers.
For example, If your configured wallet balance limit is S$8,000 and annual loading limit is S$45,000, then these limits apply to non-Singapore Resident e-wallet customers. Singapore Resident e-wallet customers are bound by system-level limits of S$5,000 and S$30,000 respectively.
Unique Customer ID (UCI)
Unique Customer refers to the single individual customer who may hold one or more e-wallets with Nium Singapore. Each unique customer under a PSA-compliant e-wallet program is assigned a Unique Customer ID (UCI).
When a customer is onboarded via the Unified Add Customer API onto PSA-compliant e-wallet programs, Nium One attempts to match the newly onboarded customer against Nium One’s existing customer base by using the following customer data:
- Identification Type (
identificationValue
)- National ID (NRIC)
- Foreign Identification Number (FIN)
- SingPass ID
- Passport Number
- Full customer Name
- First name (given name)
- Middle name
- Last Name (family name)
- Date of Birth
- Nationality
If Nium One is able to find a match against an existing customer from another e-wallet program, the newly onboarded customer is assigned the same UCI as the existing customer. Otherwise, a new UCI is assigned to the newly onboarded customer.
Identifying unique customers
To identify unique customers across PSA clients, ensure the UCI
flag is enabled. Then, when a customer is onboarded via the Unified Add Customer API, the following checks are performed:
-
Is
billingAddressCountry = SG
?-
If No, onboard the customer without UCI.
-
If Yes, refer to #2.
-
-
Does their identificationValue exist in the system?
-
If Yes, retrieve the UCI from the existing customer record and assign that UCI to the current onboarded customer.
-
If No, refer to #3.
-
-
Does an existing customer record match all three of the following characteristics?
Characteristic The First name and the Last name both exist in any of the three name fields: firstName
,middleName
, andLastName
.Date of Birth (DOB) Nationality -
If yes, retrieve the UCI from the existing customer record and assign that UCI to the current onboarded customer.
-
If no, generate and assign new UCI to onboarded customer.
-
When billing country is updated via RFI
When a customer's KYC expires and their billing country is updated through an RFI, the following happens in different scenarios.
Scenario 1 – Cardholder moves out of Singapore:
- Cardholder's residency status updates to non-resident.
- Cardholder's UCI value is removed.
Scenario 2 – Cardholder moves into Singapore
- Cardholder's residency status updates to resident.
- Cardholder's UCI value is generated as per the current generation logic.
Limit calculation mechanism
Default balance limit
The default balance limit – legally called stock cap – is the maximum total wallet balance that a customer under the same UCI can hold at any point of time. This limit is currently set at SGD5,000 as per the regulation. This means that customer’s maximum total wallet balance at any point of time cannot go beyond SGD5,000.
Multicurrency wallet handling
While calculating the EOD balance limit, balances in multicurrency wallets are included. Balances from non-SGD wallets are included in the balance calculation by converting their value to the SGD equivalent value. However, no physical conversion of currencies between the wallets takes place at that point until the actual refund is carried out.
Annual loading limit
The annual loading limit is also called the flow cap. The flow cap of S$30,000 legally refers to the cardholder's spending limit. Due to this system limitation, you can only limit the cardholder's funding limit since a cardholder can load only S$30,000 and cannot spend more than S$30,000.
The annual loading limit has a starting balance of S$30,000 at the system level or a lower limit at the client level.
Transactions that reduce annual loading limit
The following transactions reduce the annual loading limit, making it closer to 0. When this limit reaches 0, your customer can no longer load any credits to the wallet.
Transaction type | Description |
---|---|
Cashback_Credit | Cashback transaction. |
Customer_Wallet_Credit_Fund_Transfer | The funds received in the wallet from another customer's wallet of the same client. |
Fee_Reversal | Fee reversed in an online reversal. If online reversal is triggered, the corresponding fees applied on transaction are released or reversed. |
Fee_Waiver | Fee waiver transaction. |
Incremental_Auth_Reversal | Reversal for incremental auth transactions. |
Original_Credit | Received incoming Original Credit Transfer (OCT) and credited to the wallet linked to the cardholder's card. |
Partial_Reversal | Online partial reversal of a transaction. |
Reversal | Online reversal of a transaction. |
Reversal_Advice | Reversal initiated when a timeout scenario happens. If Visa or MasterCard time-out the transaction, they generate a reversal advice to roll back the transaction. In the case of Wallet Clients, Nium applies the reversal advice and provides the credit back to the customer. In the case of RHA clients, Nium reverses funds on your prefund account and forwards the reversal advice to the RHA client for crediting funds back to the customer. |
Settlement_Credit | The difference in amount during transaction and settlement to be credited to the cardholder. The settlement amount is less than transaction amount. |
Settlement_Direct_Reversal | Offline reversal unlinked to any original debit transaction. |
Settlement_Reversal | Offline reversal of original debit transaction. |
Wallet_Credit_Mode_Card | The fund credit to a wallet using a card. |
Wallet_Credit_Mode_Offline | The fund credit to a wallet using an offline mode, such as a bank transfer, from the customer's own account. |
Wallet_Credit_Mode_Offline_Cross_Currency | The cross-currency fund credit to a wallet using an offline mode, such as a bank transfer, from the customer's own account. |
Wallet_Credit_Mode_Offline_ThirdParty | The fund credit to wallet, in the same currency, using an offline mode, such as a bank transfer, from a third party. |
Wallet_Credit_Mode_Prefund | The fund credit to a wallet using a client prefund. |
Wallet_Credit_Mode_Prefund_Cross_Currency | The cross-currency fund credit to a wallet using a client prefund. |
NOTE: There is no transaction type that would increase the remaining available annual inflow, also called the annual load limit.
Limit configurations
PSA limit configurations
Both the default balance limit and annual limit are not visible on the Nium One Platform and can be changed only by the technical team whenever there’s a change in the regulatory limit.
This configuration is internal to Nium and is applied by default for customers under client programs with assignUniqueCustomerId = true
.
Client-level limit configurations
You may configure different wallet balance limit and annual limit amounts for their wallet program which are not PSA related.
If the client program has assignUniqueCustomerId = true
, these limits apply to non-SG residents; whereas SG residents are subject to the PSA default balance limit and annual limit amounts, whichever is lower.
Updated 7 months ago