Moniepoint Single Transfers API

Initiate, authorize, and query single transfers.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

moniepoint-single-transfers-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Moniepoint POS Push Payment Authentication Single Transfers API
  description: 'Push payment-request flow for Moniepoint POS terminals. ISV partners push an authenticated payment request to a registered terminal serial number; the merchant taps to accept and the terminal completes a card or bank-transfer collection routed through Moniepoint''s acquiring rails. API client credentials (client id and client secret) are issued from the Moniepoint Business dashboard.

    '
  version: '1.0'
  contact:
    name: Moniepoint POS Developer Support
    url: https://teamapt.atlassian.net/wiki/spaces/EI
servers:
- url: https://pos.moniepoint.com
  description: Production
security:
- BasicAuth: []
tags:
- name: Single Transfers
  description: Initiate, authorize, and query single transfers.
paths:
  /api/v2/disbursements/single:
    post:
      summary: Monnify Initiate Single Transfer
      description: Initiate a single-bank-account payout. Requires beneficiary account name verified by Name Inquiry.
      operationId: initiateSingleTransfer
      tags:
      - Single Transfers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SingleTransferRequest'
      responses:
        '200':
          description: Transfer initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferEnvelope'
  /api/v2/disbursements/single/validate-otp:
    post:
      summary: Monnify Authorize Single Transfer OTP
      description: Submit the OTP returned to the merchant to authorize a pending transfer.
      operationId: authorizeSingleTransferOtp
      tags:
      - Single Transfers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthorizeTransferRequest'
      responses:
        '200':
          description: Transfer authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferEnvelope'
  /api/v2/disbursements/single/resend-otp:
    post:
      summary: Monnify Resend Transfer OTP
      operationId: resendTransferOtp
      tags:
      - Single Transfers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - reference
              properties:
                reference:
                  type: string
      responses:
        '200':
          description: OTP resent.
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestSuccessful:
                    type: boolean
                  responseMessage:
                    type: string
                  responseCode:
                    type: string
                  responseBody:
                    type: object
  /api/v2/disbursements/single/summary:
    get:
      summary: Monnify Get Single Transfer Status
      description: Look up the current status of a single transfer.
      operationId: getSingleTransferStatus
      tags:
      - Single Transfers
      parameters:
      - name: reference
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Transfer status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferEnvelope'
  /api/v2/disbursements/single/transactions:
    get:
      summary: Monnify List Single Transfers
      operationId: listSingleTransfers
      tags:
      - Single Transfers
      parameters:
      - name: pageNo
        in: query
        schema:
          type: integer
          default: 0
      - name: pageSize
        in: query
        schema:
          type: integer
          default: 10
      responses:
        '200':
          description: Single transfers page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransferPageEnvelope'
components:
  schemas:
    AuthorizeTransferRequest:
      type: object
      required:
      - reference
      - authorizationCode
      properties:
        reference:
          type: string
        authorizationCode:
          type: string
    Transfer:
      type: object
      properties:
        reference:
          type: string
        amount:
          type: number
        destinationAccountName:
          type: string
        destinationAccountNumber:
          type: string
        destinationBankCode:
          type: string
        currency:
          type: string
        status:
          type: string
          enum:
          - SUCCESS
          - FAILED
          - REVERSED
          - PENDING
          - OTP_EMAIL_DISPATCH
          - PENDING_AUTHORIZATION
        narration:
          type: string
        fee:
          type: number
        dateCreated:
          type: string
          format: date-time
    SingleTransferRequest:
      type: object
      required:
      - amount
      - reference
      - narration
      - destinationBankCode
      - destinationAccountNumber
      - currency
      - sourceAccountNumber
      properties:
        amount:
          type: number
        reference:
          type: string
          description: Unique merchant reference.
        narration:
          type: string
          maxLength: 100
        destinationBankCode:
          type: string
        destinationAccountNumber:
          type: string
        destinationAccountName:
          type: string
          description: Required as of March 2026 — must match the Name Inquiry result.
        currency:
          type: string
          example: NGN
        sourceAccountNumber:
          type: string
          description: Merchant wallet account number.
        async:
          type: boolean
        senderInformation:
          $ref: '#/components/schemas/SenderInformation'
    TransferEnvelope:
      type: object
      properties:
        requestSuccessful:
          type: boolean
        responseMessage:
          type: string
        responseCode:
          type: string
        responseBody:
          $ref: '#/components/schemas/Transfer'
    TransferPageEnvelope:
      type: object
      properties:
        requestSuccessful:
          type: boolean
        responseMessage:
          type: string
        responseCode:
          type: string
        responseBody:
          type: object
          properties:
            content:
              type: array
              items:
                $ref: '#/components/schemas/Transfer'
            number:
              type: integer
            size:
              type: integer
            totalElements:
              type: integer
            totalPages:
              type: integer
    SenderInformation:
      type: object
      description: Optional sender details (added October 2025).
      properties:
        fullName:
          type: string
        phoneNumber:
          type: string
        email:
          type: string
          format: email
        senderRef:
          type: string
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: Basic auth using API client id and client secret from the Moniepoint Business dashboard.