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/.

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