Skip to main content
This page covers all resource namespaces available on UqpayClient. Each namespace maps to a UQPAY product.

Banking

Balances

import com.uqpay.sdk.v2.banking.model.*;

ListBalancesResponse balances = client.banking().getBalances().list(
    new ListBalancesRequest().setPageSize(20).setPageNumber(1)
);
Balance balance = client.banking().getBalances().get("SGD");

// Balance transactions
ListBalanceTransactionsRequest txReq = new ListBalanceTransactionsRequest();
txReq.setPageSize(20);
txReq.setPageNumber(1);
ListBalanceTransactionsResponse txns = client.banking().getBalances().listTransactions(txReq);

Transfers

CreateTransferRequest transferReq = new CreateTransferRequest();
transferReq.setSourceAccountId("acc-123");
transferReq.setDestinationAccountId("acc-456");
transferReq.setCurrency("SGD");
transferReq.setAmount("100.00");
CreateTransferResponse transfer = client.banking().getTransfers().create(transferReq);

ListTransfersResponse transfers = client.banking().getTransfers().list(
    new ListTransfersRequest().setPageSize(20).setPageNumber(1)
);
Transfer retrieved = client.banking().getTransfers().get("transfer-id");

Deposits

ListDepositsResponse deposits = client.banking().getDeposits().list(
    new ListDepositsRequest().setPageSize(20).setPageNumber(1)
);
Deposit deposit = client.banking().getDeposits().get("deposit-id");

Beneficiaries

CreateBeneficiaryResponse beneficiary = client.banking().getBeneficiaries().create(createBeneficiaryReq);
ListBeneficiariesResponse beneficiaries = client.banking().getBeneficiaries().list(listBeneficiaryReq);
Beneficiary ben = client.banking().getBeneficiaries().get("ben-id");

Payouts

CreatePayoutRequest payoutReq = new CreatePayoutRequest();
payoutReq.setBeneficiaryId("ben-123");
payoutReq.setCurrency("SGD");
payoutReq.setAmount("50.00");
payoutReq.setPurposeCode("PERSONAL");
CreatePayoutResponse payout = client.banking().getPayouts().create(payoutReq);

Virtual accounts

CreateVirtualAccountResponse va = client.banking().getVirtualAccounts().create(createVaReq);
ListVirtualAccountsResponse vas = client.banking().getVirtualAccounts().list(listVaReq);

Conversions

CreateConversionQuoteResponse quote = client.banking().getConversions().createQuote(quoteReq);
CreateConversionResponse conversion = client.banking().getConversions().create(createConversionReq);

Exchange rates

ListExchangeRatesResponse rates = client.banking().getExchangeRates().list(listRatesReq);

Issuing

Cardholders

The SDK supports three KYC tiers — simplified, standard, and enhanced. Simplified KYC — basic fields only:
import com.uqpay.sdk.v2.issuing.model.*;

CreateCardholderRequest request = new CreateCardholderRequest();
request.setEmail("user@example.com");
request.setFirstName("Jane");
request.setLastName("Smith");
request.setCountryCode("SG");
request.setPhoneNumber("+6512345678");
request.setDateOfBirth("1990-01-01");

CreateCardholderResponse cardholder = client.issuing().getCardholders().create(request);
Standard KYC — includes gender, nationality, identity document, and address:
CreateCardholderRequest standardReq = new CreateCardholderRequest();
standardReq.setEmail("user@example.com");
standardReq.setFirstName("Bob");
standardReq.setLastName("Lee");
standardReq.setCountryCode("SG");
standardReq.setPhoneNumber("+6598765432");
standardReq.setDateOfBirth("1988-11-03");
standardReq.setGender("MALE");
standardReq.setNationality("SG");

Identity identity = new Identity();
identity.setType("PASSPORT");
identity.setNumber("E1234567");
standardReq.setIdentity(identity);

ResidentialAddress addr = new ResidentialAddress();
addr.setCountry("SG");
addr.setState("Singapore");
addr.setCity("Singapore");
addr.setLine1("1 Raffles Place");
addr.setLineEn("1 Raffles Place");
addr.setPostalCode("048616");
standardReq.setResidentialAddress(addr);

CreateCardholderResponse stdCardholder = client.issuing().getCardholders().create(standardReq);
Enhanced KYC — SUMSUB redirect, returns an IDV verification URL:
KycVerification kyc = new KycVerification();
kyc.setMethod("SUMSUB_REDIRECT");
request.setKycVerification(kyc);

CreateCardholderResponse enhanced = client.issuing().getCardholders().create(request);
System.out.println("IDV URL: " + enhanced.getIdvVerificationUrl());
Get / list / update:
Cardholder ch = client.issuing().getCardholders().get("ch-id");
ListCardholdersResponse list = client.issuing().getCardholders().list(
    new ListCardholdersRequest().setPageSize(20).setPageNumber(1).setCardholderStatus("SUCCESS")
);

UpdateCardholderRequest updateReq = new UpdateCardholderRequest();
updateReq.setResidentialAddress(addr);
client.issuing().getCardholders().update("ch-id", updateReq);

Cards

// Create a card
CreateCardRequest cardReq = new CreateCardRequest();
cardReq.setCardCurrency("SGD");
cardReq.setCardholderId(cardholder.getCardholderId());
cardReq.setCardProductId("prod-123");

CardCreationResponse card = client.issuing().getCards().create(cardReq);

// Create a ONE_TIME card with auto-cancel trigger
CreateCardRequest oneTimeReq = new CreateCardRequest();
oneTimeReq.setCardCurrency("SGD");
oneTimeReq.setCardholderId(cardholder.getCardholderId());
oneTimeReq.setCardProductId("prod-123");
oneTimeReq.setUsageType("ONE_TIME");
oneTimeReq.setAutoCancelTrigger("ON_AUTH");

// Create a card with supplemental KYC fields
CardholderRequiredFields fields = new CardholderRequiredFields();
fields.setGender("FEMALE");
fields.setNationality("SG");
fields.setIdentity(identity);
fields.setResidentialAddress(addr);
cardReq.setCardholderRequiredFields(fields);

// Get, list
RetrieveCardResponse retrieved = client.issuing().getCards().get("card-id");
ListCardsResponse cards = client.issuing().getCards().list(
    new ListCardsRequest().setPageSize(20).setPageNumber(1)
);

// Freeze / unfreeze
UpdateCardStatusRequest freeze = new UpdateCardStatusRequest();
freeze.setCardStatus("FROZEN");
client.issuing().getCards().updateStatus("card-id", freeze);

// Recharge and withdraw
CardOrderRequest rechargeReq = new CardOrderRequest();
rechargeReq.setAmount(100.00);
CardOrder recharge = client.issuing().getCards().recharge("card-id", rechargeReq);

CardOrderRequest withdrawReq = new CardOrderRequest();
withdrawReq.setAmount(50.00);
CardOrder withdraw = client.issuing().getCards().withdraw("card-id", withdrawReq);

Transactions, products, balances, and transfers

// Transactions
ListTransactionsResponse txns = client.issuing().getTransactions().list(
    new ListTransactionsRequest().setPageSize(20).setPageNumber(1).setCardId("card-id")
);
Transaction txn = client.issuing().getTransactions().get("txn-id");

// Products
ListProductsResponse products = client.issuing().getProducts().list(
    new ListProductsRequest().setPageSize(20).setPageNumber(1)
);

// Issuing balances
ListIssuingBalancesResponse issuingBalances = client.issuing().getBalances().list(listReq);
IssuingBalance issuingBalance = client.issuing().getBalances().get("SGD");

// Issuing transfers
CreateIssuingTransferResponse issuingTransfer = client.issuing().getTransfers().create(createIssuingTransferReq);

Connect

import com.uqpay.sdk.v2.connect.model.*;

ListAccountsResponse accounts = client.connect().getAccounts().list(
    new ListAccountsRequest().setPageSize(20).setPageNumber(1)
);
Account account = client.connect().getAccounts().get("acc-id");
Account accountByBizCode = client.connect().getAccounts().get("acc-id", "BUSINESS_CODE");

Payment

Payment intents

import com.uqpay.sdk.v2.payment.model.*;

CreatePaymentIntentRequest intentReq = new CreatePaymentIntentRequest();
intentReq.setAmount("100.00");
intentReq.setCurrency("SGD");
CreatePaymentIntentResponse intent = client.payment().getPaymentIntents().create(intentReq);

client.payment().getPaymentIntents().confirm(intent.getPaymentIntentId(), confirmReq);
client.payment().getPaymentIntents().capture(intent.getPaymentIntentId(), captureReq);
client.payment().getPaymentIntents().cancel(intent.getPaymentIntentId());

ListPaymentIntentsResponse intents = client.payment().getPaymentIntents().list(listIntentsReq);

Refunds

CreateRefundRequest refundReq = new CreateRefundRequest();
refundReq.setPaymentIntentId(intent.getPaymentIntentId());
refundReq.setAmount("50.00");
CreateRefundResponse refund = client.payment().getRefunds().create(refundReq);

Bank accounts

CreateBankAccountResponse bankAccount = client.payment().getBankAccounts().create(bankAccountReq);

Payouts

CreatePayoutResponse payout = client.payment().getPayouts().create(payoutReq);

Balances and attempts

ListPaymentBalancesResponse paymentBalances = client.payment().getBalances().list(listBalReq);
ListPaymentAttemptsResponse attempts = client.payment().getPaymentAttempts().list(listAttemptsReq);

Supporting (file upload / download)

import com.uqpay.sdk.v2.supporting.model.*;
import java.io.File;

// Upload a file
File doc = new File("kyc-document.pdf");
UploadFileResponse uploaded = client.supporting().getFiles().upload(doc, "KYC document");
System.out.println("File ID: " + uploaded.getFileId());

// Get download links
DownloadLinksRequest dlReq = new DownloadLinksRequest(List.of(uploaded.getFileId()));
DownloadLinksResponse links = client.supporting().getFiles().getDownloadLinks(dlReq);
links.getFiles().forEach(f -> System.out.println("URL: " + f.getUrl()));

Simulator (sandbox only)

The simulator is only available in the sandbox environment. Calling simulator methods in production throws a UqpayException.
import com.uqpay.sdk.v2.simulator.model.*;

// Simulate a card authorization
SimulateAuthorizationRequest authReq = new SimulateAuthorizationRequest();
authReq.setCardId("card-123");
authReq.setTransactionAmount(25.00);
authReq.setTransactionCurrency("SGD");
authReq.setMerchantName("Coffee Shop");
SimulateAuthorizationResponse auth = client.simulator().getIssuing().authorize(authReq);

// Simulate a reversal
SimulateReversalRequest revReq = new SimulateReversalRequest();
revReq.setTransactionId(auth.getTransactionId());
client.simulator().getIssuing().reverse(revReq);

// Simulate a deposit
SimulateDepositRequest depositReq = new SimulateDepositRequest();
depositReq.setCurrency("SGD");
depositReq.setAmount(500.00);
SimulateDepositResponse deposit = client.simulator().getDeposits().simulate(depositReq);

API coverage

Banking API

ResourceOperations
BalancesGet, List, ListTransactions
TransfersCreate, List, Get
DepositsList, Get
BeneficiariesCreate, List, Get, Update, Delete, ListPaymentMethods, Check
PayoutsCreate, List, Get
Virtual AccountsCreate, List
ConversionsCreateQuote, Create, List, Get, ListConversionDates
Exchange RatesList

Issuing API

ResourceOperations
CardholdersCreate (Simplified/Standard/Enhanced KYC), Get, List, Update
CardsCreate, Get, GetSecure, List, Recharge, Withdraw, UpdateStatus
TransactionsGet, List
ProductsList
BalancesGet, List, ListTransactions
TransfersCreate, List, Get
ReportsCreate, Get
Auth DecisionPGP-based real-time authorization

Connect API

ResourceOperations
AccountsGet, List

Payment API

ResourceOperations
Payment IntentsCreate, Confirm, Capture, Cancel, List, Get
RefundsCreate, List, Get
Bank AccountsCreate, List, Get
PayoutsCreate, List, Get
BalancesList
Payment AttemptsList, Get
SettlementsList

Supporting API

ResourceOperations
FilesUpload, GetDownloadLinks

Simulator (sandbox only)

ResourceOperations
IssuingAuthorize, Reverse
DepositsSimulate