Moniepoint POS Push Payment API

Push payment-request flow for Moniepoint POS terminals. ISV partners send an authenticated push to a registered terminal serial number; the merchant taps to accept and the terminal completes a card or transfer collection routed through Moniepoint's acquiring rails. Authentication uses an API client ID / secret pair issued through the Moniepoint Business dashboard.

OpenAPI Specification

moniepoint-pos-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Moniepoint POS Push Payment 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: Push Payments
    description: Initiate push payments to a registered POS terminal.
paths:
  /api/v1/push-payment/request:
    post:
      summary: Moniepoint Push Payment Request
      description: >
        Push a payment request to a specific Moniepoint POS terminal. The
        terminal prompts the cashier to confirm and present the card or
        transfer instructions to the customer.
      operationId: pushPaymentRequest
      tags: [Push Payments]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PushPaymentRequest'
      responses:
        '200':
          description: Push accepted; terminal awaiting customer action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PushPaymentEnvelope'
  /api/v1/push-payment/status/{reference}:
    get:
      summary: Moniepoint Push Payment Status
      operationId: pushPaymentStatus
      tags: [Push Payments]
      parameters:
        - name: reference
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Payment status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PushPaymentEnvelope'
components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: Basic auth using API client id and client secret from the Moniepoint Business dashboard.
  schemas:
    PushPaymentRequest:
      type: object
      required: [terminalSerialNumber, amount, reference, currency]
      properties:
        terminalSerialNumber: { type: string }
        amount: { type: number }
        reference: { type: string, description: Unique ISV reference. }
        currency: { type: string, default: NGN }
        description: { type: string }
        callbackUrl: { type: string, format: uri }
        expiresIn: { type: integer, description: Seconds before the terminal cancels the request. }
    PushPayment:
      type: object
      properties:
        terminalSerialNumber: { type: string }
        reference: { type: string }
        amount: { type: number }
        currency: { type: string }
        status: { type: string, enum: [PENDING, ACCEPTED, COMPLETED, DECLINED, EXPIRED, FAILED] }
        responseCode: { type: string }
        responseMessage: { type: string }
        paymentMethod: { type: string, enum: [CARD, TRANSFER] }
        dateCreated: { type: string, format: date-time }
        completedAt: { type: string, format: date-time }
    PushPaymentEnvelope:
      type: object
      properties:
        requestSuccessful: { type: boolean }
        responseMessage: { type: string }
        responseCode: { type: string }
        responseBody: { $ref: '#/components/schemas/PushPayment' }