Interswitch Transfers API

Quickteller Send Money APIs covering Single Transfer (POST /quicktellerservice/api/v5/transactions/TransferFunds), Bulk Transfer, Name Inquiry, and Bank Code Resolution. Used by banks, fintechs, and PSPs to disburse funds across NIBSS-Instant-Payment-connected Nigerian bank accounts with SHA-512 MAC authentication on each request.

Interswitch Transfers API is one of 12 APIs that Interswitch publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Transfers, Payouts, Disbursement, Bank Transfer, and Africa. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

interswitch-transfers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Interswitch Transfers API
  description: |
    Quickteller Send Money APIs covering Single Transfer, Bulk Transfer, Name
    Inquiry, and Bank Code Resolution. Used by banks, fintechs, and PSPs to
    disburse funds across NIBSS-Instant-Payment-connected Nigerian bank
    accounts with SHA-512 MAC authentication on each request.
  version: '2024-01-01'
servers:
  - url: https://qa.interswitchng.com
    description: Sandbox / QA
  - url: https://saturn.interswitchng.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Transfers
  - name: Bulk Transfers
  - name: Name Inquiry
  - name: Bank Codes
paths:
  /quicktellerservice/api/v5/transactions/TransferFunds:
    post:
      tags: [Transfers]
      summary: Send Single Transfer
      description: |
        Move funds from a sender wallet or account to a single recipient bank
        account. `mac` is the SHA-512 hash of the canonical message; consult the
        Interswitch transfer integration guide for the exact field order.
      operationId: sendSingleTransfer
      parameters:
        - in: header
          name: terminalId
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleTransferRequest'
      responses:
        '200':
          description: Transfer response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferResponse'
  /quicktellerservice/api/v5/transactions/BulkTransfer:
    post:
      tags: [Bulk Transfers]
      summary: Send Bulk Transfer
      description: Disburse to up to thousands of recipients in a single request.
      operationId: sendBulkTransfer
      parameters:
        - in: header
          name: terminalId
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkTransferRequest'
      responses:
        '200':
          description: Batch accepted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  batchId: { type: string }
                  responseCode: { type: string }
                  acceptedCount: { type: integer }
                  rejectedCount: { type: integer }
  /quicktellerservice/api/v5/transactions/NameInquiry:
    post:
      tags: [Name Inquiry]
      summary: Resolve Account Name
      description: Look up the registered name on a bank account before initiating a transfer to it.
      operationId: nameInquiry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [accountId, bankCode]
              properties:
                accountId: { type: string, description: NUBAN bank account number. }
                bankCode: { type: string, description: 6-digit CBN bank code. }
      responses:
        '200':
          description: Account holder details.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accountName: { type: string }
                  accountId: { type: string }
                  bankCode: { type: string }
                  responseCode: { type: string }
  /quicktellerservice/api/v5/banks:
    get:
      tags: [Bank Codes]
      summary: List Banks
      description: Return CBN bank codes and bank names that can be addressed via the transfer endpoints.
      operationId: listBanks
      responses:
        '200':
          description: List of banks.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    bankCode: { type: string }
                    bankName: { type: string }
                    cbnCode: { type: string }
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
  schemas:
    SingleTransferRequest:
      type: object
      required: [transferCode, mac, initiatingEntityCode, initiation, termination, sender]
      properties:
        transferCode: { type: string }
        mac: { type: string, description: SHA-512 hash of canonical transfer fields. }
        initiatingEntityCode: { type: string, example: PBL }
        initiation:
          type: object
          properties:
            amount: { type: integer }
            currencyCode: { type: string }
            channel: { type: string }
            paymentMethodCode: { type: string, example: CA }
        termination:
          type: object
          properties:
            amount: { type: integer }
            currencyCode: { type: string }
            accountReceivable:
              type: object
              properties:
                accountNumber: { type: string }
                accountType: { type: string }
            entityCode: { type: string, description: Recipient bank entity code. }
            countryCode: { type: string }
            paymentMethodCode: { type: string, example: AC }
        sender:
          type: object
          properties:
            phone: { type: string }
            email: { type: string, format: email }
            firstName: { type: string }
            lastName: { type: string }
    BulkTransferRequest:
      type: object
      required: [batchReference, items]
      properties:
        batchReference: { type: string }
        initiatingEntityCode: { type: string }
        items:
          type: array
          items:
            $ref: '#/components/schemas/SingleTransferRequest'
    TransferResponse:
      type: object
      properties:
        ResponseCode: { type: string, description: 90000 indicates success. }
        TransactionRef: { type: string }
        TransferDate: { type: string, format: date-time }
        Amount: { type: integer }