Virtual Bank Account

The Virtual Bank Account API enables businesses to request a Virtual bank account(VBA) to send and receive payments. Businesses can wire funds into a VBA, and send payments to their vendors and suppliers. Currently, only USD virtual bank accounts are supported. Support for other currencies will be added in the future.

Prerequisites

Before creating a virtual bank account, ensure the following conditions are met:

  • Business Ownership Information must be attested
  • Required documents must be submitted and approved:
    • Government-issued Photo ID
    • Business Registration Certificate
    • Proof of Address Veem will perform additional validations before enabling a Virtual Bank Accounts

Authorization

OAuth2 token is required in the Authorization header.

📘

Headers

There are 2 headers necessary for the use of this endpoint:

  • X-request-id: This is a number unique to the current API request, and follows the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status. An example X-request-id is as follows:

48855846-628d-4177-b071-80332a116f0a

  • Authorization: This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status. An example of a valid token is as follows:

Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your bearerToken

Sandbox Endpoints

Veem's Sandbox environment provides a number of endpoints that can be used to configure testing scenarios.

Use the base URL to access the endpoints in sandbox environment.

POST https://sandbox-api.veem.com/veem/

Open Virtual Bank Account (Business)

Opens a new virtual bank account for a business in a specified currency. Currently, only USD virtual bank accounts are supported.

POST /v1.2/virtual-bank-account
{
    "currency" : "USD",
    "virtualBankAccountName" : "Business name",
    "virtualBankAccountBusinessInfo": {
            "geographySendingCountries": "US",
            "geographyReceivingCountries": "US",
            "purposeOfAccount": "Business's VBA USA for providers",
            "monthlyExpectedActivity": 9999999.99,
            "annualRevenue": 9999999.99,
            "businessRegistrationNumber": "123",
            "businessIncorporationDate": "2010-01-01",
            "sourceOfFunds": "It Services"
        }
}
{
    "virtualBankAccountName": "Business's VBA",
    "virtualBankAccountBusinessInfo": {
        "geographySendingCountries": "US",
        "geographyReceivingCountries": "US",
        "purposeOfAccount": "Business's VBA USA for providers",
        "monthlyExpectedActivity": 9999999.99,
        "annualRevenue": 9999999.99,
        "businessRegistrationNumber": "123",
        "businessIncorporationDate": 1262304000000,
        "businessRegistrationCountry": "US",
        "businessRegistrationAddressLine1": "Evergreen Terrace",
        "businessRegistrationAddressLine2": "Av. 123",
        "businessRegistrationStateProv": "CA",
        "businessRegistrationPostalCode": "94116",
        "businessRegistrationCity": "San francisco",
        "sourceOfFunds": "It Services",
        "businessWebsite": "htttps://mybusiness.com"
    },
    "virtualBankAccount": {
        "accountId": 943955,
        "fundingMethodId": 55077,
        "id": "b2e63be2-1415-405c-8413-f5d992d57b47",
        "status": "enabled",
        "currency": "USD",
        "timeCreated": 1747154822639
    }
}

Request Parameters

Parameter

Mandatory

Format/Values

Size/Type

currency

Yes

Must be "USD" (only currency currently supported). Use ISO 4217 currency codes

3 characters

virtualBankAccountName

Yes

Name of the virtual bank account. Letters only (no numbers or symbols).

255 characters

virtualBankAccountBusinessInfo

Yes

Business information of the entity opening the virtual bank account

.geographySendingCountries

Yes

Country codes the account holder intends to send to. ISO 3166-1 alpha-2 standard, comma-separated, e.g. "US,CA"

255 characters

.geographyReceivingCountries

Yes

Country codes the account holder intends to receive from. ISO 3166-1 alpha-2 standard, comma-separated, e.g. "US,CA"

255 characters

.purposeOfAccount

Yes

One of the values from the list of supported purpose of account, see Purpose of Account Values (Business), e.g. 'vendor_supplier_payments'

255 characters

.monthlyExpectedActivity

No

Account's expected activity (amount)

BigDecimal

.annualRevenue

No

Annual revenue of the business

BigDecimal

.businessRegistrationNumber

Yes

Registration number of the business

255 characters

.businessIncorporationDate

Yes

Incorporation date of the business

YYYY-MM-DD

.sourceOfFunds

Yes

One of the values from the list of supported source of funds, see Source of Funds Values (Business) , e.g. 'investment_capital'

255 characters

.businessWebsite

No

Valid URL of the business website

255 characters

Purpose of Account Values (Business)

Pass one of the values listed below into the virtualBankAccountBusinessInfo.purposeOfAccount

ValueDescription
vendor_supplier_paymentsVendor / Supplier Payments
payroll_salary_disbursementsPayroll / Salary Disbursements
employee_reimbursementsEmployee Reimbursements
tax_regulatory_paymentsTax or Regulatory Payments
collections_from_customersCollections from Customers (e.g., invoice payments)
refunds_chargebacksRefunds / Chargebacks
escrow_marketplace_settlementsEscrow / Marketplace Settlements
internal_fund_transfersInternal Fund Transfers
holding_pooling_customer_fundsHolding / Pooling of Customer Funds
liquidity_managementLiquidity Management
import_export_settlementsImport / Export Settlements
international_customer_collectionsInternational Customer Collections
overseas_supplier_paymentsOverseas Supplier Payments
otherOther

Source of Funds Values (Business)

Pass one of the values listed below into the virtualBankAccountBusinessInfo.sourceOfFunds

ValueDescription
revenue_from_business_operationsRevenue from Business Operations – Income from selling products or services.
merchant_sales_transactionsMerchant Sales & Transactions – Proceeds from e-commerce, retail, or service-based transactions.
investment_capitalInvestment Capital – Funds received from venture capital, private equity, or angel investors.
loans_credit_linesLoans & Credit Lines – Capital obtained from financial institutions or lenders.
grants_government_subsidiesGrants & Government Subsidies – Funding from government programs or industry grants.
sale_of_business_assetsSale of Business Assets – Proceeds from selling property, equipment, or intellectual property.
shareholder_contributionsShareholder Contributions – Capital infused by business owners or existing shareholders.
franchise_licensing_feesFranchise or Licensing Fees – Revenue from franchise agreements or intellectual property licensing.
subscription_membership_feesSubscription & Membership Fees – Revenue from recurring billing models.

Open Virtual Bank Account (Individual)

Opens a new virtual bank account for individuals in a specified currency. Currently, only USD virtual bank accounts are supported.

POST /v1.2/virtual-bank-account
{        
    "currency" : "USD",
    "virtualBankAccountName" : "Account name",
    "virtualBankAccountIndividualInfo": {
            "geographySendingCountries": "US",
            "geographyReceivingCountries": "US",
            "purposeOfAccount": "Individual's VBA USA for providers",
            "monthlyExpectedActivity": 9999999.99,
            "annualIncome": 9999999.99,
            "occupation": "Accountant",
            "sourceOfFunds": "It Services",
            "websiteSocialMediaLink": "https://mybusiness.com"
        }
}
{
    "virtualBankAccountName": "Individual's VBA",
    "virtualBankAccountIndividualInfo": {
            "geographySendingCountries": "US",
            "geographyReceivingCountries": "US",
            "purposeOfAccount": "Individual's VBA USA for providers",
            "monthlyExpectedActivity": 9999999.99,
            "annualIncome": 9999999.99,
            "occupation": "Accountant",
            "sourceOfFunds": "It Services",
            "websiteSocialMediaLink": "htttps://mybusiness.com"
    },
    "virtualBankAccount": {
        "accountId": 943955,
        "fundingMethodId": 55077,
        "id": "b2e63be2-1415-405c-8413-f5d992d57b47",
        "status": "enabled",
        "currency": "USD",
        "timeCreated": 1747154822639
    }
}

Request Parameters

Parameter

Mandatory?

Format/Values

Size/Type

currency

Yes

Must be "USD" (only currency currently supported). Use ISO 4217 currency codes

3 characters

virtualBankAccountName

Yes

Name of the virtual bank account. Letters only (no numbers or symbols).

255 characters

virtualBankAccountIndividualInfo

Yes

Information of the individual opening the virtual bank account

.geographySendingCountries

Yes

Country codes the account holder intends to send to. ISO 3166-1 alpha-2 standard, comma-separated, e.g. "US,CA"

255 characters

.geographyReceivingCountries

Yes

Country codes the account holder intends to receive from. ISO 3166-1 alpha-2 standard, comma-separated, e.g. "US,CA"

255 characters

.purposeOfAccount

Yes

One of the values from the list of supported purpose of account, see Purpose of Account Values (Individual) , e.g. 'internal_fund_transfers'

255 characters

.monthlyExpectedActivity

Yes

Account's expected activity (amount)

BigDecimal

.annualIncome

Yes

Annual income of the account holder

BigDecimal

.occupation

Yes

Occupation of the account holder

255 characters

.sourceOfFunds

Yes

One of the values from the list of supported source of funds, see Source of Funds Values (Individual) , e.g. 'peer_to_peer_transfers'

255 characters

.websiteSocialMediaLink

No

Link to account holder's social media links(if available)

255 characters

Purpose of Account Values (Individual)

Pass one of the values listed below into the virtualBankAccountBusinessInfo.purposeOfAccount

ValueDescription
vendor_supplier_paymentsVendor / Supplier Payments
payroll_salary_disbursementsPayroll / Salary Disbursements
employee_reimbursementsEmployee Reimbursements
tax_regulatory_paymentsTax or Regulatory Payments
collections_from_customersCollections from Customers (e.g., invoice payments)
refunds_chargebacksRefunds / Chargebacks
escrow_marketplace_settlementsEscrow / Marketplace Settlements
internal_fund_transfersInternal Fund Transfers
holding_pooling_customer_fundsHolding / Pooling of Customer Funds
liquidity_managementLiquidity Management
import_export_settlementsImport / Export Settlements
international_customer_collectionsInternational Customer Collections
overseas_supplier_paymentsOverseas Supplier Payments
otherOther

Source of Funds Values (Individual)

Pass one of the values listed below into the virtualBankAccountBusinessInfo.sourceOfFunds

ValueLabel
salary_wagesSalary & Wages – Regular employment income.
freelance_consulting_incomeFreelance & Consulting Income – Payments from contract work.
peer_to_peer_transfersPeer-to-Peer Transfers – Money received from family, friends, or others.
investments_crypto_earningsInvestments & Crypto Earnings – Proceeds from stocks, crypto trading, or dividends.
real_estate_sales_rentalsReal Estate Sales or Rentals – Income from property sales or rental payments.
inheritanceInheritance – Funds received from an estate.
gifts_donationsGifts & Donations – Personal gifts or one-time transfers.
royalties_licensingRoyalties & Licensing – Revenue from intellectual property rights (e.g., music, patents, books).
pension_retirement_fundsPension or Retirement Funds – Withdrawals from pension accounts.

Activate a New Currency for Your Virtual Bank Account

Once you’ve opened a USD Virtual Bank Account, you can activate an additional currency using the same API endpoint.

POST /v1.2/virtual-bank-account

Description

To activate a Virtual Bank Account in another currency, send a request to the same endpoint used to open your USD Virtual Bank Account. Include the new currency code in the request body (currency field). You do not need to resend virtualBankAccountBusinessInfo or virtualBankAccountIndividualInfo, as these were already collected from your initial application.

Requirements

  • You must already have an active USD Virtual Bank Account.
  • The only additional supported currency is Canadian Dollars (CAD).
{
    "currency" : "CAD"
}
{
    "virtualBankAccountName": "Account Name",
    "virtualBankAccountBusinessInfo": {
        "id": 145,
        "currency": "USD, CAD",
        "virtualBankAccountIds": [
            55182,
            55183
        ],
        "geographySendingCountries": "US",
        "geographyReceivingCountries": "US",
        "purposeOfAccount": "business transactions",
        "monthlyExpectedActivity": 1000.00,
        "annualRevenue": 1000000.00,
        "businessRegistrationNumber": "46-5104750",
        "businessIncorporationDate": "2009-12-31",
        "businessRegistrationCountry": "US",
        "businessRegistrationAddressLine1": "Adress line 1",
        "businessRegistrationAddressLine2": "Addres line 1",
        "businessRegistrationStateProv": "CA",
        "businessRegistrationPostalCode": "94116",
        "businessRegistrationCity": "San Francisco",
        "sourceOfFunds": "business savings"
    },
    "virtualBankAccount": {
        "accountId": 945080,
        "fundingMethodId": 55183,
        "id": "2cedde96-39af-4309-825a-f17db16d42c7",
        "accountName": "Account Name",
        "status": "SUCCESS",
        "currency": "CAD",
        "timeCreated": 1761682261781
    }
}

Common Errors When Opening/Activating an Account

Business Ownership Information Incomplete

{
    "code": 10000010,
    "message": "It was an error on the open vba process, Virtual bank account cannot be opened because: BOI attestation is missing.",
    "logTag": "0df34606-05d1-437a-a3a9-f3352130806f",
    "timestamp": "2025-05-14T01:50:01.220",
    "fileName": "AccountServiceImpl.java",
    "lineNumber": 230
}

Internal Veem validations

{
    "code": 10000004,
    "message": "This account is not Verified, cannot open a virtual bank account",
    "logTag": "eeed5569-4452-47d2-b410-2a9585c8dc3f",
    "timestamp": "2025-05-14T18:14:44.662",
    "fileName": "AccountServiceImpl.java",
    "lineNumber": 216
}
{
    "code": 10000010,
    "message": "Adverse media check is not completed.",
    "logTag": "0df34606-05d1-437a-a3a9-f3352130806f",
    "timestamp": "2025-05-14T01:50:01.220",
    "fileName": "AccountServiceImpl.java",
    "lineNumber": 230
}
{
    "code": 10000010,
    "message": "Cannot open virtual bank account due to the next reasons: Adverse media check is not completed, Photo ID is not uploaded, Liveliness check is not completed, doesnt have a DB strong match, Business registration document type is not completed, Proof of address document is not completed, Drivers license document is not present.",
    "logTag": "0df34606-05d1-437a-a3a9-f3352130806f",
    "timestamp": "2025-05-14T01:50:01.220",
    "fileName": "AccountServiceImpl.java",
    "lineNumber": 230
}
{
    "code": 10000019,
    "message": "Currency GBP is not supported",
    "logTag": "f3348a36-4b2b-4057-a2d6-204e47508371",
    "timestamp": "2025-10-29T17:51:36.764",
    "fileName": "AccountServiceImpl.java",
    "lineNumber": 205
}

{
    "code": 10000015,
    "message": "Currency already exists for this account",
    "logTag": "251530b3-e903-47c7-8911-adee059db2f9",
    "timestamp": "2025-10-29T18:11:52.670",
    "fileName": "AccountServiceImpl.java",
    "lineNumber": 147
}

Update Virtual Bank Account Information

After a Virtual bank account has been created a PATCH request can be sent to make updates to VBA information.

PATCH /v1.2/virtual-bank-account

t

{
  "virtualBankAccountBusinessInfo": {
            "geographySendingCountries": "US",
            "geographyReceivingCountries": "US",
            "purposeOfAccount": "Business's VBA USA for providers",
            "monthlyExpectedActivity": 9999999.99,
            "annualRevenue": 9999999.99,
            "businessRegistrationNumber": "123",
            "businessIncorporationDate": "2010-01-01",
            "businessRegistrationCountry": "US",
            "businessRegistrationAddressLine1": "Evergreen Terrace",
            "businessRegistrationAddressLine2": "Av. 123",
            "businessRegistrationStateProv": "CA",
            "businessRegistrationPostalCode": "94116",
            "businessRegistrationCity": "San francisco",
            "sourceOfFunds": "It Services",
            "businessWebsite": "htttps://mybusiness.com"
        }
}
{
    "virtualBankAccountBusinessInfo": {
            "geographySendingCountries": "US",
            "geographyReceivingCountries": "US",
            "purposeOfAccount": "Business's VBA USA for providers",
            "monthlyExpectedActivity": 9999999.99,
            "annualRevenue": 9999999.99,
            "businessRegistrationNumber": "123",
            "businessIncorporationDate": "2010-01-01",
            "businessRegistrationCountry": "US",
            "businessRegistrationAddressLine1": "Evergreen Terrace",
            "businessRegistrationAddressLine2": "Av. 123",
            "businessRegistrationStateProv": "CA",
            "businessRegistrationPostalCode": "94116",
            "businessRegistrationCity": "San francisco",
            "sourceOfFunds": "It Services",
            "businessWebsite": "htttps://mybusiness.com"
        }
}
{        
    "virtualBankAccountIndividualInfo": {
            "geographySendingCountries": "US",
            "geographyReceivingCountries": "US",
            "purposeOfAccount": "Business's VBA USA for providers",
            "monthlyExpectedActivity": 9999999.99,
            "annualIncome": 9999999.99,
            "occupation": "Accountant",
            "sourceOfFunds": "It Services",
            "websiteSocialMediaLink": "htttps://mybusiness.com"
        }
}
{        
    "virtualBankAccountIndividualInfo": {
            "geographySendingCountries": "US",
            "geographyReceivingCountries": "US",
            "purposeOfAccount": "Business's VBA USA for providers",
            "monthlyExpectedActivity": 9999999.99,
            "annualIncome": 9999999.99,
            "occupation": "Accountant",
            "sourceOfFunds": "It Services",
            "websiteSocialMediaLink": "htttps://mybusiness.com"
        }
}

Get Virtual Bank Account Summary

Use the following request to get summary information of the virtual account. The summary information provide basic information about the account including time created, status of the account and currency of the account.

Funding method id returned as part of the response can be used to send payments.

-- Example request: GET /v1.2/virtual-bank-account
{
    "virtualBankAccountName": "Account Name",
    "virtualBankAccountBusinessInfo": {
        "id": 145,
        "currency": "USD",
        "virtualBankAccountIds": [
            55182,
            55183
        ],
        "geographySendingCountries": "US",
        "geographyReceivingCountries": "US",
        "purposeOfAccount": "business transactions",
        "monthlyExpectedActivity": 1000.00,
        "annualRevenue": 1000000.00,
        "businessRegistrationNumber": "46-5104750",
        "businessIncorporationDate": "2009-12-31",
        "businessRegistrationCountry": "US",
        "businessRegistrationAddressLine1": "Adress line 1",
        "businessRegistrationAddressLine2": "Addres line 1",
        "businessRegistrationStateProv": "CA",
        "businessRegistrationPostalCode": "94116",
        "businessRegistrationCity": "San Francisco",
        "sourceOfFunds": "business savings"
    },
    "virtualBankAccounts": [
        {
            "accountId": 945080,
            "fundingMethodId": 55182,
            "id": "632c4775-5730-488e-8543-48ab1c56ee67",
            "status": "SUCCESS",
            "currency": "USD",
            "timeCreated": 1761682203650
        },
        {
            "accountId": 945080,
            "fundingMethodId": 55183,
            "id": "2cedde96-39af-4309-825a-f17db16d42c7",
            "status": "SUCCESS",
            "currency": "CAD",
            "timeCreated": 1761682261781
        }
    ]
}

Get Virtual Bank Account Balance

Balance endpoint provides the current balance in the account. It is advisable to check balance in the account before sending payments to ensure that payment does not fail due to insufficient funds.

-- Example request: GET /v1.2/virtual-bank-account/balance/72f03bec-e95e-408d-9167-78d9899b1049
GET /v1.2/virtual-bank-account/balance/{id}

    {
        "accountId": 943802,
        "fundingMethodId": 55073,
        "id": "72f03bec-e95e-408d-9167-78d9899b1049",
        "balanceAmount": {
            "number": 950.00,
            "currency": "USD"
        },
        "timeUpdated": 1745448383244
    }

Get Virtual Bank Account Details

Details endpoint provides all details associated with a particular virtual bank account by id.

USD Virtual Bank Account Details

-- Example request: GET /v1.2/virtual-bank-account/details/72f03bec-e95e-408d-9167-78d9899b1049
GET /v1.2/virtual-bank-account/details/{id}
{
    "id": "72f03bec-e95e-408d-9167-78d9899b1049",
    "fundingMethodId": 55182,
    "isoCurrencyCode": "USD",
    "isoCountryCode": "US",
    "info": {
        "bankInfo": {
            "funding_accounts": [
                {
                    "account_number": "0337658150",
                    "routing_code_type": "ach_routing_number",
                    "account_holder_name": "Account Name",
                    "bank_address": "5 Penn Plaza, 14th Floor, New York, NY 10001, US",
                    "created_at": 1761682198000,
                    "bank_country": "US",
                    "routing_code": "026073150",
                    "payment_type": "regular",
                    "updated_at": 1761682198000,
                    "bank_name": "Community Federal Savings Bank",
                    "currency": "USD",
                    "account_number_type": "account_number",
                    "id": "7450fce7-b599-4c9c-8bfb-af38d6caa2ea"
                },
                {
                    "account_number": "0337658150",
                    "routing_code_type": "wire_routing_number",
                    "account_holder_name": "Account Name",
                    "bank_address": "5 Penn Plaza, 14th Floor, New York, NY 10001, US",
                    "created_at": 1761682198000,
                    "bank_country": "US",
                    "routing_code": "026073008",
                    "payment_type": "regular",
                    "updated_at": 1761682198000,
                    "bank_name": "Community Federal Savings Bank",
                    "currency": "USD",
                    "account_number_type": "account_number",
                    "id": "9dfc707e-c086-4e94-b373-96b3f1f74a50"
                },
                {
                    "account_number": "GB07TCCL12345698449853",
                    "routing_code_type": "bic_swift",
                    "account_holder_name": "Account Name",
                    "bank_address": "12 Steward Street, The Steward Building, London, E1 6FQ, GB",
                    "created_at": 1761682198000,
                    "bank_country": "GB",
                    "routing_code": "TCCLGB3L",
                    "payment_type": "priority",
                    "updated_at": 1761682198000,
                    "bank_name": "The Currency Cloud Limited",
                    "currency": "USD",
                    "account_number_type": "iban",
                    "id": "91de1124-b8a3-40f9-a984-8aff75887fe1"
                }
            ]
        }
    }
}

CAD Virtual Bank Account Details


-- Example request: GET /v1.2/virtual-bank-account/details/2cedde96-39af-4309-825a-f17db16d42c7
GET /v1.2/virtual-bank-account/details/{id}
{
    "id": "2cedde96-39af-4309-825a-f17db16d42c7",
    "fundingMethodId": 55183,
    "isoCurrencyCode": "CAD",
    "isoCountryCode": "CA",
    "info": {
        "bankInfo": {
            "funding_accounts": [
                {
                    "account_number": "803612430",
                    "routing_code_type": "routing_code",
                    "account_holder_name": "Account Name",
                    "bank_address": "736 Meridian Road N.E, Calgary, Alberta, CA",
                    "created_at": 1761682198000,
                    "bank_country": "CA",
                    "routing_code": "034512345",
                    "payment_type": "regular",
                    "updated_at": 1761682198000,
                    "bank_name": "Digital Commerce Bank",
                    "currency": "CAD",
                    "account_number_type": "account_number",
                    "id": "94551b6c-73a5-4a97-adc5-38d8f73ef6ba"
                },
                {
                    "account_number": "GB07TCCL12345698449853",
                    "routing_code_type": "bic_swift",
                    "account_holder_name": "Account Name",
                    "bank_address": "12 Steward Street, The Steward Building, London, E1 6FQ, GB",
                    "created_at": 1761682198000,
                    "bank_country": "GB",
                    "routing_code": "TCCLGB3L",
                    "payment_type": "priority",
                    "updated_at": 1761682198000,
                    "bank_name": "The Currency Cloud Limited",
                    "currency": "CAD",
                    "account_number_type": "iban",
                    "id": "91de1124-b8a3-40f9-a984-8aff75887fe1"
                }
            ]
        }
    }
}

Get Virtual Bank Account Transactions

Transactions endpoint provides a list of transactions during the queried time period.

There can be a delay( a few mins) between your transaction completion and your transaction reflecting in the response of the API.

 Query Parameters
-- pageNumber    Page index to retrieve (0-based). Default is 0.
-- pageSize      Number of records per page. Default is 25. Maximum is 25.
-- startDate     Filter transactions from this date (inclusive). Format: YYYY-MM-DD.
-- endDate       Filter transactions up to this date (inclusive). Format: YYYY-MM-DD.
-- Example request: GET /v1.2/virtual-bank-account/transactions?pageNumber=0&pageSize=25&startDate=2025-05-01&endDate=2025-05-22

GET /v1.2/virtual-bank-account/transactions/{fundingMethodId}
{    
    "content": [
        {
            "id": 318,
            "accountId": 943802,
            "paymentId": 463116,
            "transactionId": 7438211,
            "fundingMethodId": 55073,
            "balanceId": "72f03bec-e95e-408d-9167-78d9899b1049",
            "currency": "USD",
            "amount": 50.50,
            "balanceAmount": 899.50,
            "type": "debit",
            "status": "completed",
            "action": "transfer",
            "settlesAt": 1747104286000,
            "createdAt": 1747104286000,
            "updatedAt": 1747104287000,
            "completedAt": 1747104287000
        }
    ],
    "number": 0,
    "size": 25,
    "totalPages": 1,
    "numberOfElements": 1,
    "totalElements": 1,
    "previousPage": false,
    "nextPage": false,
    "first": true,
    "last": true
}

Sending Payments

Claimless-payments can be used to send payments from the virtual bank account.

When sending payment, FundingMethod is required. The fundingMethod was returned as part of response what virtual bank account was creates VBA account.

fundingMethod can also be retrieved by getting the balance or the details endpoints.

POST /v1.2/claimless-payments
{
    "purposeOfPayment": "Goods",
    "payee":{
        "email": "[email protected]",
        "firstName": "USA First Name",
        "lastName": "USA Last Name",
        "countryCode": "US",
        "phone": "4152306359",
        "phoneCountryCode": "+1",
        "type": "Business",
        "industry": "Software, IT and Telecommunications",
        "subIndustry": "Software",
        "businessName": "USA 123",
        "business": {
            "address": {
                "countryCode": "US",
                "street": "300 Folsom",
                "city": "San Francisco",
                "postalCode": "94105",
                "province": "CA"
            },
            "entity": "Corporation",
            "taxIdNumber": "33-1867308"
        }
    },
    "amount": {
        "number": 50.50,
        "currency": "USD"
    },
    "fundingMethod": {
        "id": 55073,
        "type": "VirtualBank"
    },
    "sweepToWalletId" : 123,
    "notes" : "Payment notes"
}
{
    "requestId": "3c74a767-3416-4d0a-88fe-5869dcfb1239",
    "notes": "Payment notes",
    "payee": {
        "email": "[email protected]",
        "countryCode": "US",
        "phone": "tel:+1-415-230-6359"
    },
    "payeeAmount": {
        "number": 50.50,
        "currency": "USD"
    },
    "status": "Sent",
    "goodFundsPayment": false,
    "realTimePayment": false,
    "sweepToWalletId": 2037,
    "extraInfo": {
        "customInfo": null,
        "isPayeeCoveringCardFee": null
    },
    "id": 463116,
    "exchangeRate": {
        "fromAmount": 50.50,
        "fromCurrency": "USD",
        "toAmount": 50.50,
        "toCurrency": "USD"
    },
    "feeInformation": {
        "payerInfo": {
            "originalAmount": 50.50,
            "feeAmount": 0.00,
            "totalAmount": 50.50,
            "currency": "USD"
        },
        "payeeInfo": {
            "originalAmount": 50.50,
            "feeAmount": 0.00,
            "totalAmount": 50.50,
            "currency": "USD"
        }
    },
    "timeCreated": "2025-05-12T19:43:53.915-07:00",
    "timeUpdated": "2025-05-12T19:43:55.418-07:00",
    "claimLink": "https://api.dev.veem.com/api/c/VLiN8xbV",
    "debitCreditTxn": {
        "debitTxn": null,
        "creditTxn": null,
        "refundTxn": null
    },
    "fastTransfer": false,
    "cancelable": false,
    "payerFundingMethodType": "VirtualBank",
    "receiverFundingMethodType": "Wallet",
    "originalRequestId": "3c74a767-3416-4d0a-88fe-5869dcfb1239"
}

Here is an example of sending a payment from VBA, for more detail of this endpoint please see

VBA Webhooks

For creating a webhook to be notified when a VBA event occurs you should use the following endpoint

POST https://sandbox-api.veem.com/veem/v1.2/webhooks

📘

Headers

There are 2 headers necessary for the use of this endpoint:

  • X-request-id: This is a number unique to the current API request, and follows the UUID format. Reusing this header without changing the value will result in a 409 (Conflict) status. An example X-request-id is as follows:

48855846-628d-4177-b071-80332a116f0a

  • Authorization: This header holds the bearer token required to use Veem's public API, and belongs to the owner account. Failure to use a valid bearer token will result in a 404 (Not Found) status. An example of a valid token is as follows:

Bearer c047594b-082c-4da1-be89-08fe3770f4b3

See Get Access Token section to generate your bearerToken

In addition to the webhooks described on the Webhok Notification page, you can subscribe to two VBA-related events using the following webhooks:

  • VBA_ACCOUNT_STATUS_UPDATED
  • VBA_TRANSACTION

VBA Account Status Webhook

  • VBA_ACCOUNT_STATUS_UPDATED

To subscribe to this webhook notification, use the following request:

{
    "callbackURL": "https://webhook-test.com/958892dcc2b3076fffd136adb127ac55",
    "event": "VBA_ACCOUNT_STATUS_UPDATED"
}
{
    "id": 92,
    "event": "VBA_ACCOUNT_STATUS_UPDATED",
    "callbackUrl": "https://webhook-test.com/958892dcc2b3076fffd136adb127ac55",
    "status": "Active"
}

You will get a notification in the following format:

{
  "type": "VBA_ACCOUNT_STATUS_UPDATED",
  "data": "{\"accountId\":944914,\"fundingMethodId\":55146,\"accountReference\":\"9fb7d64s-a67a-4d28-9655-ace57ba95f5a\",\"currency\":\"USD\",\"status\":\"SUCCESS\"}"
}

Event information is contained in the data field, in a stringified JSON format.

Field

Description

accountId

Account id

fundingMethodId

Funding method Id

accountReference

Unique identifier of the VBA account

currency

VBA's currency

status

One of the Virtual Bank Account statuses:

  • ACCEPTED: The VBA application has been accepted and is now under review
  • SUCCESS: The VBA has successfully been activated
  • REJECTED: The VBA application has been rejected
  • ERROR: An error happened during VBA activation
  • DEACTIVATED: The VBA account has been disabled

VBA Transaction Status Webhook

  • VBA_TRANSACTION

To subscribe to this webhook notification, use the following request:

{
    "callbackURL":"https://webhook-test.com/958892dcc2b3076fffd136adb127ac55",
    "event":"VBA_TRANSACTION"
}
{
    "id": 31,
    "event": "VBA_TRANSACTION",
    "callbackUrl": "https://typedwebhook.tools/webhook/b8d85c63-b0fe-4c31-8c27-ccfeff52da59",
    "status": "Active"
}

You will get a notification in the following format:

{
  "type": "VBA_TRANSACTION",
  "data": "{\"accountId\":\"944208\",\"fundingMethodId\":\"55089\",\"paymentId\":\"468062\",\"counterParty\":{\"name\":\"USA 21111c8e-a3d2-4fdf-ae4e-8d05b5e858a9\",\"accountNumber\":\"1234567\",\"bankCode\":\"122105155\",\"bankName\":\"Access Credit Union\",\"method\":\"bank\"},\"balance\":{\"currency\":\"USD\",\"amount\":461.50},\"transaction\":{\"currency\":\"USD\",\"amount\":50.00,\"status\":\"Complete\",\"direction\":\"debit\",\"transactionDate\":1755743729000,\"reference\":\"\",\"additionalReference\":\"Goods:Products\"}}"
}

Event information is contained in the data field, in a stringified JSON format.

FieldDescription
fundingMethodIdFunding method Id
paymentIdPaymentId for Veem Initiated Payments
accountIdAccount id
balanceVBA Balance information
balance.currencyVBA currency code
balance.amountVBA balance
counterPartyCounter party information
counterParty.nameCounter party's name
counterParty.accountNumberCounter party's bank account number if available
counterParty.routingCodeCounter party's bank routing code if available
counterParty.bicCounter party's bank bic if available
counterParty.bankCodeCounter party's bank code if available
counterParty.bankNameCounter party's bank name if available
counterParty.addressCounter party's address if available
counterParty.methodCounter party's payment method (bank, wallet, etc)
counterParty.ibanCounter party's iban if available
transactionTransaction information
transaction.currencyTransaction currency
transaction.transactionTransaction amount
transaction.statusTransaction status, possible values: Complete, InProgress, Closed
transaction.directiondebit or credit
transaction.transactionDateTransaction date
transaction.referenceTransaction reference/notes
transaction.additionalReferenceAdditional transaction reference/notes
transaction.railTransaction's rail