Create Virtual Account

Create a temporary or dedicated virtual account for collections.

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.
referencestringNoYour unique virtual account reference. If omitted, Kyshi generates one.
feeBearerstringNoWho pays virtual-account collection fees. Allowed values: CUSTOMER, MERCHANT. Defaults to CUSTOMER. If CUSTOMER, Kyshi adds fees to the payable amount. If MERCHANT, the payable amount remains the requested amount and fees are deducted from the settled 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,
  "reference": "ORDER-VA-10001",
  "feeBearer": "CUSTOMER",
  "expiresAt": "60"
}

Set feeBearer to MERCHANT when the payer should transfer exactly the requested amount. For example, if amount is 1000 and applicable fees are 70, the payable amount remains 1000 and Kyshi credits the merchant with 930.

{
  "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"
  }
}