Create Virtual Account

Create a virtual account for a customer. Kyshi uses the business virtual-account provider configured for the requested currency.

-H "x-api-key: your_secret_key"
POST {{host}}/v1/wallets

Request Body

FieldData TypeRequiredDescription
customerobjectYesCustomer details. Include at least email; firstName, lastName, and phoneNumber are recommended.
currencystringYesCollection currency. Supported values: NGN, KES, ZAR, GHS, XOF, USD; availability depends on your enabled integrations.
accountTypestringYesINDIVIDUAL or COOPERATE. Defaults to INDIVIDUAL.
accountCategorystringYesVIRTUAL_ACCOUNT for a temporary account or DEDICATED_VIRTUAL_ACCOUNT for a reusable account. Defaults to VIRTUAL_ACCOUNT.
bankstringNoProvider value. Kyshi currently resolves this from your configured provider.
amountnumberNoExpected collection amount in major currency units. For temporary accounts, Kyshi can add customer-borne fees to the payable amount.
expiresAtstringNoExpiry in minutes for temporary individual virtual accounts. Must be a numeric string between 30 and 4320 when supplied.
{
  "customer": {
    "email": "[email protected]",
    "firstName": "Ada",
    "lastName": "Okafor",
    "phoneNumber": "2348012345678"
  },
  "currency": "NGN",
  "accountType": "INDIVIDUAL",
  "accountCategory": "VIRTUAL_ACCOUNT",
  "amount": 5000,
  "expiresAt": "60"
}
{
  "status": true,
  "message": "Success",
  "code": 201,
  "data": {
    "id": "89d8f903-96f6-48df-af97-1f2b3bb64260",
    "accountNumber": "1234567890",
    "accountName": "KYSHI / ADA OKAFOR",
    "bankCode": "999999",
    "bankName": "Provider Bank",
    "balance": 5000,
    "accountCategory": "VIRTUAL_ACCOUNT",
    "accountType": "INDIVIDUAL",
    "reference": "VA_123456789",
    "expiresAt": "60",
    "isPermanent": false,
    "provider": "VFD",
    "mode": "live",
    "createdAt": "2026-05-20T10:15:00.000Z"
  }
}