Moniepoint Transactions API

Initialize, charge, query, and list collection transactions.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

moniepoint-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Moniepoint POS Push Payment Authentication Transactions 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: Transactions
  description: Initialize, charge, query, and list collection transactions.
paths:
  /api/v1/merchant/transactions/init-transaction:
    post:
      summary: Monnify Initialize Transaction
      description: Create a pending transaction and return a checkoutUrl plus paymentReference.
      operationId: initializeTransaction
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InitializeTransactionRequest'
      responses:
        '200':
          description: Transaction initialized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEnvelope'
  /api/v1/merchant/bank-transfer/init-payment:
    post:
      summary: Monnify Pay With Bank Transfer
      description: Generate a one-time NUBAN to complete an initialized transaction by bank transfer.
      operationId: payWithBankTransfer
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayWithTransferRequest'
      responses:
        '200':
          description: Bank-transfer instructions returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEnvelope'
  /api/v1/merchant/cards/charge:
    post:
      summary: Monnify Charge Card
      description: Server-to-server card capture; returns secure-3D / OTP next step when required.
      operationId: chargeCard
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChargeCardRequest'
      responses:
        '200':
          description: Card charge processed or pending authorization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEnvelope'
  /api/v1/merchant/cards/otp/authorize:
    post:
      summary: Monnify Authorize OTP
      description: Submit the OTP returned by the cardholder to complete a card charge.
      operationId: authorizeOtp
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthorizeOtpRequest'
      responses:
        '200':
          description: Card charge authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEnvelope'
  /api/v1/merchant/cards/charge-card-token:
    post:
      summary: Monnify Charge Tokenized Card
      description: Charge a stored card token previously returned on a successful card collection.
      operationId: chargeCardToken
      tags:
      - Transactions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChargeCardTokenRequest'
      responses:
        '200':
          description: Tokenized card charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEnvelope'
  /api/v2/merchant/transactions/query:
    get:
      summary: Monnify Get Transaction Status
      description: Query a transaction by paymentReference or transactionReference.
      operationId: getTransactionStatus
      tags:
      - Transactions
      parameters:
      - name: paymentReference
        in: query
        schema:
          type: string
      - name: transactionReference
        in: query
        schema:
          type: string
      responses:
        '200':
          description: Transaction details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionEnvelope'
  /api/v1/transactions/search:
    get:
      summary: Monnify Search Transactions
      description: Paginated search across collection transactions by date range, status, and reference.
      operationId: searchTransactions
      tags:
      - Transactions
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 0
      - name: size
        in: query
        schema:
          type: integer
          default: 20
      - name: from
        in: query
        schema:
          type: string
          format: date
      - name: to
        in: query
        schema:
          type: string
          format: date
      - name: paymentStatus
        in: query
        schema:
          type: string
          enum:
          - PAID
          - OVERPAID
          - PARTIALLY_PAID
          - PENDING
          - FAILED
          - EXPIRED
      responses:
        '200':
          description: Paginated transaction page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionPageEnvelope'
components:
  schemas:
    TransactionPageEnvelope:
      type: object
      properties:
        requestSuccessful:
          type: boolean
        responseMessage:
          type: string
        responseCode:
          type: string
        responseBody:
          type: object
          properties:
            content:
              type: array
              items:
                $ref: '#/components/schemas/Transaction'
            number:
              type: integer
            size:
              type: integer
            totalElements:
              type: integer
            totalPages:
              type: integer
    Transaction:
      type: object
      properties:
        transactionReference:
          type: string
        paymentReference:
          type: string
        merchantName:
          type: string
        apiKey:
          type: string
        redirectUrl:
          type: string
        enabledPaymentMethod:
          type: array
          items:
            type: string
        checkoutUrl:
          type: string
          format: uri
        amount:
          type: number
        currencyCode:
          type: string
        paymentStatus:
          type: string
          enum:
          - PAID
          - OVERPAID
          - PARTIALLY_PAID
          - PENDING
          - FAILED
          - EXPIRED
        paidOn:
          type: string
          format: date-time
        paymentMethod:
          type: string
    AuthorizeOtpRequest:
      type: object
      required:
      - transactionReference
      - collectionChannel
      - tokenId
      - token
      properties:
        transactionReference:
          type: string
        collectionChannel:
          type: string
        tokenId:
          type: string
        token:
          type: string
          description: OTP returned by the cardholder's bank.
    InitializeTransactionRequest:
      type: object
      required:
      - amount
      - customerName
      - customerEmail
      - paymentReference
      - paymentDescription
      - contractCode
      - currencyCode
      properties:
        amount:
          type: number
          example: 1500
        customerName:
          type: string
          example: Jane Customer
        customerEmail:
          type: string
          format: email
        paymentReference:
          type: string
        paymentDescription:
          type: string
        contractCode:
          type: string
        currencyCode:
          type: string
          example: NGN
        redirectUrl:
          type: string
          format: uri
        paymentMethods:
          type: array
          items:
            type: string
            enum:
            - CARD
            - ACCOUNT_TRANSFER
            - USSD
            - PHONE_NUMBER
        incomeSplitConfig:
          type: array
          items:
            $ref: '#/components/schemas/IncomeSplit'
        metaData:
          type: object
          additionalProperties:
            type: string
    IncomeSplit:
      type: object
      properties:
        subAccountCode:
          type: string
        feePercentage:
          type: number
        splitAmount:
          type: number
        feeBearer:
          type: boolean
    TransactionEnvelope:
      type: object
      properties:
        requestSuccessful:
          type: boolean
        responseMessage:
          type: string
        responseCode:
          type: string
        responseBody:
          $ref: '#/components/schemas/Transaction'
    ChargeCardTokenRequest:
      type: object
      required:
      - cardToken
      - amount
      - customerName
      - customerEmail
      - paymentReference
      - contractCode
      properties:
        cardToken:
          type: string
        amount:
          type: number
        customerName:
          type: string
        customerEmail:
          type: string
          format: email
        paymentReference:
          type: string
        contractCode:
          type: string
        currencyCode:
          type: string
          default: NGN
    PayWithTransferRequest:
      type: object
      required:
      - transactionReference
      properties:
        transactionReference:
          type: string
        bankCode:
          type: string
    ChargeCardRequest:
      type: object
      required:
      - transactionReference
      - collectionChannel
      - card
      properties:
        transactionReference:
          type: string
        collectionChannel:
          type: string
          example: API_NOTIFICATION
        card:
          type: object
          required:
          - number
          - expiryMonth
          - expiryYear
          - pin
          - cvv
          properties:
            number:
              type: string
            expiryMonth:
              type: string
            expiryYear:
              type: string
            pin:
              type: string
            cvv:
              type: string
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: Basic auth using API client id and client secret from the Moniepoint Business dashboard.