Create a virtual account
Changed onCreate a virtual account for the business in the bank country given by bank_country. HitPay picks the bank that serves that location.
The locations a business can request depend on the business's own country:
| Business country | bank_country | Currencies received |
|---|---|---|
| sg | sg | SGD, USD, EUR, GBP, CAD, CHF, CNH, CNY, HKD, NOK, NZD, SEK |
| sg | ph | PHP |
| sg | gb | GBP, EUR |
| sg | dk | EUR |
| sg | lu | EUR |
| ph | ph | PHP |
| au | au | AUD |
The payment provider serving the location must have completed onboarding for the business, or the request returns 400. For sg and ph the business enables it under Settings > Payment Methods. HitPay sets up the provider for gb, dk, lu and au.
A business can hold one virtual account per location. If one already exists, the request returns 409 Conflict. The business must have payments enabled.
Migration note: bank_country is required. A request without it used to create the default virtual account for the business's country. It now returns 422. To keep the old behaviour, send the business's own country, for example {"bank_country": "sg"} for a Singapore business.
Request
- Base URLhttps://api.hit-pay.com
- URLhttps://api.hit-pay.com/v1/virtual-accounts
- Authnone declared. Required headers: X-BUSINESS-API-KEY
Headers
Request body
Example request
{
"bank_country": "sg",
"payment_provider_method": "dbs_va",
"currency": "sgd"
}Response
Virtual account created successfully
Example response
{
"id": "9b3f1a2c-1d4e-4f6a-8b2c-7e9d0a1b2c3d",
"name": "Acme Pte Ltd",
"reference": "1234567",
"status": "success",
"country": "sg",
"supported_currencies": [
"SGD",
"USD"
],
"holder_name": "Acme Pte Ltd",
"account_number": "8854911234567",
"bank_name": "DBS Bank",
"bank_swift_code": "DBSSSGSG",
"bank_country": "sg",
"bank_attributes": {
"type": "local",
"account_number": "8854911234567",
"bank_name": "DBS Bank",
"swift_code": "DBSSSGSG",
"transfer_types": [
"FAST",
"SWIFT"
]
},
"transfer_types": [
"FAST",
"SWIFT"
],
"created_at": "2026-06-08T15:30:10+08:00",
"updated_at": "2026-06-08T15:30:10+08:00"
}Changes
- breaking
added required request body
- info
added the non-success response with the status
- info
added the non-success response with the status
- info
added the optional property
to the response with the status - info
added the optional property
to the response with the status
- breaking
- warning
removed the optional property
from the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status
- warning