Skip to main content
Virtual accounts let you provision unique ACH routing and account numbers for each worker’s wallet. External parties (employers, clients, platforms) can fund wallets directly via ACH credit — no payroll required.

Prerequisites

1

Worker wallet set up

The worker must have a User account with a provisioned wallet. See Set Up Worker Wallets.
2

KYC approved

Both identity and address KYC must be approved before you can provision a virtual account. See KYC Verification.
3

Virtual accounts enabled

Work with your account manager to enable virtual accounts for your platform.

Create a Virtual Account

Once KYC is approved, provision a virtual account for the worker’s wallet.
bash
curl -X POST 'https://api.cadanapay.com/v1/users/{userId}/virtual-accounts' \
  -H 'Authorization: Bearer YOUR_API_KEY'
The account is created in a Requested state. Cadana submits it to the bank for processing, and it moves to Approved once provisioning is complete.

Retrieve Account Details

Fetch the virtual account details including the routing and account numbers.
bash
curl -X GET 'https://api.cadanapay.com/v1/users/{userId}/virtual-accounts' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Response:
{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef0123456789",
      "currency": "USD",
      "status": "Approved",
      "accountInformation": {
        "accountNumber": "9876543210",
        "routingNumber": "000000000",
        "bankName": "Example Bank",
        "accountName": "John Doe",
        "bankCode": "000000000",
        "countryCode": "US",
        "accountType": "checking"
      },
      "createdTimestamp": 1690339130,
      "lastUpdatedTimestamp": 1690339230
    }
  ]
}
FieldDescription
accountInformation.accountNumberUnique account number for ACH credits
accountInformation.routingNumberBank routing number
accountInformation.bankNameName of the custodial bank
statusRequested, Approved, Rejected, or Deactivated

Fund the Wallet

Once the virtual account is Approved, external parties can send ACH credits to the account number. Funds appear in the worker’s wallet once the transfer settles (typically 1–3 business days for ACH).

Sandbox testing

In sandbox mode, simulate a deposit to test the funding flow without a real ACH transfer.
bash
curl -X POST 'https://api.cadanapay.com/v1/sandbox/users/{userId}/virtual-accounts/{virtualAccountId}/deposit' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Returns 204 on success. The deposit is reflected in the worker’s wallet balance immediately.

Webhook Events

Subscribe to virtual account events for real-time status updates:
EventDescription
virtual-account.requestedVirtual account is in review
virtual-account.submittedSent to bank for processing
virtual-account.createdAccount is active with full account information
See Events for webhook payloads and Webhooks to configure your endpoint.

Supported Countries

Restricted Virtual account services are available for these jurisdictions with additional monitoring and controls.
CountryISO CodeUS ACH/FedWire
AlbaniaALBYes
AngolaAGOYes
BarbadosBRBYes
Bosnia-HerzegovinaBIHYes
BotswanaBWAYes
Burkina FasoBFAYes
CameroonCMRYes
Central African RepublicCAFYes
Cote d’IvoireCIVYes
CroatiaHRVYes
EritreaERIYes
EthiopiaETHYes
JamaicaJAMYes
Lao PDRLAOYes
MonacoMCOYes
NamibiaNAMYes
NigeriaNGAYes
SenegalSENYes
South AfricaZAFYes
TanzaniaTZAYes
Trinidad & TobagoTTOYes
TurkeyTURYes
UgandaUGAYes
UkraineUKRYes
VanuatuVUTYes
VietnamVNMYes
Standard Virtual account services are available for these jurisdictions with regular monitoring and controls.
CountryISO CodeUS ACH/FedWire
ArubaABWYes
AnguillaAIAYes
Aland IslandsALAYes
AndorraANDYes
Antigua and BarbudaATGYes
ArgentinaARGYes
ArmeniaARMYes
AustraliaAUSYes
AustriaAUTYes
BahamasBHSYes
BahrainBHRYes
BelgiumBELYes
BelizeBLZYes
BeninBENYes
BermudaBMUYes
BoliviaBOLYes
BrazilBRAYes
Brunei DarussalamBRNYes
BulgariaBGRYes
CambodiaKHMYes
CanadaCANYes
Cayman IslandsCYMYes
ChileCHLYes
ColombiaCOLYes
Costa RicaCRIYes
CuracaoCUWYes
CyprusCYPYes
CzechiaCZEYes
DenmarkDNKYes
DominicaDMAYes
Dominican RepublicDOMYes
EcuadorECUYes
EgyptEGYYes
El SalvadorSLVYes
EstoniaESTYes
EswatiniSWZYes
FijiFJIYes
FinlandFINYes
FranceFRAYes
GeorgiaGEOYes
GermanyDEUYes
GhanaGHAYes
GibraltarGIBYes
GreeceGRCYes
GreenlandGRLYes
GuatemalaGTMYes
GuyanaGUYYes
Hong KongHKGYes
HungaryHUNYes
IcelandISLYes
IndiaINDYes
IndonesiaIDNYes
IrelandIRLYes
Isle of ManIMNYes
IsraelISRYes
ItalyITAYes
JapanJPNYes
JordanJORYes
KazakhstanKAZYes
Korea (Republic of)KORYes
KuwaitKWTYes
KyrgyzstanKGZYes
LatviaLVAYes
LiechtensteinLIEYes
LithuaniaLTUYes
LuxembourgLUXYes
MacauMACYes
MadagascarMDGYes
MalawiMWIYes
MalaysiaMYSYes
MaldivesMDVYes
MaltaMLTYes
Marshall IslandsMHLYes
MartiniqueMTQYes
MauritaniaMRTYes
MauritiusMUSYes
MayotteMYTYes
MexicoMEXYes
MoldovaMDAYes
MongoliaMNGYes
MontenegroMNEYes
MontserratMSRYes
NetherlandsNLDYes
New CaledoniaNCLYes
New ZealandNZLYes
Norfolk IslandNFKYes
Northern Mariana IslandsMNPYes
NauruNRUYes
NiueNIUYes
NorwayNORYes
OmanOMNYes
PanamaPANYes
Papua New GuineaPNGYes
ParaguayPRYYes
PeruPERYes
PhilippinesPHLYes
PitcairnPCNYes
PolandPOLYes
PortugalPRTYes
Puerto RicoPRIYes
ReunionREUYes
RomaniaROUYes
RwandaRWAYes
Saudi ArabiaSAUYes
SingaporeSGPYes
South Georgia and the South Sandwich IslandsSGSYes
Saint Helena, Ascension and Tristan da CunhaSHNYes
Svalbard and Jan MayenSJMYes
Solomon IslandsSLBYes
Sierra LeoneSLEYes
San MarinoSMRYes
Saint Pierre and MiquelonSPMYes
SerbiaSRBYes
Sao Tome and PrincipeSTPYes
SurinameSURYes
SlovakiaSVKYes
SloveniaSVNYes
SwedenSWEYes
SeychellesSYCYes
Turks and Caicos IslandsTCAYes
ChadTCDYes
TogoTGOYes
ThailandTHAYes
TajikistanTJKYes
TokelauTKLYes
TurkmenistanTKMYes
Timor-LesteTLSYes
TongaTONYes
TunisiaTUNYes
TuvaluTUVYes
TaiwanTWNYes
United States Minor Outlying IslandsUMIYes
UruguayURYYes
United States of AmericaUSAYes
UzbekistanUZBYes
Holy SeeVATYes
Saint Vincent and the GrenadinesVCTYes
Virgin Islands (British)VGBYes
Virgin Islands (U.S.)VIRYes
Wallis and FutunaWLFYes
SamoaWSMYes
ZambiaZMBYes

Next Steps