Transfers And Virtual Accounts

Use the SDK for bank transfers, beneficiaries, virtual accounts, and VA transfers.

Use kyshi.transfers for payouts and beneficiary management. Use kyshi.virtualAccounts for collection accounts. Use kyshi.virtualAccountTransfers for payouts through the virtual-account transfer rail.

Transfers

Create a beneficiary, then initiate a transfer.

const beneficiary = await kyshi.transfers.createBeneficiary({
  accountName: 'Jane Doe',
  accountNumber: '0123456789',
  bankName: 'Test Bank',
  bankCode: '000013',
  currency: 'NGN',
});

const transfer = await kyshi.transfers.create({
  beneficiaryId: beneficiary.id!,
  currency: 'NGN',
  amount: 1000,
  narration: 'Vendor payout',
  reference: 'PAYOUT-10001',
});

Name Enquiry And Banks

const banks = await kyshi.transfers.listBanks('NGN');

const account = await kyshi.transfers.nameEnquiry({
  bankCode: '000013',
  accountNumber: '0123456789',
  currency: 'NGN',
});

Virtual Accounts

const account = await kyshi.virtualAccounts.create({
  customer: { email: '[email protected]' },
  currency: 'NGN',
  accountType: 'INDIVIDUAL',
  accountCategory: 'VIRTUAL_ACCOUNT',
  bank: 'VFD',
});

const balance = await kyshi.virtualAccounts.getBalance('NGN');

Verify Virtual Account Payment

const payment = await kyshi.virtualAccounts.verifyPayment({
  reference: 'ORDER-10001',
});

Virtual Account Transfers

kyshi.virtualAccountTransfers exposes the same transfer and beneficiary methods as kyshi.transfers, mapped to the virtual-account transfer API routes. It also supports bulk VA transfer batches for larger NGN payouts that need to be split by the provider payout limit.

const vaTransfer = await kyshi.virtualAccountTransfers.create({
  beneficiaryId: 'beneficiary-id',
  currency: 'NGN',
  amount: 1000,
  narration: 'VA payout',
  reference: 'VA-PAYOUT-10001',
});

Bulk Virtual Account Transfers

Kyshi charges the transfer fee once on the batch, reserves the total debit once, and processes the provider payouts in the background.

const batch = await kyshi.virtualAccountTransfers.createBulk({
  beneficiaryId: 'beneficiary-id',
  currency: 'NGN',
  amount: 100000000,
  narration: 'Bulk supplier payout',
  splitCount: 20,
  reference: 'VA-BULK-10001',
});

const latestBatch = await kyshi.virtualAccountTransfers.retrieveBulk(batch.id!);

Common Methods

ResourceMethods
kyshi.transferscreate, retrieve, list, createBeneficiary, listBeneficiaries, retrieveBeneficiary, nameEnquiry, listBanks
kyshi.virtualAccountscreate, createCorporate, list, retrieve, getDetails, getBalance, verifyPayment, simulateCredit
kyshi.virtualAccountTransfersSame transfer methods, using /va/transfer routes, plus createBulk and retrieveBulk

For exact API fields and response schemas, see Reference > Transfers, Reference > Virtual Accounts, and Reference > VA Transfer.