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.

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 }