Monnify Bills Payment API

Unified Biller Service for purchasing airtime and data, paying electricity and cable-TV bills, funding betting wallets, and paying education fees. List categories, billers, and biller items; validate the customer; process the bill; check status. Endpoints under /api/v1/bill-payment/.

Monnify Bills 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 Bills, Airtime, Data, Electricity, and Cable TV. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

monnify-bills-payment-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Monnify Bills Payment API
  description: >
    Unified Biller Service to purchase airtime and data, pay electricity
    and cable-TV bills, fund betting wallets, and pay education fees. The
    typical flow is List Categories → List Billers → List Biller Items →
    Validate Customer → Process Bill → Check Status.
  version: '1.0'
  contact:
    name: Monnify Developer Support
    url: https://developers.monnify.com
servers:
  - url: https://api.monnify.com
    description: Production
  - url: https://sandbox.monnify.com
    description: Sandbox
security:
  - BearerAuth: []
tags:
  - name: Bills Payment
    description: Bill categories, billers, validation, processing, and status.
paths:
  /api/v1/bill-payment/categories:
    get:
      summary: Monnify List Bill Categories
      operationId: listBillCategories
      tags: [Bills Payment]
      responses:
        '200':
          description: Categories list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestSuccessful: { type: boolean }
                  responseMessage: { type: string }
                  responseCode: { type: string }
                  responseBody:
                    type: array
                    items: { $ref: '#/components/schemas/BillCategory' }
  /api/v1/bill-payment/billers:
    get:
      summary: Monnify List Billers
      operationId: listBillers
      tags: [Bills Payment]
      parameters:
        - name: categoryCode
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Biller list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestSuccessful: { type: boolean }
                  responseMessage: { type: string }
                  responseCode: { type: string }
                  responseBody:
                    type: array
                    items: { $ref: '#/components/schemas/Biller' }
  /api/v1/bill-payment/biller-items:
    get:
      summary: Monnify List Biller Items
      operationId: listBillerItems
      tags: [Bills Payment]
      parameters:
        - name: billerCode
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Biller items list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestSuccessful: { type: boolean }
                  responseMessage: { type: string }
                  responseCode: { type: string }
                  responseBody:
                    type: array
                    items: { $ref: '#/components/schemas/BillerItem' }
  /api/v1/bill-payment/customer-validate:
    post:
      summary: Monnify Validate Bills Customer
      description: Validate a customer identifier (smart-card number, meter number, account number) against a biller.
      operationId: validateBillsCustomer
      tags: [Bills Payment]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [billerCode, billerItemCode, customerId]
              properties:
                billerCode: { type: string }
                billerItemCode: { type: string }
                customerId: { type: string }
      responses:
        '200':
          description: Customer validated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestSuccessful: { type: boolean }
                  responseMessage: { type: string }
                  responseCode: { type: string }
                  responseBody:
                    type: object
                    properties:
                      customerId: { type: string }
                      customerName: { type: string }
                      customerAddress: { type: string }
                      billerCode: { type: string }
                      billerItemCode: { type: string }
  /api/v1/bill-payment/process-bill:
    post:
      summary: Monnify Process Bill
      operationId: processBill
      tags: [Bills Payment]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [billerCode, billerItemCode, customerId, amount, reference]
              properties:
                billerCode: { type: string }
                billerItemCode: { type: string }
                customerId: { type: string }
                customerEmail: { type: string, format: email }
                amount: { type: number }
                reference: { type: string }
                narration: { type: string }
      responses:
        '200':
          description: Bill processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillEnvelope'
  /api/v1/bill-payment/status:
    get:
      summary: Monnify Get Bill Status
      operationId: getBillStatus
      tags: [Bills Payment]
      parameters:
        - name: reference
          in: query
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Bill status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillEnvelope'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    BillCategory:
      type: object
      properties:
        code: { type: string }
        name: { type: string }
        description: { type: string }
    Biller:
      type: object
      properties:
        billerCode: { type: string }
        billerName: { type: string }
        categoryCode: { type: string }
    BillerItem:
      type: object
      properties:
        billerItemCode: { type: string }
        billerItemName: { type: string }
        amount: { type: number }
        billerCode: { type: string }
        amountType: { type: string, enum: [FIXED, RANGE, FREE] }
    Bill:
      type: object
      properties:
        reference: { type: string }
        billerCode: { type: string }
        billerItemCode: { type: string }
        customerId: { type: string }
        amount: { type: number }
        narration: { type: string }
        token: { type: string, description: Electricity token, where applicable. }
        status: { type: string, enum: [PENDING, SUCCESS, FAILED] }
        dateProcessed: { type: string, format: date-time }
    BillEnvelope:
      type: object
      properties:
        requestSuccessful: { type: boolean }
        responseMessage: { type: string }
        responseCode: { type: string }
        responseBody: { $ref: '#/components/schemas/Bill' }