Mono DirectPay API

Direct bank payment collection.

OpenAPI Specification

mono-africa-directpay-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Mono Connect DirectPay API
  description: 'A grounded subset of the Mono open banking API for Africa. Mono lets businesses link customer bank accounts and read financial data, assess creditworthiness, collect direct bank payments (DirectPay), and verify identity (Lookup). Server-to-server requests authenticate with a secret key sent in the `mono-sec-key` header. Account linking is completed by the customer through the hosted Mono Connect widget; the widget returns a short-lived authorization code that is exchanged for a permanent account id used on all financial-data calls.


    Endpoint paths and methods here are grounded in the public Mono documentation at docs.mono.co (base host `https://api.withmono.com`, most endpoints under `/v2`; the account-number and Mashup Lookup endpoints are under `/v3`). Request and response bodies are modeled representatively - treat field-level schemas as illustrative and confirm exact payloads against the live reference before relying on them.'
  version: '2.0'
  contact:
    name: Mono
    url: https://mono.co
  x-provenance: Endpoint paths/methods grounded in docs.mono.co (2026-07-12). Request/response schemas are modeled and should be reconciled against the live API reference.
servers:
- url: https://api.withmono.com
  description: Mono production API host
security:
- monoSecKey: []
tags:
- name: DirectPay
  description: Direct bank payment collection.
paths:
  /v2/payments/initiate:
    post:
      operationId: initiatePayment
      tags:
      - DirectPay
      summary: Initiate payment
      description: Initiates a one-time DirectPay debit. Returns a payment reference and a widget URL (`mono_url`) the customer uses to complete the bank payment.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaymentInitiateRequest'
      responses:
        '200':
          description: A payment was initiated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentInitiateResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v2/payments/verify/{reference}:
    parameters:
    - name: reference
      in: path
      required: true
      description: The unique payment reference passed when initiating the payment.
      schema:
        type: string
    get:
      operationId: verifyPayment
      tags:
      - DirectPay
      summary: Verify payment status
      description: Verifies the status of a DirectPay payment by its reference. Give value only after this endpoint reports a successful status.
      responses:
        '200':
          description: Payment status and customer information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentStatus'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/payments:
    get:
      operationId: getPayments
      tags:
      - DirectPay
      summary: Fetch all payments
      description: Retrieves all DirectPay payments for your application.
      responses:
        '200':
          description: A list of payments.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PaymentStatus'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    PaymentInitiateRequest:
      type: object
      required:
      - amount
      - type
      - reference
      properties:
        amount:
          type: number
          description: Payment amount in the currency's minor unit.
        type:
          type: string
          example: onetime-debit
        method:
          type: string
          enum:
          - account
          - transfer
          - whatsapp
        description:
          type: string
        reference:
          type: string
          description: Unique payment reference used to verify the payment later.
        redirect_url:
          type: string
        customer:
          type: object
          properties:
            email:
              type: string
            phone:
              type: string
            name:
              type: string
        meta:
          type: object
    Error:
      type: object
      properties:
        status:
          type: string
        message:
          type: string
    PaymentStatus:
      type: object
      properties:
        status:
          type: string
        message:
          type: string
        data:
          type: object
          properties:
            id:
              type: string
            amount:
              type: number
            currency:
              type: string
            reference:
              type: string
            type:
              type: string
            created_at:
              type: string
              format: date-time
            customer:
              type: object
    PaymentInitiateResponse:
      type: object
      properties:
        status:
          type: string
        message:
          type: string
        data:
          type: object
          properties:
            id:
              type: string
            mono_url:
              type: string
            type:
              type: string
            amount:
              type: number
            reference:
              type: string
  responses:
    Unauthorized:
      description: The `mono-sec-key` is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    monoSecKey:
      type: apiKey
      in: header
      name: mono-sec-key
      description: Secret key for the application, found in the Mono dashboard. Sent on every server-to-server request in the `mono-sec-key` header. Use test keys in the sandbox and live keys in production.