Kora Virtual Bank Accounts API

Dedicated NGN and USD virtual bank accounts.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/korapay-virtual-bank-accounts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

korapay-virtual-bank-accounts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Kora (Korapay) Merchant Balances Virtual Bank Accounts API
  description: 'The Kora merchant REST API for pan-African payments. It supports pay-ins (card, bank transfer, mobile money, pay-with-bank), payouts (single, bulk, remittance), NGN and USD virtual bank accounts, balances, refunds, multi-currency conversion, and payout utilities (bank / mobile-money lookups and account resolution). All requests are authenticated with API keys - a public key for client-side charge initiation and a secret key (Bearer) for server-side and financial operations - and each account has separate Test and Live mode keys. Card charge payloads must be AES-256 encrypted with your encryption key. Webhook notifications carry an `x-korapay-signature` header that is an HMAC SHA-256 of the response `data` object signed with your secret key.

    This document is a representative, grounded subset of the public Kora API. Request and response schemas are simplified; consult the Kora developer documentation for the authoritative field-level contract. Endpoints are confirmed against Kora''s published documentation except where a description notes an inferred path.'
  version: '1.0'
  contact:
    name: Kora Developer Support
    url: https://developers.korapay.com
    email: support@korapay.com
servers:
- url: https://api.korapay.com/merchant/api/v1
  description: Kora merchant API (Test and Live selected by the API key used)
security:
- secretKeyAuth: []
tags:
- name: Virtual Bank Accounts
  description: Dedicated NGN and USD virtual bank accounts.
paths:
  /virtual-bank-account:
    post:
      operationId: createVirtualBankAccount
      tags:
      - Virtual Bank Accounts
      summary: Create a virtual bank account
      description: Creates a dedicated NGN or USD virtual bank account (permanent or temporary) tied to a customer, with the KYC information required by the destination market (for example a BVN for NGN accounts).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VirtualBankAccountInput'
      responses:
        '200':
          description: The created virtual bank account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualBankAccount'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /virtual-bank-account/transactions:
    get:
      operationId: listVirtualBankAccountTransactions
      tags:
      - Virtual Bank Accounts
      summary: Fetch virtual bank account transactions
      description: Retrieves the transactions that funded a virtual bank account.
      parameters:
      - name: account_number
        in: query
        required: true
        description: The virtual bank account number.
        schema:
          type: string
      - $ref: '#/components/parameters/StartDate'
      - $ref: '#/components/parameters/EndDate'
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: A list of transactions on the virtual bank account.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /virtual-bank-account/{accountReference}:
    parameters:
    - name: accountReference
      in: path
      required: true
      description: The account_reference supplied when the account was created.
      schema:
        type: string
    get:
      operationId: getVirtualBankAccount
      tags:
      - Virtual Bank Accounts
      summary: Retrieve a virtual bank account
      description: Retrieves a virtual bank account by its account reference.
      responses:
        '200':
          description: The virtual bank account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualBankAccount'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    VirtualBankAccount:
      type: object
      properties:
        status:
          type: boolean
        message:
          type: string
        data:
          type: object
          properties:
            account_reference:
              type: string
            account_number:
              type: string
            account_name:
              type: string
            bank_code:
              type: string
            bank_name:
              type: string
            currency:
              type: string
          additionalProperties: true
    VirtualBankAccountInput:
      type: object
      required:
      - account_name
      - account_reference
      - permanent
      - bank_code
      - customer
      - kyc
      properties:
        account_name:
          type: string
        account_reference:
          type: string
        permanent:
          type: boolean
        bank_code:
          type: string
        customer:
          type: object
          required:
          - name
          properties:
            name:
              type: string
            email:
              type: string
              format: email
        kyc:
          type: object
          description: KYC identifiers required for the destination market.
          properties:
            bvn:
              type: string
              description: Bank Verification Number (required for NGN accounts).
    ErrorResponse:
      type: object
      properties:
        status:
          type: boolean
        message:
          type: string
        data:
          type: object
          additionalProperties: true
  parameters:
    Page:
      name: page
      in: query
      required: false
      description: Page number for pagination.
      schema:
        type: integer
    StartDate:
      name: start_date
      in: query
      required: false
      description: Start of the date range (ISO 8601).
      schema:
        type: string
        format: date
    EndDate:
      name: end_date
      in: query
      required: false
      description: End of the date range (ISO 8601).
      schema:
        type: string
        format: date
    Limit:
      name: limit
      in: query
      required: false
      description: Number of records per page.
      schema:
        type: integer
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    secretKeyAuth:
      type: http
      scheme: bearer
      description: 'Secret API key passed as `Authorization: Bearer sk_...`. Required for server-side and financial operations (payouts, balances, virtual bank accounts, refunds, conversions, charge verification). Test and Live modes use different keys.'
    publicKeyAuth:
      type: http
      scheme: bearer
      description: Public API key (`pk_...`) used from client-side code to initiate charges. Cannot access financial data.