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.

Moniepoint POS Push Payment API is one of 14 APIs that Moniepoint 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 POS, Terminals, Push Payments, and Acquiring. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

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' }