Skip to main content
GET
/
api
/
v1
/
virtual-accounts
/
{id}
Get Virtual Account
curl --request GET \
  --url https://api.usezentra.com/api/v1/virtual-accounts/{id} \
  --header 'Authorization: Bearer <token>'
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Account not found",
    "details": null
  },
  "meta": {
    "path": "/api/v1/virtual-accounts/va_missing",
    "method": "GET"
  }
}

Get Virtual Account

Retrieve a specific virtual account for the authenticated tenant.

Endpoint

GET /api/v1/virtual-accounts/{id}

Path Parameters

id
string
required
Virtual account ID.

Response Fields

id
string
Unique identifier for the virtual account.
tenant_id
string
Tenant that owns the account.
customer_id
string
Customer assigned to the account.
account_number
string
Provider account number.
account_name
string
Name on the account.
bank_code
string
Provider bank code or slug.
bank_name
string
Human-readable bank name.
provider
string
Provider selected for the account.
status
string
Current account status.
account_type
string
Account type stored by the service.
total_received_minor
number
Total inbound amount recorded on this account, in minor units.
transaction_count
number
Number of recorded inbound credits.
metadata
object | null
Account metadata.
expires_at
string | null
Provider expiry timestamp if the account allocation is temporary.
created_at
string
ISO 8601 creation timestamp.
updated_at
string
ISO 8601 last-update timestamp.

Example Request

const account = await client.virtualAccounts.get('va_abc123xyz');

console.log(`Account: ${account.accountNumber}`);
console.log(`Received: ${account.totalReceivedMinor}`);
console.log(`Status: ${account.status}`);

Example Response

{
  "data": {
    "id": "va_abc123xyz",
    "tenant_id": "tenant_123",
    "customer_id": "cus_1234567890",
    "account_number": "0123456789",
    "account_name": "John Doe",
    "bank_code": "wema-bank",
    "bank_name": "Wema Bank",
    "provider": "paystack_dva",
    "status": "active",
    "account_type": "standard",
    "total_received_minor": 500000,
    "transaction_count": 5,
    "metadata": {
      "purpose": "collections",
      "tier": "premium"
    },
    "expires_at": null,
    "created_at": "2026-03-07T10:30:00Z",
    "updated_at": "2026-03-07T15:45:00Z"
  },
  "meta": {
    "timestamp": "2026-03-07T15:45:00Z",
    "requestId": "req_123"
  }
}

Error Responses

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Account not found",
    "details": null
  },
  "meta": {
    "path": "/api/v1/virtual-accounts/va_missing",
    "method": "GET"
  }
}

Use Cases

Show customers their account number and bank details in your app.
Confirm whether an account is active, frozen, closed, or expired before presenting it to users.
Use total_received_minor and transaction_count for reporting and reconciliation.

Next Steps

List Accounts

View all virtual accounts

Close Account

Close the account

Webhooks

Handle account events