Skip to main content
Virtual accounts give each customer a unique local bank account number. When a payment arrives at that number, it is automatically matched and credited to the right customer — no manual reconciliation needed.
Each customer can hold one virtual account per currency. The customer needs an approved endorsement for that currency before you can issue the account. See KYC Requirement.

Supported Rails

Argentina accounts require the customer’s document_id and document_type ("CUIT", "CUIL", or "CDI") in the create request. The customer must be an Argentine resident. See the Regional Payouts guide for details.

Create Virtual Account

string
required
The ID of the KYC-approved customer to issue the account to.
string
required
Currency for the virtual account (see supported values above).

List Virtual Accounts

string
Filter by currency code (e.g. BRL, USD).
string
Filter by account status.
string
From date (ISO 8601).
string
Search query — account number, customer name, etc.
number
Results per page.
number
Page number.

Get Virtual Account

string
required
The virtual account ID.

Virtual Account Transaction History

Retrieve all payments received into a specific virtual account:
string
required
The account number (not the account ID).
string
Filter by customer ID.
string
Filter by payment status.
string
From date (ISO 8601).
string
To date (ISO 8601).
number
Page number.
number
Results per page.

Delete Virtual Account

string
required
The virtual account ID to delete.
The account stops accepting funds and you receive a virtual_account.deleted webhook. An ID that doesn’t exist or isn’t yours returns 404.

Bulk Account Creation

Create virtual accounts for multiple customers in a single request. Useful when onboarding a batch of pre-verified customers.
Requires Idempotency-Key header. Every customer needs an approved endorsement for the currency before bulk creation.
array
required
Array of account creation objects.

Enable / Disable Virtual Account

Suspend or reactivate a virtual account without deleting it. Suspended accounts stop receiving deposits.
string
required
The virtual account ID.
string
required
"enable" or "disable".

Refund a Payin

Reverse a specific incoming deposit back to the sender. Use this when a customer payment needs to be returned.
string
required
The external transaction ID of the deposit to refund. This is returned in the virtual_account.deposit webhook payload.
Requires Idempotency-Key header. Refunds are subject to the availability of the underlying payment rail — not all currencies support reversals.

List All Virtual Account History

Retrieve transaction history across all virtual accounts (not scoped to a specific account number):

Get Customer Virtual Accounts

List all virtual accounts belonging to a specific customer:
string
required
The customer UUID.

KYC Requirement

Each currency needs a specific endorsement. Find it with:
Then check that the customer’s endorsement for it is approved, either from the endorsement.updated webhook or from the endorsement list on GET /customer/{customer_id}. If it isn’t, submit or fix KYC first. See Track verification with endorsements.