MTN Order Fulfillment

This API provides ability to digital channel to purchase different offers and make payment through Netbanking or Card Payments.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/order-fulfillment"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mtn-group-order-fulfillment.yml Raw ↑
swagger: '2.0'

info:
  version: '1.0.0'
  title: Order Fulfillment API
  description: >-
    This API provides ability to digital channel to purchase different offers and make payment through Netbanking or Card Payments.

host: api.mtn.com
basePath: /v1
schemes:
  - https
consumes:
  - application/json;charset=utf-8
produces:
  - application/json;charset=utf-8
securityDefinitions: 
  APIKeyAuth:
    type: apiKey
    name: x-API-Key
    in: header
  
security:
  - APIKeyAuth: []

tags:
  - name: OrderFulfillment

paths:
  /orderfulfillment:
    post:
      operationId: buyOffer
      summary: Provides ability to buy offer and make payment through Payment Gateway
      description: Provides ability to buy offer and make payment through Payment Gateway
      tags:
        - OrderFulfillment
      parameters:
        - name: order
          description: Describes the fields and attributes associated with order entity
          required: true
          in: body
          schema:
            $ref: '#/definitions/Order'
       
      
  
      responses:
        '201':
          description: Success
          schema:
            $ref: '#/definitions/OrderResponse'
        '400':
          description: Bad Request
          schema:
            $ref: '#/definitions/Error'
        '401':
          description: Unauthorized
          schema:
            $ref: '#/definitions/Error'
        '403':
          description: Forbidden
          schema:
            $ref: '#/definitions/Error'
        '404':
          description: Not Found
          schema:
            $ref: '#/definitions/Error'
        '405':
          description: Method Not allowed
          schema:
            $ref: '#/definitions/Error'
        '409':
          description: Conflict
          schema:
            $ref: '#/definitions/Error'
        '500':
          description: Internal Server Error
          schema:
            $ref: '#/definitions/Error' 

  
definitions:
  Order:
    type: object
    required:
      - eligibilityCheckFlag
      - extTransactionId
      - channelName
      - timestamp
    properties:
      customer:
        $ref: '#/definitions/customerRef'
      product:
        $ref: '#/definitions/productRef'
      
      timestamp:
        type: string
        description: Timestamp of order generation
        format: date-time
      eligibilityCheckFlag:
        type: boolean
        description: Flag determines if eligibiity check has to be performed or not. If eligibilty check is required then value should passed as "true" otherwise "false".
      extTransactionId:
        type: string
        description: Transaction Id of channel
        example: FB123456
      channelName:
        type: string
        description: Name of call intiating channel
        example: FB
        
  customerRef:
    type: object
    required:
      - customerId
      - customerName
    properties:
      customerId:
        type: string
        description : Customer who is purchasing
        example: 2349062059569
      beneficiaryId: 
        type: string
        description: Id of beneficiary for whom Customer wants to purchase, if purchase is for self , this value need not be populated
        example: 2349062059534
      customerName : 
        type: string
        description: Customer name who is purchasing
        example: Jack
      customerEmail :
        type: string
        description: Contact email id of Customer who is purchasing
        example: jack@mtn.com
  productRef:
    type: object
    required:
      - productId
      - productType
      - productPrice
    properties:
      productId:
        type: string
        description: Offer Id
        example: NACT_NG_Combo_20
      productName:
        type: string
        description: Offer Name
        example: Data and Voice Bundle 20
      productType:
        type: string
        description: Type of offers
        enum:
          - DataBundle
          - AirtimeTopUp
      productIsLoan:
        type: boolean
        description: A boolean to state if product is loaned. If loaned then "true" otherwise "false"
      productCurrency:
        type: string
        description: Currency in which payment has to be made
        example: "NGN"
      productPrice:
        type: number
        description: Price of Product
        example: 1000
        
  OrderResponse:
    type: object
    properties:
      statusCode:
        type: string
        description: HTTP error code extension
        example: "0000"
      customerId:
        type: string
        description: CustomerId provided in the input
        example: 2349062059569
      statusMessage:
        type: string
        description: Description of the processing result. Forexample incase there was an error, this will have the message showing the error that happened
        example: Success
      timeStamp:
        type: string
        description: Payment API call timestamp
        format: date-time
      transactionId:
            type: string
            description: This is the same transactionId that is sent in the request
            example: MTN12345678
      extTransactionId:
            type: string
            description: Channel Transaction Id
            example: FB123456
      data:
        type: object
        properties:
          PayPageLink:
            type: string
            description: Payment page redirection URL
            example: "https://paymentpage.com/pay"
 
  Error:
    required:
      - statusCode
      - statusMessage
    type: object
    properties:
      statusCode:
        type: string
        description: >-
          This is the MADAPI Canonical Error Code (it is 4 characters long and
          it is not the HTTP Status Code which is 3 characters long). Back-end
          system errors are mapped to specific canonical error codes which are
          returned. More information on these mappings can be found on the
          MADAPI Confluence Page 'Response Codes'
        example: '1000'
      statusMessage:
        type: string
        description: >-
          More details and corrective actions related to the error which can
          be shown to a client
      supportMessage:
        type: string
        description: >-
          Internal message meant for consumers of the API to troubleshoot the
          error (could possible include the back-end system error code in the
          message if it would be useful)
      transactionId:
        type: string
        description: This is the same transactionId that is sent in the request
      timestamp:
        type: string
        description: Timestamp of the error
        format: date-time