curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v1/virtual/accounts \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"country": "BH",
"currency": "GBP",
"payment_method": "SWIFT",
"nickname": "GBP collection account"
}
'{
"data": {
"account_id": "b1b89684-c2c4-4d54-b8a8-3572727fd120",
"application_id": "550e8400-e29b-41d4-a716-446655440001",
"country": "BH",
"currency": "EUR",
"direct_id": "0",
"public_version": 1,
"results": [
{
"payment_method": "SWIFT",
"status": "SUBMITTED",
"virtual_accounts": [],
"error": null
}
],
"status": "SUBMITTED"
}
}Create Virtual Account
Requests Virtual Account bank details for one country and one currency. Choose LOCAL or SWIFT, or omit payment_method to evaluate both methods separately.
HTTP 200 means the application was accepted for asynchronous processing. Store application_id and public_version, process every result, and use only bank details whose status is ACTIVE.
A synchronous error means no application was created and no application webhook will follow.
See Integrate Virtual Accounts with the API for supported combinations, status handling, errors, and availability rules.
curl --request POST \
--url https://api-sandbox.uqpaytech.com/api/v1/virtual/accounts \
--header 'Content-Type: application/json' \
--header 'x-auth-token: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--data '
{
"country": "BH",
"currency": "GBP",
"payment_method": "SWIFT",
"nickname": "GBP collection account"
}
'{
"data": {
"account_id": "b1b89684-c2c4-4d54-b8a8-3572727fd120",
"application_id": "550e8400-e29b-41d4-a716-446655440001",
"country": "BH",
"currency": "EUR",
"direct_id": "0",
"public_version": 1,
"results": [
{
"payment_method": "SWIFT",
"status": "SUBMITTED",
"virtual_accounts": [],
"error": null
}
],
"status": "SUBMITTED"
}
}Authorizations
The API token for login provided by UQPAY.
Headers
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.
A unique key for this application. Reuse the same key only when retrying the same request for the same account. After input normalization, reusing the key with different request data returns an error.
64Body
Two-letter country code where the Virtual Account should be issued. Use a combination listed in the integration guide. Surrounding whitespace is removed and lowercase input is accepted.
SG, DK, GB, DE, AU, LU, BH Three-letter currency code the Virtual Account must receive. Send one value only. Surrounding whitespace is removed and lowercase input is accepted.
SGD, USD, AUD, CNH, EUR, GBP, HKD, JPY, NOK, AED, NZD, CHF, CAD, KWD, MXN Receiving method to evaluate. Send LOCAL or SWIFT to evaluate one method. Omit it, or send null, an empty string, or whitespace, to evaluate both methods separately. Do not send ALL or AUTO.
LOCAL, SWIFT, Optional label for your own request. Omitted, null, empty, and whitespace-only values are treated the same. This value is not returned by the application APIs or webhooks.
255"Operating account"
Response
OK - Virtual Account application accepted for asynchronous processing.
Show child attributes
Show child attributes

