Skip to main content

Accounts

Manage multi-currency accounts for receiving funds, holding balances, and supporting local and international transfers.

Get All Accounts

This API allows you to retrieve all accounts associated with a user in the system.

{{baseUrl}}/hashdt/banking/api/v1/accounts

Description

Returns a list of all virtual accounts for the authenticated user, including account details, institution information, and supported payment features.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

🔍 Query Parameters

companyCode string required

Shared Company Code.

currency string

Filter results by currency using the 3-letter ISO 4217 currency code.

pageNumber integer

Page number for pagination. Defaults to 1.

pageSize integer

Number of items per page. Defaults to 100.

Request Example

curl --location --request GET \
--url '{{baseUrl}}/hashdt/banking/api/v1/accounts?companyCode={{Shared Company Code}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'

Response Example

{
"code": 200,
"status": "SUCCESS",
"message": "Success",
"data": {
"items": [
{
"accountId": "ACC_12345",
"externalReference": "48ca73bc-4cd3-47e5-bf03-13f27c7f06a0",
"currency": "USD",
"paymentMethod": "SWIFT",
"status": "ACTIVE",
"rails": [
"swift"
],
"accountNumberMasked": null,
"accountNumber": "1234567890",
"iban": null,
"swiftCode": "BOFAUS3NXXY",
"routingNumber": null,
"sortCode": null,
"bankName": "USB Bank",
"bankAddress": null,
"accountOwnerName": null
}
],
"pageSize": 100,
"pageNumber": 1,
"total": 1
}
}

Account Details

Retrieves the account details and banking coordinates required to receive money.

{{baseUrl}}/hashdt/banking/api/v1/accounts/:accountID

Description

This API is used to retrieve the account's current status, banking details, and receiving coordinates. Check bankDetailsAvailable before using the banking details. When it is false, the account is still being set up and the banking coordinates may be unavailable. Poll this endpoint until bankDetailsAvailable is true and the details are available.
The accountOwnerName represents the legal name under which the account is held and should be used as the beneficiary name when sending money to the account.

🔗 Path Parameters

accountID string required

Unique identifier for account.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

🔍 Query Parameters

companyCode string required

Shared Company Code.

Request Example

curl --location --request GET \
--url '{{baseUrl}}/hashdt/banking/api/v1/accounts/:accountID?companyCode={{Shared Company Code}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'

Response Example

{
"code": 200,
"status": "SUCCESS",
"message": "Success",
"data": {
"accountId": "ACC_12345",
"companyCode": "company-code",
"programCode": "program-code",
"currency": "USD",
"jurisdiction": "SG",
"paymentMethod": "SWIFT",
"issuanceReference": "demo-account-01",
"externalReference": "39cd4dfb-790e-4f02-b362-34da55ec1611",
"status": "ACTIVE",
"bankDetailsAvailable": true,
"accountNumber": "1234567890",
"accountNumberMasked": null,
"iban": null,
"swiftCode": "BOFAUS3NXXY",
"routingNumber": null,
"sortCode": null,
"bankName": "USB Bank",
"bankAddress": null,
"accountOwnerName": null,
"rails": [],
"balanceAvailable": true,
"balance": {
"status": "ACTIVE",
"availableBalance": 99999.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
"balanceUnavailableReason": null,
"createdAt": "2026-08-19T09:12:54Z",
"updatedAt": "2026-08-19T09:12:54Z"
}
}

All Account Balances

Retrieves all fiat balances held by the user, grouped by currency.

{{baseUrl}}/hashdt/banking/api/v1/accounts/balances

Description

This API is used to retrieve the user's available fiat balances and the account IDs associated with each currency. The response contains one entry per currency, allowing balances to be aggregated by currency across the customer's receiving accounts. The currency list is sourced from the bank, so it may include currencies for which no local account ID is available. In such cases, accountIds may be empty.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

🔍 Query Parameters

companyCode string required

Shared Company Code.

Request Example

curl --location --request GET \
--url '{{baseUrl}}/hashdt/banking/api/v1/accounts/balances?companyCode={{Shared Company Code}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'

Response Example

{
"code": 200,
"status": "SUCCESS",
"message": "Success",
"data": {
"userId": "user-id",
"balances": [
{
"currency": "AED",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "AUD",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "CNH",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "EUR",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "GBP",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "HKD",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "JPY",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "SGD",
"accountIds": [],
"status": "ACTIVE",
"availableBalance": 0.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
},
{
"currency": "USD",
"accountIds": [
"ACC_12345"
],
"status": "ACTIVE",
"availableBalance": 99999.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
}
],
"errors": []
}
}

Account Balance By ID

Retrieves the balance of a specific account using its account identifier.

{{baseUrl}}/hashdt/banking/api/v1/accounts/:accountID/balance

Description

This API is used to retrieve the balance associated with a specific account. The returned balance represents the currency that the account collects into.

Do not add balances across accounts. Multiple accounts for the same currency may report the same underlying balance. Use Account Balances API to retrieve the total balance by currency.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

🔍 Query Parameters

companyCode string required

Shared Company Code.

Request Example

curl --location --request GET \
--url '{{baseUrl}}/hashdt/banking/api/v1/accounts/:accountID/balance?companyCode={{Shared Company Code}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'

Response Example

{
"code": 200,
"status": "SUCCESS",
"message": "Success",
"data": {
"accountId": "ACC_12345",
"externalReference": "c670810c-8a81-40a2-936f-b5f7478e4ead",
"currency": "USD",
"status": "ACTIVE",
"availableBalance": 99999.00,
"prepaidBalance": 0.00,
"marginBalance": 0.00,
"frozenBalance": 0.00,
"asOf": null
}
}

Account Statements

Retrieves the user's account statement entries, ordered from newest to oldest.

{{baseUrl}}/hashdt/banking/api/v1/accounts/statement

Description

This API is used to retrieve movements across the user's balances, with optional filters such as currency and date range. Statement entries are recorded per currency rather than per account, as accounts act as receiving routes into the same currency balance. Use the currency filter to retrieve entries for a specific currency.
Multiple entries may share the same reference, such as the debit and credit sides of a currency conversion or a payout and its associated fee. Use reference to group related entries, and direction to identify the debit or credit side.
If from and to are omitted, the bank applies its default date range. Timestamps must be provided in ISO 8601 format with an offset.

📩 Request Headers

x-api-key string required

Shared X-API key

x-product-id string required

Shared Product ID

x-request-id string required

Idempotency key for request tracking

x-user-id string required

User identification key

Content-Type string required

Must be application/json

Authorization string required

Bearer access token

🔍 Query Parameters

companyCode string required

Shared Company Code.

currency string

Filter results by currency using the 3-letter ISO 4217 currency code.

type string

Filter results by transaction type.

status string

Filter results by transaction status.

pageNumber integer

Page number for pagination. Defaults to 1.

pageSize integer

Number of items per page. Defaults to 25.

from string conditional

Start date and time for filtering statement entries.
Use ISO 8601 date format (YYYY-MM-DD) or ISO 8601 date-time format with a timezone offset.
Must be provided together with to.

to string conditional

End date and time for filtering statement entries.
Use ISO 8601 date format (YYYY-MM-DD) or ISO 8601 date-time format with a timezone offset.
Must be provided together with from.

Request Example

curl --location --request GET \
--url '{{baseUrl}}/hashdt/banking/api/v1/accounts/statement?companyCode={{Shared Company Code}}' \
--header 'x-api-key: {{Shared X-API key}}' \
--header 'x-product-id: {{Shared ProductID}}' \
--header 'x-request-id: {{IdempotencyKey}}' \
--header 'x-user-id: {{UserID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{AccessToken}}'

Response Example

{
"code": 200,
"status": "SUCCESS",
"message": "Success",
"data": {
"companyCode": "company-code",
"programCode": "program-code",
"currency": null,
"entries": [
{
"externalReference": "1ffdae7b-4194-4af3-8632-727ed11bf860",
"currency": "EUR",
"amount": 8.42,
"direction": "CREDIT",
"type": "CONVERSION",
"status": "COMPLETED",
"reference": "5a90a145-bfe6-4f2f-849b-2139b9e82074",
"createdAt": "2026-08-25T15:49:12+08:00",
"completedAt": "2026-08-25T15:49:12+08:00"
},
{
"externalReference": "ab4b6653-7dba-487a-9055-560a9824ad6a",
"currency": "USD",
"amount": 10.00,
"direction": "DEBIT",
"type": "CONVERSION",
"status": "COMPLETED",
"reference": "5a90a145-bfe6-4f2f-849b-2139b9e82074",
"createdAt": "2026-08-25T15:49:11+08:00",
"completedAt": "2026-08-25T15:49:11+08:00"
},
{
"externalReference": "d0bffd49-f7c9-4c40-b96e-9306a07b3dc0",
"currency": "EUR",
"amount": 0.84,
"direction": "CREDIT",
"type": "CONVERSION",
"status": "COMPLETED",
"reference": "5e1ef964-8242-4d2c-9381-f1fa13e36ac2",
"createdAt": "2026-08-25T14:54:08+08:00",
"completedAt": "2026-08-25T14:54:08+08:00"
},
{
"externalReference": "6fe80082-32d9-4528-9120-d5bcc400115f",
"currency": "USD",
"amount": 1.00,
"direction": "DEBIT",
"type": "CONVERSION",
"status": "COMPLETED",
"reference": "5e1ef964-8242-4d2c-9381-f1fa13e36ac2",
"createdAt": "2026-08-25T14:54:07+08:00",
"completedAt": "2026-08-25T14:54:07+08:00"
},
{
"externalReference": "eda5f014-97e6-44bf-9052-b1ec7513294c",
"currency": "USD",
"amount": 36.00,
"direction": "DEBIT",
"type": "TRANSFER",
"status": "COMPLETED",
"reference": "885a06e5-b69d-4d89-a772-3f1b09391f8e",
"createdAt": "2026-08-21T18:05:23+08:00",
"completedAt": "2026-08-21T18:05:23+08:00"
},
{
"externalReference": "167fa22f-cf3e-4da2-88c8-3d9a0960febc",
"currency": "USD",
"amount": 35.00,
"direction": "DEBIT",
"type": "FEE",
"status": "COMPLETED",
"reference": "a1f1bd88-6b85-4354-9efe-c7e9f45c8c04",
"createdAt": "2026-08-21T18:05:23+08:00",
"completedAt": "2026-08-21T18:05:22+08:00"
},
{
"externalReference": "f3c4169d-75d9-4323-96aa-96fd3a752602",
"currency": "USD",
"amount": 1000.00,
"direction": "DEBIT",
"type": "PAYOUT",
"status": "COMPLETED",
"reference": "a1f1bd88-6b85-4354-9efe-c7e9f45c8c04",
"createdAt": "2026-08-21T18:05:22+08:00",
"completedAt": "2026-08-21T18:05:22+08:00"
}
]
}
}