openapi: "3.0.3"
info:
title: Monnify API
version: "1.0"
description: |
### Get Started
The Monnify API provides extensive access to the features available on our dashboard,
enabling you to leverage them for your own application.
- Create a Monnify account on https://www.monnify.com
- Obtain the required API keys on the developers section of the dashboard
> [!IMPORTANT]
Please note that the Monnify API is secured through Basic
Authentication or OAuth (Bearer Tokens).
#### Public Test Credentials
- APIKEY: `MK_TEST_GC3B8XG2XX`
- Secret Key: `A663NRZA544DDPEM7KDN7Z8HRV6YXD8S`
- Contract Code: ` 5867418298`
servers:
- url: https://sandbox.monnify.com
- url: https://api.monnify.com
tags:
- name: Authentication
description: >-
This collection enables merchants to authenticate their keys for requests to the
Monnify API
- name: Transactions
description: >-
This collection enables merchants to initiate and confirm status of transactions on the Monnify
- name: Transfers (Disbursement)
description: >-
This collection enables merchants to perform all disbursement operations on the Monnify API
> [!IMPORTANT]
Please note that the usage of the **TRANSFER** API is only available for merchants who meet the regulatory requirements for it.
Kindly contact sales@monnify.com to get access to this feature.
- name: Customer Reserved Account
description: >-
This collection enables merchants to create and manage reserved accounts for their customers
- name: Direct Debit
description: >-
This collection enables merchants to create and manage direct debit mandates for their customers
- name: Invoice
description: >-
This collection enables merchants to create and manage invoices for their customers
- name: Recurring Payment
description: >-
This collection enables merchants to create and manage recurring payments for their customers
- name: Sub Accounts
description: >-
This collection enables merchants to create and manage sub accounts on an integration.
> [!IMPORTANT]
Please note that usage of this API category in live environment requires approval from your relationship manager,
kindly reach out to them or contact sales@monnify.com to get approval for this feature.
- name: Limit Profile
description: >-
This collection enables merchants to create and manage limit profiles for their customers
- name: Refund
description: >-
This collection enables merchants to Initiate and manage refunds for their customers
- name: Settlements
description: >-
This collection enables merchants to view and manage settlements on their integration
- name: Verification APIs
description: >-
This collection enables merchants to verify the identifies of their customers
> [!IMPORTANT]
Please note that API category can only be used in Live environment. The sample responses here
mirrors the expected response from the API and can be used to setup workflows in your application.
- name: Bills Payment APIs
description: >-
API for integrating with the Bills Payment service. This documentation provides a detailed overview of the available endpoints, including examples for requests and responses.
> [!IMPORTANT]
By default this is not active for all Monnify Merchants, to activate, kindly reach out to integration-support@monnify.com via email, and it’ll be activated for you.
- name: Others
description: >-
This collection contains endpoints for other miscellaneous operations on the Monnify platform
- name: Wallet
description: >-
This collection enables merchants create and manage subwallets for their
customers
> [!IMPORTANT]
Please note that usage of this API category in live environment requires approval from your relationship manager,
kindly reach out to them or contact sales@monnify.com to get approval for this feature.
- name: Paycode API
description: >-
This collection enables merchants to create and manage PayCodes for their
customers
paths:
/api/v1/auth/login:
post:
tags:
- Authentication
summary: Generate Access Token
description: >-
This endpoint generates an access token that would be used to authenticate
all other endpoints.
security:
- basicAuth: [] # Define the security scheme directly here
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
Basic authentication using apiKey and secretKey passed as a base64 string. `'Basic base64(apiKey:secretKey)'`.
example: Basic TUtfVEVTVF9HQzNCOFhHMlhYOkE2NjNOUlpBNTQ0RERQRU03S0RON1o4SFJWNllYRDhT
responses:
"200 - OK":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/AuthResponseSuccess"
"401 - Invalid Token":
description: Failed Response due to Invalid Token
content:
application/json:
schema:
$ref: "#/components/schemas/AuthResponseError"
"401 - No header":
description: Failed Response due to no header provided
content:
application/json:
schema:
$ref: "#/components/schemas/AuthResponseNoHeaderError"
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
Basic authentication using apiKey and secretKey.
The Authorization header must contain 'Basic base64(apiKey:secretKey)'.
Example: Authorization: Basic bXlBcGlLZXk6bXlTZWNyZXRLZXk=
/api/v1/merchant/transactions/init-transaction:
post:
tags:
- Transactions
summary: Initialize Transaction
description: >-
This endpoint initialises the transaction that would be used for card
payments and dynamic transfers. In sandbox mode, You can use our [Web Similator](https://websim.sdk.monnify.com/#/bankingapp) to complete this transaction via the Bank transfer option.
> [!IMPORTANT]
**NOTE**: It is important to confirm that the values returned by this endpoint (and the SDK) corresponds to the values you provided in the request payload, as bad actors can intercept the request and make alterations to values such as the transaction amount.
security:
- bearerAuth: [] # Define the security scheme directly here
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/InitializeTransactionRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/InitializeTransactionSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/merchant/bank-transfer/init-payment:
post:
tags:
- Transactions
summary: Pay With Bank Transfer
description: >-
This endpoint generates a dynamic account number and its associated bank
for one time payment.
security:
- bearerAuth: [] # Define the security scheme directly here
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/InitBankTransferPaymentRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/InitBankTransferPaymentSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/merchant/cards/charge:
post:
tags:
- Transactions
summary: Charge a Card
description: >-
Initiate a charge on a card.
#### Test Card Info:
+ Card Without OTP: `4111111111111111 10/2025 1234 123`
+ Card With OTP: `5060995994247093 12/2025 1234 123`
+ Card With 3DS: `4000000000000002 12/2025 1234 123`
+ Failed Card: `4111111111111110 10/2025 1234 123`
security:
- bearerAuth: [] # Define the security scheme directly here
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ChargeRequest"
responses:
"200":
description: Successful charge
content:
application/json:
schema:
$ref: "#/components/schemas/ChargeResponse"
examples:
Successful:
value:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
status: "SUCCESS"
message: "Transaction Successful"
transactionReference: "MNFY|99|20220725110839|000256"
paymentReference: "1234567890-abcdef" # Example
authorizedAmount: 100
OTP_Required:
value:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
status: "OTP_AUTHORIZATION_REQUIRED"
message: "OTP Authorization required"
otpData:
id: "100.00-b66bef0aa8e660863c4e1177a08fefba"
message: "Please enter OTP. Use 123456 as token"
authData: "5060995994247093"
transactionReference: "MNFY|67|20220725114150|000284"
paymentReference: "12-3---031kls0a--dkad"
authorizedAmount: 100
_3DS_Required:
value:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
status: "BANK_AUTHORIZATION_REQUIRED"
message: "3D Secure Authorization required"
secure3dData:
id: "100.00-59077a3e5157fae7ca9dd260d911ccbb"
redirectUrl: "http://localhost:10001"
transactionReference: "MNFY|65|20220725114351|000289"
paymentReference: "12-3-031kls0a--dkad"
authorizedAmount: 100
"400":
description: Bad Request (e.g., invalid card number)
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/merchant/cards/otp/authorize:
post:
tags:
- Transactions
summary: Authorize OTP
description: >-
The endpoint authorizes an OTP to complete a charge on a card.
security:
- bearerAuth: [] # Define the security scheme directly here
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/AuthorizeOTPRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/AuthorizeOTPSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/sdk/cards/secure-3d/authorize:
post:
tags:
- Transactions
summary: Authorize 3DS Card
description: >-
This endpoint authorizes charge on a card that uses 3DS Secure
Authentication.
security:
- bearerAuth: [] # Define the security scheme directly here
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Authorize3DSCardRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/Authorize3DSCardSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: Unprocessable Entity.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/transactions/search:
get:
tags:
- Transactions
summary: Get All Transactions
description: >-
This endpoint returns a list of transactions carried out on your
integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: page
in: query
schema:
type: string
description: The number of page of to be retrieved. It starts from 0.
example: Integer
- name: size
in: query
schema:
type: string
description: The Size of transactions to be returned per page.
example: Integer
- name: paymentReference
in: query
schema:
type: string
description: Unique reference generated by merchant for each transaction.
example: String
- name: transactionReference
in: query
schema:
type: string
description: >-
Unique transaction reference generated by Monnify for each
transaction
example: String
- name: fromAmount
in: query
schema:
type: string
description: >-
A number indicating minimum amount for the transactions to be
returned
example: Float
- name: toAmount
in: query
schema:
type: string
description: >-
A number indicating maximum amount for the transactions to be
returned
example: Float
- name: amount
in: query
schema:
type: string
description: A number indicating exact amount for the transactions to be returned
example: Float
- name: customerName
in: query
schema:
type: string
description: Name of customer for the transactions to be returned
example: String
- name: customerEmail
in: query
schema:
type: string
description: Email of customer for the transactions be returned.
example: String
- name: paymentStatus
in: query
schema:
type: string
description: Transaction status for transactions to be returned
example: String
- name: from
in: query
schema:
type: string
description: Time for transactions to be retrieved.
example: Timestamp
- name: to
in: query
schema:
type: string
description: The maximum time for transactions to be retrieved.
example: Timestamp
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionSearchResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/transactions/{transactionReference}:
get:
tags:
- Transactions
summary: Get Transaction Status
description: |-
This endpoint returns the status of a transaction
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: transactionReference
in: path
required: true
schema:
type: string
description: URL encoding of the transaction reference.
example: "MNFY%7C67%7C20220725111957%7C000283"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionStatusResponse"
"404":
description: Transaction not found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/merchant/transactions/query:
get:
tags:
- Transactions
summary: Get Transaction Status By Reference
description: |
This endpoint returns the status of a transaction using either the Monnify transaction reference or the merchant's payment reference as query parameters.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: transactionReference
in: query
schema:
type: string
description: The Monnify generated reference URL encoded.
example: "MNFY%7C67%7C20220725111957%7C000283"
- name: paymentReference
in: query
schema:
type: string
description: The merchant generated reference URL encoded.
example: "12-3---03--1kls0a--dkad"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/TransactionStatusResponse"
"404":
description: Transaction not found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/single:
post:
tags:
- Transfers (Disbursement)
summary: Initiate Transfer (Single)
description: >-
This endpoint initiats a transfer to specified bank account.
> [!IMPORTANT]
Please note that the usage of the Transfer feature is only available for merchants who meet the regulatory requirements for it.
Kindly contact sales@monnify.com to get access to this feature.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateTransferRequest"
responses:
"200 (With OTP)":
description: Successful response for merchants with OTP requirement (default)
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateTransferOTPResponse"
"200 (Without OTP)":
description: Successful response for merchants who have disabled their OTP.
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateTransferSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/batch:
post:
tags:
- Transfers (Disbursement)
summary: Initiate Transfer (Bulk)
description: >-
This endpoint allows merchant to initiate Bulk Transfer transactions.
> [!IMPORTANT]
Please note that the usage of the Transfer feature is only available for merchants who meet the regulatory requirements for it.
Kindly contact sales@monnify.com to get access to this feature.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateBulkTransferRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateBulkTransferSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/single/validate-otp:
post:
tags:
- Transfers (Disbursement)
summary: Authorize Single Transfers
description: >-
This endpoint authorizes single transfers on your integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AuthorizeTransferRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateTransferSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/batch/validate-otp:
post:
tags:
- Transfers (Disbursement)
summary: Authorize Bulk Transfers
description: >-
This endpoint authorizes bulk transfers on your integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AuthorizeTransferRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateBulkTransferSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/single/resend-otp:
post:
tags:
- Transfers (Disbursement)
summary: Resend OTP (Single)
description: >-
This endpoint generates a new OTP in the event that there were
challenges with the former OTP sent.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ResendOTPRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/ResendOTPSuccessResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/batch/resend-otp:
post:
tags:
- Transfers (Disbursement)
summary: Resend OTP (Bulk)
description: >-
This endpoint generates a new OTP in the event that there were challenges with the former OTP sent.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ResendOTPRequestBulk"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/ResendOTPSuccessResponseBulk"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/single/summary:
get:
tags:
- Transfers (Disbursement)
summary: Single Transfer Status
description: >-
This endpoint verifies the status of a single transfer on your
integration.
**Transaction States:**
- PENDING
- SUCCESS
- FAILED
- REVERSED
- PENDING_AUTHORIZATION
- OTP_EMAIL_DISPATCH_FAILED
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: reference
in: query
schema:
type: string
description: The reference used for the transfer
example: String
required: true
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/SingleTransferStatusResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: Transfer not found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/single/transactions:
get:
tags:
- Transfers (Disbursement)
summary: List All Single Transfers
description: >-
This endpoint returns the list of all single transfers made on your
integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: pageSize
in: query
schema:
type: integer
description: The number of transfer records to return
example: Integer
- name: pageNo
in: query
schema:
type: integer
description: A number specifying what page of transfers to be retrieved
example: 3
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/ListSingleTransfersResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/bulk/transactions:
get:
tags:
- Transfers (Disbursement)
summary: List All Bulk Transfers
description: >-
This endpoint returns the list of all bulk transfers made on your
integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: pageSize
in: query
schema:
type: integer
description: The number of transfer records to return
example: Integer
- name: pageNo
in: query
schema:
type: integer
description: A number specifying what page of transfers to be retrieved
example: Integer
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/ListBulkTransfersResponse"
/api/v2/disbursements/bulk/{batchReference}/transactions:
get:
tags:
- Transfers (Disbursement)
summary: Bulk Transfer Status
description: >-
This endpoint verifies the status of a bulk transfer on your
integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: batchReference
in: path
schema:
type: string
required: true
description: A unique reference identifying the batch disbursement.
example: "batch-ref-001"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/BulkTransferTransactionsResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: Batch not found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/batch/summary:
get:
tags:
- Transfers (Disbursement)
summary: Bulk Batch Summary
description: >-
This endpoint provides the summary of a completed batch transaction.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: reference
in: query
schema:
type: string
required: true
description: A unique reference identifying the batch disbursement.
example: "batch-ref-001"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/BulkBatchSummaryResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"404":
description: Batch not found.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/search-transactions:
get:
tags:
- Transfers (Disbursement)
summary: Search Disbursement Transactions
description: >-
This endpoint returns the list of all disbursement transactions.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: sourceAccountNumber
in: query
schema:
type: string
required: true
description: The merchant's WALLET ACCOUNT NUMBER, this parameter is mandatory.
example: "3934178936"
- name: pageSize
in: query
schema:
type: integer
description: The number of records to return.
example: 10
- name: pageNo
in: query
schema:
type: integer
description: The current page from the total.
example: 0
- name: startDate
in: query
schema:
type: string
format: unix-timestamp
description: A timestamp value specifying the date to start filtering disbursement transactions by the createdAt field.
example: "1756767600000"
- name: endDate
in: query
schema:
type: string
format: unix-timestamp
description: A timestamp value specifying the date to stop filtering disbursement transactions by the createdAt field.
example: "1756767600000"
- name: amountFrom
in: query
schema:
type: string
description: A number specifying the lower bound for filtering the transactions by the amount field.
example: "200"
- name: amountTo
in: query
schema:
type: string
description: A number specifying the upper bound for filtering the transactions by the amount field.
example: "1300"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/SearchDisbursementTransactionsResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/wallet-balance:
get:
tags:
- Transfers (Disbursement)
summary: Get Wallet Balance
description: >-
This endpoint returns the available balance in your monnify wallet.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountNumber
in: query
schema:
type: string
required: true
description: The merchant's WALLET ACCOUNT NUMBER, this parameter is mandatory.
example: "3934178936"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetWalletBalanceResponse"
"400":
description: Bad request.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/bank-transfer/reserved-accounts:
post:
tags:
- Customer Reserved Account
summary: Create Reserved Account(General)
description: >-
This endpoint allows the creation of dedicated virtual accounts for your
customers.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateReservedAccountRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/CreateReservedAccountResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: Unprocessable Entity
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts:
post:
tags:
- Customer Reserved Account
summary: Create Reserved Account(Invoice)
description: >-
This endpoint allows the creation of an invoiced reserved account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateInvoiceReservedAccountRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/CreateInvoiceReservedAccountSuccessResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
"422":
description: Unprocessable Entity
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/bank-transfer/reserved-accounts/{accountReference}:
get:
tags:
- Customer Reserved Account
summary: Get Reserved Account Details
description: >-
This endpoint returns details of an account reserved for a customer
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountReference
description: The unique reference used in creating the reserved account.
in: path
schema:
type: string
required: true
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetReservedAccountDetailsSuccessResponse"
"404":
description: Reserved account not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/add-linked-accounts/{accountReference}:
put:
tags:
- Customer Reserved Account
summary: Add Linked Accounts
description: >-
This endpoint links accounts with another partner bank to an existing
customer.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountReference
description: The unique reference used in creating the reserved account.
in: path
schema:
type: string
required: true
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AddLinkedAccountsRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/AddLinkedAccountsSuccessResponse"
"404":
description: Reserved account not found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/update-customer-bvn/{reservedAccountReference}:
put:
tags:
- Customer Reserved Account
summary: Update BVN for a Reserve Account
description: >-
This endpoint updates BVN of customers reserved account
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: reservedAccountReference
in: path
description: The unique reference used in creating the reserved account.
schema:
type: string
required: true
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateBvnRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateBvnSuccessResponse"
"400":
description: Invalid BVN provided
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/update-payment-source-filter/{accountReference}:
put:
tags:
- Customer Reserved Account
summary: Allowed Payment Source(s)
description: >-
This endpoint manages accounts that can fund a reserved account using
either BVNs, Account Name or Account Number.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountReference
in: path
description: The unique reference used in creating the reserved account.
schema:
type: string
required: true
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/AllowedPaymentSourcesRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/AllowedPaymentSourcesSuccessResponse"
"400":
description: Invalid request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/update-income-split-config/{accountReference}:
put:
tags:
- Customer Reserved Account
summary: Updating Split Config for Reserved Account
description: >-
This endpoint updates the split config of a customer reserved account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountReference
in: path
schema:
type: string
required: true
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/UpdateSplitConfigRequestItem"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateSplitConfigSuccessResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/reference/{accountReference}:
delete:
tags:
- Customer Reserved Account
summary: Deallocating a reserved account
description: >-
This endpoint allows you to deallocate/delete already created a reserved
account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountReference
in: path
schema:
type: string
required: true
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/DeallocateAccountSuccessResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/transactions:
get:
tags:
- Customer Reserved Account
summary: Get Reserved Account Transactions
description: >-
This endpoint returns the list of all transactions done on a reserved
account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountReference
in: query
required: true
schema:
type: string
description: The unique reference used in creating the reserved account.
- name: page
in: query
required: false
schema:
type: integer
description: The page of data you want returned by Monnify (Starts from 0).
default: 0
- name: size
in: query
required: false
schema:
type: integer
description: The number of records you want returned in a page.
default: 10
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetTransactionsSuccessResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/{accountReference}/kyc-info:
put:
tags:
- Customer Reserved Account
summary: Update KYC Info
description: |
This endpoint links customers' BVN/NIN to their respective reserved accounts.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountReference
in: path
required: true
schema:
type: string
description: The account reference linked to the reserved account being updated.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateKycInfoRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateKycInfoSuccessResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/invoice/create:
post:
tags:
- Invoice
summary: Create an Invoice
description: >-
This endpoint enables merchant to create an invoice.
> [!IMPORTANT]
**NOTE**: When creating a Static Invoice, the `accountReference` key is compulsory. Excluding it would create a Dynamic Invoice.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateInvoiceRequest"
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/CreateInvoiceSuccessResponse"
"422":
description: Unprocessable Entity
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/invoice/{invoiceReference}/details:
get:
tags:
- Invoice
summary: View Invoice Details
description: >-
This endpoint returns details of an invoice on your integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: invoiceReference
in: path
required: true
schema:
type: string
description: The unique reference used in creating the invoice.
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/ViewInvoiceDetailsSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/invoice/all:
get:
tags:
- Invoice
summary: Get All Invoices
description: >-
This endpoint returns the list of all the invoice available on your
integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetAllInvoicesSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/invoice/{invoiceReference}/cancel:
delete:
tags:
- Invoice
summary: Cancel an Invoice
description: This endpoint cancels an Invoice on your integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: invoiceReference
in: path
schema:
type: string
required: true
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/CancelInvoiceSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/merchant/cards/charge-card-token:
post:
tags:
- Recurring Payment
summary: Charge Card Token
description: >-
This endpoint allows you to charge an already tokenized card with it’s
card token.
> [!IMPORTANT]
**NOTE**: The customer email address used in the first successful charge
should be stored along with the card token.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ChargeCardTokenRequest"
responses:
"200":
description: Successful card charge
content:
application/json:
schema:
$ref: "#/components/schemas/ChargeCardTokenSuccessResponse"
"404":
description: Not Found (e.g., Invalid card token)
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/direct-debit/mandate/create:
post:
tags:
- Direct Debit
summary: Create Mandate
description: This endpoint initiates the creation of a mandate.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateMandateRequest"
responses:
"200":
description: Successful mandate creation
content:
application/json:
schema:
$ref: "#/components/schemas/CreateMandateSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/direct-debit/mandate/:
get:
tags:
- Direct Debit
summary: Get Mandate Status
description: This endpoint retrieves the details of a created mandate.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: mandateReferences
in: query
required: true
schema:
type: string
description: Merchants generated reference to identify a mandate.
responses:
"200":
description: Successful mandate retrieval
content:
application/json:
schema:
$ref: "#/components/schemas/GetMandateStatusSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/direct-debit/mandate/debit:
post:
tags:
- Direct Debit
summary: Debit Mandate
description: This endpoint debits an active mandate.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/DebitMandateRequest"
responses:
"200":
description: Successful mandate debit
content:
application/json:
schema:
$ref: "#/components/schemas/DebitMandateSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/direct-debit/mandate/debit-status:
get:
tags:
- Direct Debit
summary: Get Debit Status
description: This endpoint gets the status of a debited mandate.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: paymentReference
in: query
required: true
schema:
type: string
description: The payment reference used in debiting a mandate.
responses:
"200":
description: Successful debit status retrieval
content:
application/json:
schema:
$ref: "#/components/schemas/GetDebitStatusSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/direct-debit/mandate/cancel-mandate/{mandateCode}:
patch:
tags:
- Direct Debit
summary: Update Mandate (Cancel Mandate)
description: This endpoint cancels/deactivates a mandate.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: mandateCode
in: path
required: true
schema:
type: string
description: Monnify generated mandate identifier.
responses:
"200":
description: Successful mandate cancellation
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateMandateSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/sub-accounts:
post:
tags:
- Sub Accounts
summary: Create Sub Account(s)
description: >-
This endpoint allows you to create a sub account to enable the spliting
of payments between different accounts.
> [!IMPORTANT]
Please note that usage of this API in live environment requires approval from your relationship manager,
kindly reach out to them or contact sales@monnify.com to get approval for this feature.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CreateSubAccountRequest"
responses:
"200":
description: Successful sub account creation
content:
application/json:
schema:
$ref: "#/components/schemas/CreateSubAccountSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
get:
tags:
- Sub Accounts
summary: Get Sub Accounts
description: >-
This endpoint returns the list of sub accounts that have been created on
your integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetSubAccountsSuccessResponse"
put:
tags:
- Sub Accounts
summary: Update Sub Account
description: >-
This endpoint updates the details of an existing sub account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateSubAccountRequest"
responses:
"200":
description: Successful sub account update
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateSubAccountSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/sub-accounts/{subAccountCode}:
delete:
tags:
- Sub Accounts
summary: Delete Sub Account
description: >-
This endpoint deletes a sub account on your integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: subAccountCode
in: query
schema:
type: string
description: The subAccountCode of the sub account you want to delete.
example: String
- name: subAccountCode
in: path
schema:
type: string
required: true
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/DeleteSubAccountSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/limit-profile/:
post:
tags:
- Limit Profile
summary: Create Limit Profile(s)
description: >-
This endpoint creates limit profiles on a customer's account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateLimitProfileRequest"
responses:
"200":
description: Successful limit profile creation
content:
application/json:
schema:
$ref: "#/components/schemas/CreateLimitProfileSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
get:
tags:
- Limit Profile
summary: Get Limit Profiles
description: >-
This endpoint returns the list of all Limit Profiles that have been
created for your customers.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
responses:
"200":
description: Successful limit profiles retrieval
content:
application/json:
schema:
$ref: "#/components/schemas/GetLimitProfilesSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/limit-profile/{limitProfileCode}:
put:
tags:
- Limit Profile
summary: Update Limit Profile
description: >-
This endpoint updates the information on an existing Limit Profile.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: limitProfileCode
in: path
required: true
schema:
type: string
description: The generated limit profile code.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateLimitProfileRequest"
responses:
"200":
description: Successful limit profile update
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateLimitProfileSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/bank-transfer/reserved-accounts/limit:
post:
tags:
- Limit Profile
summary: Reserve Account with Limit
description: >-
This endpoint reserves an account for your customers with a transaction
limit profile on it.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReserveAccountWithLimitRequest"
responses:
"200":
description: Successful reserved account creation with limit
content:
application/json:
schema:
$ref: "#/components/schemas/ReserveAccountWithLimitSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
put:
tags:
- Limit Profile
summary: Update Reserve Account Limit
description: >-
This endpoint updates the information on an existing Limit Profile for a
Reserved Account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateReserveAccountLimitRequest"
responses:
"200":
description: Successful reserved account limit update
content:
application/json:
schema:
$ref: "#/components/schemas/UpdateReserveAccountLimitSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/refunds/initiate-refund:
post:
tags:
- Refund
summary: Initiate Refund
description: >-
This endpoint allows you to Initiate a refund.
> [!IMPORTANT]
Please note that usage of this API in live environment requires approval from your relationship manager,
kindly reach out to them or contact sales@monnify.com to get approval for this feature.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateRefundRequest"
responses:
"200":
description: Successful refund initiation
content:
application/json:
schema:
$ref: "#/components/schemas/InitiateRefundSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/refunds/{refundReference}:
get:
tags:
- Refund
summary: Get Refund Status
description: >-
This endpoint returns the status of an initiated refund.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: refundReference
in: path
required: true
schema:
type: string
description: The refund reference used for the refund.
responses:
"200":
description: Successful refund status retrieval
content:
application/json:
schema:
$ref: "#/components/schemas/GetRefundStatusSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/refunds:
get:
tags:
- Refund
summary: Get All Refunds
description: >-
This endpoint returns the list of all refunds available on your
integration.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: page
in: query
schema:
type: string
description: >-
An integer specifying the page of transactions to be retrieved. Page
number starts from 0.
example: Integer
- name: size
in: query
schema:
type: string
description: >-
An integer specifying the size of transactions to be returned per
page.
example: Integer
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetAllRefundsSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/transactions/find-by-settlement-reference:
get:
tags:
- Settlements
summary: Get Transactions By Settlement Reference
description: |-
This endpoint returns all transactions that made up a settlement.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: reference
in: query
schema:
type: string
description: The settlement reference
example: XUY3FHWRJP3CEM4N17BA
required: true
- name: page
in: query
schema:
type: string
description: The current page of the record
example: Integer
- name: size
in: query
schema:
type: string
description: The number of transactions per page
example: Integer
responses:
"200":
description: Successful transaction retrieval by settlement reference
content:
application/json:
schema:
$ref: "#/components/schemas/GetTransactionsBySettlementReferenceSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/settlement-detail:
get:
tags:
- Settlements
summary: Get Settlement Information for Transaction
description: >-
This endpoint returns settlement information on transactions made to
your settlement account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: transactionReference
in: query
schema:
type: string
required: true
description: The Monnify transaction reference of the desired transaction
example: MNFY%7C28%7C20220718162222%7C066201
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetSettlementInformationForTransactionSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v2/disbursements/account/validate:
get:
tags:
- Verification APIs
summary: Validate Bank Account
description: >-
This endpoint validates a Customer's NUBAN Account.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountNumber
in: query
required: true
schema:
type: string
description: The account number to be validated.
- name: bankCode
in: query
required: true
schema:
type: string
description: The bank code of the required account number.
responses:
"200":
description: Successful account validation
content:
application/json:
schema:
$ref: "#/components/schemas/ValidateBankAccountSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/vas/bvn-details-match:
post:
tags:
- Verification APIs
summary: BVN Information Verification
description: >-
This endpoint verifies the BVN information of your customers.
> [!IMPORTANT]
Please note that the this API is only available on **LIVE MODE** at the moment. The sample responses here
mirrors the expected response from the API and can be used to setup workflows in your application.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BVNVerificationRequest"
responses:
"200":
description: Successful BVN verification
content:
application/json:
schema:
$ref: "#/components/schemas/BVNVerificationSuccessResponse"
"99":
description: Invalid BVN provided
content:
application/json:
schema:
$ref: "#/components/schemas/BVNVerificationFailureResponse"
/api/v1/vas/bvn-account-match:
post:
tags:
- Verification APIs
summary: BVN and Account Name Match
description: >-
This endpoint verifies that the Bank verification number and the account
number supplied by a user match the BVN and account number linked to
that account.
> [!IMPORTANT]
Please note that the this API is only available on **LIVE MODE** at the moment. The sample responses here
mirrors the expected response from the API and can be used to setup workflows in your application.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/BVNAccountMatchRequest"
responses:
"200":
description: Successful BVN and account match
content:
application/json:
schema:
$ref: "#/components/schemas/BVNAccountMatchSuccessResponse"
"99":
description: Invalid BVN or account provided
content:
application/json:
schema:
$ref: "#/components/schemas/BVNAccountMatchFailureResponse"
/api/v1/vas/nin-details:
post:
tags:
- Verification APIs
summary: NIN Verification
description: >-
This endpoint verifies the supplied NIN of the customer.
> [!IMPORTANT]
Please note that the this API is only available on **LIVE MODE** at the moment. The sample responses here
mirrors the expected response from the API and can be used to setup workflows in your application.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/NINVerificationRequest"
responses:
"200":
description: Successful NIN verification
content:
application/json:
schema:
$ref: "#/components/schemas/NINVerificationSuccessResponse"
"400":
description: NIN not found
content:
application/json:
schema:
$ref: "#/components/schemas/NINVerificationFailureResponse"
/api/v1/vas/bills-payment/biller-categories:
get:
summary: Get Biller Categories
description: Retrieves a paginated list of all available biller categories, such as transportation, cable TV, and data services.
tags:
- Bills Payment APIs
security:
- bearerAuth: []
parameters:
- in: query
name: size
schema:
type: integer
default: 10
description: The number of categories to return per page.
- in: query
name: page
schema:
type: integer
default: 1
description: The page number to retrieve.
responses:
"200":
description: A list of biller categories.
content:
application/json:
schema:
$ref: "#/components/schemas/CategoryResponse"
example:
requestSuccessful: true
responseMessage: success
responseCode: "0"
responseBody:
content:
- code: TRANSPORTATION
name: TRANSPORTATION
- code: CABLE_TV
name: CABLE_TV
- code: DATA
name: DATA
totalElements: 8
size: 3
number: 1
empty: false
nextPage: 2
/api/v1/vas/bills-payment/billers:
get:
summary: List Billers
description: Retrieves a paginated list of all billers. You can optionally filter the list by a specific category code.
tags:
- Bills Payment APIs
security:
- bearerAuth: []
parameters:
- in: query
name: size
schema:
type: integer
default: 20
description: The number of billers to return per page.
- in: query
name: page
schema:
type: integer
default: 1
description: The page number to retrieve.
- in: query
name: category_code
schema:
type: string
description: The category code to filter billers by (e.g., 'CABLE_TV').
responses:
"200":
description: A list of billers.
content:
application/json:
schema:
$ref: "#/components/schemas/BillerResponse"
example:
requestSuccessful: true
responseMessage: success
responseCode: "0"
responseBody:
content:
- code: "biller-dstv"
name: "DSTV"
categories:
- code: "CABLE_TV"
name: "CABLE_TV"
- code: "biller-spectranet"
name: "Spectranet"
categories:
- code: "DATA"
name: "DATA"
totalElements: 66
size: 20
number: 1
empty: false
nextPage: null
/api/v1/vas/bills-payment/biller-products:
get:
summary: Get Biller Products
description: Retrieves a paginated list of products available for a specific biller by passing their biller code.
tags:
- Bills Payment APIs
security:
- bearerAuth: []
parameters:
- in: query
name: page
schema:
type: integer
default: 1
description: The page number to retrieve.
- in: query
name: size
schema:
type: integer
default: 20
description: The number of products to return per page.
- in: query
name: biller_code
schema:
type: string
description: The code of the biller to retrieve products for.
responses:
"200":
description: A list of biller products.
content:
application/json:
schema:
$ref: "#/components/schemas/ProductResponse"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
content:
- code: "11"
name: "Airtel Mobile Top up"
categories:
- code: "AIRTIME"
name: "AIRTIME"
billers:
- code: "AIRTEL"
name: "AIRTEL"
minAmount: null
maxAmount: null
price: null
priceType: "OPEN"
metadata:
volume: 0
duration: 1
productType:
code: "6"
name: "Airtime"
durationUnit: null
productCategory: null
- code: "19523"
name: "DataPlan 750MB"
categories:
- code: "DATA_BUNDLE"
name: "DATA_BUNDLE"
billers:
- code: "MTN"
name: "MTN"
minAmount: null
maxAmount: null
price: 500.0000
priceType: "FIXED"
metadata:
volume: 750
duration: 1
productType:
code: "9"
name: "Data"
durationUnit: WEEKLY
productCategory: DAILY
totalElements: 14
size: 5
number: 0
empty: false
nextPage: 1
/api/v1/vas/bills-payment/vend:
post:
summary: Process Bill Payment
description: Initiates a payment or vending transaction for a specific product, such as airtime top-up or a utility bill payment.
tags:
- Bills Payment APIs
security:
- bearerAuth: []
requestBody:
description: Details of the transaction to be initiated.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/VendRequest"
example:
productCode: "11"
customerId: "080123456789"
amount: 300
validationReference: "REF-MH0H27YL-966MVT"
emailAddress: "customer@example.com"
responses:
"200":
description: Successful vending transaction.
content:
application/json:
schema:
$ref: "#/components/schemas/VendResponse"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
vendReference: "REF-MH0H27YL-966MVT"
transactionReference: "MFBP251021121937dbf0"
vendStatus: "SUCCESS"
description: "Okay, purchase was successfully created."
vendAmount: 300
payableAmount: 310.00
commission: 10.00
customerId: "080123456789"
productCode: "11"
productName: "Airtel Mobile Top up"
billerCode: "AIRTEL"
billerName: "AIRTEL"
"400":
description: Bad Request, e.g., a required field like 'productCode' is missing.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
example:
requestSuccessful: false
responseMessage: "ProductCode is required"
responseCode: "99"
/api/v1/vas/bills-payment/requery:
get:
summary: Check Bill Payment Status
description: Checks and retrieves the final status of a previously initiated transaction using its unique reference.
tags:
- Bills Payment APIs
security:
- bearerAuth: []
parameters:
- in: query
name: reference
required: true
schema:
type: string
description: The unique reference of the transaction to requery.
responses:
"200":
description: Successful requery with transaction details.
content:
application/json:
schema:
$ref: "#/components/schemas/RequeryResponse"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
vendReference: "REF-MH0H27YL-966MVT"
transactionReference: "MFBP251021121937dbf0"
vendStatus: "SUCCESS"
description: "Okay, purchase was successfully created."
vendAmount: 300
payableAmount: 310.00
commission: 10.00
customerId: "080123456789"
productCode: "11"
productName: "Airtel Mobile Top up"
billerCode: "AIRTEL"
billerName: "AIRTEL"
"400":
description: Bad Request, the provided reference is invalid or poorly formatted.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
example:
requestSuccessful: false
responseMessage: "Please ensure that the details supplied in your request are appropriate."
responseCode: "99"
"404":
description: Transaction not found for the given reference.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
example:
requestSuccessful: false
responseMessage: "Transaction not found for reference: QA-MGB159DY-5Z2FJ9"
responseCode: "99"
/api/v1/vas/bills-payment/validate-customer:
post:
summary: Validate Customer
description: >-
Validates a customer's details (like a meter number or phone number) for a specific product before initiating a transaction.
> [!IMPORTANT]
**NOTE**: Some biller products require a validationReference during the Vend request, while others do not. After performing Customer Validation, check the vendInstruction field in the response. If requireValidationRef is true, you must include the provided validationReference when sending the Vend request. If requireValidationRef is false, omit validationReference from the Vend request. This ensures the correct handling of products that require additional verification (e.g., electricity meter validation) versus products that do not (e.g., airtime or open-price utilities).
tags:
- Bills Payment APIs
security:
- bearerAuth: []
requestBody:
description: The product and customer identifiers to validate.
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ValidateCustomerRequest"
example:
productCode: "11"
customerId: "080123456789"
responses:
"200":
description: Successful customer validation.
content:
application/json:
schema:
$ref: "#/components/schemas/ValidateCustomerResponse"
examples:
ValidationNotRequired:
summary: Validation without a required reference
value:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
priceType: "OPEN"
customerName: "+2349135914842"
vendInstruction:
requireValidationRef: false
ValidationRequired:
summary: Validation that returns a required reference
value:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
customerName: "Mr. John Doe"
priceType: "FIXED"
price: 44600
vendInstruction:
requireValidationRef: true
validationReference: "724707993771"
"400":
description: Bad Request, e.g., invalid customer ID or missing parameters.
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
example:
requestSuccessful: false
responseMessage: "Invalid MSISDN Provided"
responseCode: "99"
/api/v1/banks:
get:
tags:
- Others
summary: Get Banks
description: >-
This endpoint returns a list of all banks supported by Monnify for
collections and disbursements.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [Authentication*](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer 7
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/BankListSuccessResponse"
"401":
description: Failed Response
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/sdk/transactions/banks:
get:
tags:
- Others
summary: Get Banks With USSD Short Code
description: >-
This endpoint returns the list of all supported banks with their valid
USSD short code.
security:
- bearerAuth: [] # Define the security scheme directly here
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the **[Authentication](#tag/authentication/POST/api/v1/auth/login)** endpoint to generate one.
example: Bearer 7
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/BankListSuccessResponse"
"401":
description: Failed Response
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/disbursements/wallet:
post:
tags:
- Wallet
summary: Create Wallet
description: |
This endpoint enables a merchant to creates wallets for their customers
> [!IMPORTANT]
> Please note that the wallet creation is only available for merchants who
have been granted access to the wallet feature. Kindly contact sales@monnify.com
to get access to this feature.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer 7
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/CreateWalletRequest"
responses:
"200":
description: Wallet created successfully
content:
application/json:
schema:
$ref: "#/components/schemas/CreateWalletSuccessResponse"
"422":
description: Unprocessable Entity (Validation Error)
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
get:
tags:
- Wallet
summary: Get Wallets
description: >-
This endpoint returns all the wallets created by a merchant
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- in: query
name: walletReference
schema:
type: string
description: The unique identifier of the wallet
example: "ref16842048425966d"
- in: query
name: pageSize
schema:
type: integer
description: The number of wallet records to return
- in: query
name: pageNo
schema:
type: integer
description: A number specifying what page of wallets to be retrieved
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/GetWalletsResponse"
"401":
description: Unauthorized Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/disbursements/wallet/balance:
get:
tags:
- Wallet
summary: Wallet Balance
description: |-
This endpoint returns the balance associated with a wallet
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: walletReference
in: query
schema:
type: string
description: The unique identifier of the wallet
example: String
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/WalletBalanceResponse"
"401":
description: Unauthorized Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/disbursements/wallet/transactions:
get:
tags:
- Wallet
summary: Wallet Transactions
description: >-
This endpoint returns all the transactions performed by a wallet
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
- name: accountNumber
in: query
schema:
type: string
description: The walletAccountNumber
minLength: 10
maxLength: 10
example: 1234567890
- name: pageSize
in: query
schema:
type: string
description: The number of wallet records to return
example: 20
- name: pageNo
in: query
schema:
type: string
description: A number specifying what page of wallets to be retrieved
example: 3
responses:
"200":
description: Successful response
content:
application/json:
schema:
$ref: "#/components/schemas/WalletTransactionsResponse"
"401":
description: Unauthorized Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/paycode:
post:
tags:
- Paycode API
summary: Create Paycode
description: The endpoint allows merchant create paycodes via API.
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePaycodeRequest"
responses:
"200":
description: Successful paycode creation
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePaycodeSuccessResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
get:
tags:
- Paycode API
summary: Fetch Paycodes
description: This endpoint returns a history of generated Paycodes over a period of time using some search criteria.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer 7
- name: transactionReference
in: query
schema:
type: string
description: The Monnify transactionReference.
- name: beneficiaryName
in: query
schema:
type: string
description: The customer name.
- name: transactionStatus
in: query
schema:
type: string
description: The status of the paycode.
- name: from
in: query
schema:
type: integer
description: A unix timestamp for the start date being considered.
- name: to
in: query
schema:
type: integer
description: A unix timestamp for the end date being considered.
responses:
"200":
description: Successful paycode history retrieval
content:
application/json:
schema:
$ref: "#/components/schemas/FetchPaycodesSuccessResponse"
/api/v1/paycode/{paycodeReference}:
get:
tags:
- Paycode API
summary: Get Paycode
description: This endpoint returns paycode information for a given paycode reference.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer 7
- name: paycodeReference
in: path
required: true
schema:
type: string
description: The unique reference for the paycode.
responses:
"200":
description: Successful paycode retrieval
content:
application/json:
schema:
$ref: "#/components/schemas/GetPaycodeSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
delete:
tags:
- Paycode API
summary: Delete Paycode
description: This endpoint cancels or invalidates a generated Paycode.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer 7
- name: paycodeReference
in: path
required: true
schema:
type: string
description: The unique reference for the paycode.
responses:
"200":
description: Successful paycode deletion/cancellation
content:
application/json:
schema:
$ref: "#/components/schemas/CreatePaycodeSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/api/v1/paycode/{paycodeReference}/authorize:
get:
tags:
- Paycode API
summary: Get Clear Paycode
description: This endpoint is used to get an unmasked paycode information.
security:
- bearerAuth: []
parameters:
- in: header
name: Authorization
schema:
type: string
required: true
description: >-
This endpoint requires a valid JWT authorization token.
Use the [**Authentication**](#tag/authentication/POST/api/v1/auth/login) endpoint to generate one.
example: Bearer 7
- name: paycodeReference
in: path
required: true
schema:
type: string
description: The unique reference for the paycode.
responses:
"200":
description: Successful clear paycode retrieval
content:
application/json:
schema:
$ref: "#/components/schemas/GetPaycodeSuccessResponse"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
components:
securitySchemes:
BasicAuth:
type: http
scheme: basic
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
required: true
schemas:
AuthResponseSuccess:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: true
responseCode:
type: integer
description: A response code.
example: "success"
responseBody:
type: object
properties:
accessToken:
type: string
expiresIn:
type: integer
description: "expiry figure in seconds"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
accessToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTYyNzQwNjYwM30.7
expiresIn: 3600
AuthResponseError:
type: object
properties:
requestSuccessful:
type: boolean
example: "false"
responseCode:
type: integer
example: 99
responseMessage:
type: string
example:
requestSuccessful: false
responseCode: 99
responseMessage: ""
AuthResponseNoHeaderError:
type: object
properties:
requestSuccessful:
type: boolean
example: "false"
responseCode:
type: integer
example: 99
responseMessage:
type: string
example: "Unauthorized, supply authorization header"
example:
requestSuccessful: false
responseCode: 99
responseMessage: "Unauthorized, supply authorization header"
BankListSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: true
responseMessage:
type: string
description: A message describing the response.
example: "success"
responseCode:
type: string
description: The response code.
example: "0"
responseBody:
type: array
description: An array of objects with list of banks supported by Monnify.
items:
$ref: "#/components/schemas/Bank"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
- name: "Rolez Microfinance Bank"
code: "50515"
ussdTemplate: null
baseUssdCode: null
transferUssdTemplate: null
- name: "Access bank"
code: "044"
ussdTemplate: "*901*Amount*AccountNumber#"
baseUssdCode: "*901#"
transferUssdTemplate: "*901*AccountNumber#"
- name: "Kuda Microfinance Bank"
code: "50211"
ussdTemplate: null
baseUssdCode: "*5573#"
transferUssdTemplate: "*5573*AccountNumber#"
CreateWalletRequest:
type: object
properties:
walletReference:
type: string
description: A unique identifier for the wallet
example: "ref1684248425966"
walletName:
type: string
description: The desired wallet name
example: "Staging Wallet - ref1684248425966"
customerName:
type: string
description: The customer's name
example: "John Doe"
customerEmail:
type: string
description: The customer's email
example: "johndoe@example.com"
bvnDetails:
type: object
description: The customer's BVN details
properties:
bvn:
type: integer
description: The user's 11 digit bank verification number
minLength: 11
maxLength: 11
example: "22222222226"
bvnDateOfBirth:
type: string
format: date
description: The user's date of birth associated with the BVN
example: "1994-09-07"
CreateWalletSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: true
responseMessage:
type: string
description: A message describing the response.
example: "Success"
responseCode:
type: string
description: The response code.
example: "0"
responseBody:
type: object
description: The response body containing the wallet details
properties:
walletName:
type: string
description: The name of the wallet
example: "Staging Wallet - ref1684248425966"
walletReference:
type: string
description: The unique identifier for the wallet
example: "ref1684248425966"
customerName:
type: string
description: The customer's name
example: "John Doe"
customerEmail:
type: string
description: The customer's email
example: "johndoe@example.com"
feeBearer:
type: string
example: "SELF"
bvnDetails:
type: object
description: The customer's BVN details
properties:
bvn:
type: integer
description: The user's 11 digit bank verification number
minLength: 11
maxLength: 11
example: "22222222226"
bvnDateOfBirth:
type: string
format: date
example: "1994-09-07"
accountNumber:
type: string
description: The account number associated with the wallet
example: "1234567890"
accountName:
type: string
description: The account name associated with the wallet
example: "John Doe"
topUpAccountDetails:
type: object
description: The top-up account details
properties:
accountNumber:
type: string
description: The top-up account number
example: "1234567890"
accountName:
type: string
description: The top-up account name
example: "John Doe"
bankCode:
type: string
description: The top-up bank code
example: "50515"
bankName:
type: string
description: The top-up bank name
example: "Moniepoint MFB"
createdOn:
type: string
format: date-time
description: The date and time when the wallet was created
example: "2025-11-12T11:40:25.344+00:00"
WalletBalanceResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
availableBalance:
type: integer
ledgerBalance:
type: integer
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
availableBalance: 5000000000
ledgerBalance: 5000000000
GetWalletsResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
example: "success"
responseCode:
type: string
responseBody:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/Wallet"
pageable:
type: object
properties:
sort:
type: object
properties:
empty:
type: boolean
sorted:
type: boolean
unsorted:
type: boolean
offset:
type: integer
pageNumber:
type: integer
pageSize:
type: integer
paged:
type: boolean
unpaged:
type: boolean
last:
type: boolean
totalElements:
type: integer
totalPages:
type: integer
size:
type: integer
number:
type: integer
sort:
type: object
properties:
empty:
type: boolean
sorted:
type: boolean
unsorted:
type: boolean
first:
type: boolean
numberOfElements:
type: integer
empty:
type: boolean
WalletTransactionsResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/WalletTransactions"
pageable:
type: object
properties:
sort:
type: object
properties:
empty:
type: boolean
sorted:
type: boolean
unsorted:
type: boolean
offset:
type: integer
pageNumber:
type: integer
pageSize:
type: integer
paged:
type: boolean
unpaged:
type: boolean
last:
type: boolean
totalElements:
type: integer
totalPages:
type: integer
size:
type: integer
number:
type: integer
sort:
type: object
properties:
empty:
type: boolean
sorted:
type: boolean
unsorted:
type: boolean
first:
type: boolean
numberOfElements:
type: integer
empty:
type: boolean
WalletTransactions:
type: object
properties:
walletTransactionReference:
type: string
example: "MFDS60520251111091433348001YWN0D9_DEBIT_0"
monnifyTransactionReference:
type: string
example: "MFDS60520251111091433348001YWN0D9_DEBIT_0"
availableBalanceBefore:
type: number
example: 5000000000
availableBalanceAfter:
type: number
example: 4900000000
amount:
type: number
example: 1000000000
transactionDate:
type: string
format: date-time
example: "2025-11-11T08:14:33.000+00:00"
transactionType:
type: string
example: "DEBIT"
message:
type: string
nullable: true
example: null
narration:
type: string
example: "MFDS60520251111091433348001YWN0D9/#/reference---12d9d0034fr/#/911 Transactionn/#/Moniepoint Micr/#/0000001723"
status:
type: string
example: "COMPLETED"
InitializeTransactionRequest:
type: object
properties:
amount:
type: number
description: The amount (in Naira) to be paid. Minimum is N20.
example: 20.00
customerName:
type: string
description: The name of the customer.
example: "John Doe"
customerEmail:
type: string
description: The customer email.
example: "stephen@ikhane.com"
paymentReference:
type: string
description: A unique string of characters that identifies each transaction.
example: "123-03hjsj--1klsa--dkad"
paymentDescription:
type: string
description: A description of the payment.
example: "Trial transaction"
currencyCode:
type: string
description: The currency code. Defaults to NGN.
example: "NGN"
contractCode:
type: string
description: The merchant contract code.
example: "5867418298"
redirectUrl:
type: string
description: A URL to redirect to after payment completion.
example: "https://my-merchants-page.com/transaction/confirm"
paymentMethods:
type: array
description: The method of payment collection. Defaults to all available methods.
items:
type: string
description: The method of payment collection. Defaults to all available methods.
enum:
- "CARD"
- "ACCOUNT_TRANSFER"
- "USSD"
- "PHONE_NUMBER"
example:
- "CARD"
- "ACCOUNT_TRANSFER"
- "USSD"
- "PHONE_NUMBER"
incomeSplitConfig:
type: array
items:
type: object
properties:
subAccountCode:
type: string
description: The unique reference for the sub account that should receive the split. Required if income split is enabled.
example: "MFY_SUB_319452883228"
feePercentage:
type: number
description: The percentage of the fee to be borne by the subAccount.
example: 10.5
splitAmount:
type: number
description: The constant amount to be sent to the subAccount for each transaction. Expected if splitPercentage is not provided
example: 20
splitPercentage:
type: number
description: The percent amount to be splitted into the subAccount for each transaction. Expected if splitAmount is not provided
example: 20
feeBearer:
type: boolean
description: Indicates if the subAccount bears the fee.
example: true
description: A way to split payments among subAccounts.
metadata:
type: object
properties:
name:
type: string
description: The name of the customer.
example: "John Doe"
age:
type: integer
description: The age of the customer.
example: 45
description: Extra information from customers.
example:
name: "John Doe"
age: 45
required:
- amount
- customerEmail
- paymentReference
- currencyCode
- contractCode
example:
amount: 20.00
customerEmail: "stephen@ikhane.com"
paymentReference: "123-03hjsj--1klsa--dkad"
paymentDescription: "Trial transaction"
currencyCode: "NGN"
contractCode: "5867418298"
redirectUrl: "https://my-merchants-page.com/transaction/confirm"
paymentMethods:
- "CARD"
- "ACCOUNT_TRANSFER"
- "USSD"
- "PHONE_NUMBER"
metadata:
name: "John Doe"
age: 45
incomeSplitConfig:
- subAccountCode: "MFY_SUB_319452883228"
feePercentage: 10.5
splitAmount: 20
feeBearer: true
InitializeTransactionSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
transactionReference:
type: string
example: "MNFY|20190915200044|000090"
paymentReference:
type: string
example: "123-03hjsj--1klsa--dkad"
merchantName:
type: string
example: "Test Limited"
merchantLogoUrl:
type: string
example: "https://www.monnify.com/images/logo.png"
apiKey:
type: string
example: "MK_TEST_VR7J3UAACH"
enabledPaymentMethod:
type: array
items:
type: string
enum:
- "ACCOUNT_TRANSFER"
- "CARD"
example:
- "ACCOUNT_TRANSFER"
- "CARD"
checkoutUrl:
type: string
example: "https://sandbox.sdk.monnify.com/checkout/MNFY|20190915200044|000090"
incomeSplitConfig:
type: array
items:
type: object
properties:
subAccountCode:
type: string
description: The subAccount code available on merchant dashboard.
example: "MFY_SUB_319452883968"
splitAmount:
type: number
description: The amount to split to the subAccount.
example: 20
feePercentage:
type: number
description: The percentage of the fee to be borne by the subAccount.
example: 10.5
feeBearer:
type: boolean
description: Indicates if the subAccount bears the fee.
example: true
splitPercentage:
type: integer
description: The percentage of the split to be made to the subAccount.
example: 0
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
transactionReference: "MNFY|20190915200044|000090"
paymentReference: "123-03hjsj--1klsa--dkad"
merchantName: "Test Limited"
apiKey: "MK_TEST_VR7J3UAACH"
enabledPaymentMethod:
- "ACCOUNT_TRANSFER"
- "CARD"
checkoutUrl: "https://sandbox.sdk.monnify.com/checkout/MNFY|20190915200044|000090"
incomeSplitConfig:
- subAccountCode: "MFY_SUB_319452883968"
splitAmount: 20
feePercentage: 10.5
feeBearer: true
splitPercentage: 0
InitBankTransferPaymentRequest:
type: object
properties:
transactionReference:
type: string
description: A unique Monnify reference from the initialize transaction endpoint.
example: "MNFY|24|20220721134824|000089"
bankCode:
type: string
description: A valid bank code for USSD string generation (optional).
example: "058"
required:
- transactionReference
example:
transactionReference: "MNFY|24|20220721134824|000089"
bankCode: "058"
InitBankTransferPaymentSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: true
responseMessage:
type: string
description: A message describing the response.
example: "success"
responseCode:
type: string
description: The response code.
example: "0"
responseBody:
type: object
properties:
accountNumber:
type: string
description: The account number to be credited.
example: "1234567890"
accountName:
type: string
description: The account name to be credited.
example: "Monnify Merchant"
bankName:
type: string
description: The bank name to be credited.
example: "GTBank"
bankCode:
type: string
description: The bank code to be credited.
example: "058"
ussdCode:
type: string
description: The USSD code to be dialed to initiate the transfer.
example: "*737*50*1234567890*2000#"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
accountNumber: "1234567890"
accountName: "Monnify Merchant"
bankName: "GTBank"
bankCode: "058"
ussdCode: "*737*50*1234567890*2000#"
ChargeRequest:
type: object
required:
- transactionReference
- card
- deviceInformation
properties:
transactionReference:
type: string
description: The transaction reference.
example: "MNFY|99|20220725125351|000271"
collectionChannel:
type: string
description: The collection channel (optional, defaults to API_NOTIFICATION).
example: "API_NOTIFICATION"
card:
$ref: "#/components/schemas/CardInfo"
deviceInformation:
$ref: "#/components/schemas/DeviceInformation"
CardInfo:
type: object
required:
- number
- expiryMonth
- expiryYear
- pin
- cvv
properties:
number:
type: string
description: The card number.
example: "4111111111111111"
expiryMonth:
type: string
description: The card expiry month.
example: "12"
expiryYear:
type: string
description: The card expiry year.
example: "2025"
pin:
type: string
description: The card PIN.
example: "1234"
cvv:
type: string
description: The card CVV.
example: "123"
DeviceInformation:
type: object
properties:
httpBrowserLanguage:
type: string
description: The browser language.
example: "en-US"
httpBrowserJavaEnabled:
type: boolean
description: Indicates if Java is enabled in the browser.
example: false
httpBrowserJavaScriptEnabled:
type: boolean
description: Indicates if JavaScript is enabled in the browser.
example: true
httpBrowserColorDepth:
type: integer
description: The browser color depth.
example: 24
httpBrowserScreenHeight:
type: integer
description: The browser screen height.
example: 1203
httpBrowserScreenWidth:
type: integer
description: The browser screen width.
example: 2138
httpBrowserTimeDifference:
type: string
description: The browser time difference.
example: ""
userAgentBrowserValue:
type: string
description: The browser's user agent
example: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
required:
- httpBrowserLanguage
- httpBrowserJavaEnabled
- httpBrowserJavaScriptEnabled
- httpBrowserColorDepth
- httpBrowserScreenHeight
- httpBrowserScreenWidth
- httpBrowserTimeDifference
- userAgentBrowserValue
ChargeResponse:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: true
responseMessage:
type: string
description: A message describing the response.
example: "success"
responseCode:
type: string
description: The response code.
example: "0"
responseBody:
type: object
description: The response body containing the payment details.
properties:
status:
type: string
description: The payment status.
example: "SUCCESS"
message:
type: string
description: A message describing the payment status.
example: "Transaction Successful"
transactionReference:
type: string
description: The transaction reference.
example: "MNFY|99|20220725125351|000271"
paymentReference:
type: string
description: The payment reference.
example: "12-3---03--1klsa--dkad"
authorizedAmount:
type: integer
description: The authorized amount.
example: 2000
otpData: # Optional, for OTP flow
type: object
description: For cards with OTP requirements
properties:
id:
type: string
description: The OTP ID.
example: "100.00-b66bef0aa8e660863c4e1177a08fefba"
message:
type: string
description: The OTP message.
example: "Enter OTP sent to your device. Use 123456"
authData:
type: string
description: The auth data.
example: "5060995994247093"
secure3dData: # Optional, for 3DS flow
type: object
description: For cards with 3DS requirements
properties:
id:
type: string
description: The 3DS ID.
example: "100.00-59077a3e5157fae7ca9dd260d911ccbb"
redirectUrl:
type: string
description: The 3DS redirect URL.
example: localhost:3000
AuthorizeOTPRequest:
type: object
properties:
transactionReference:
type: string
description: The transaction reference from the initialize transaction endpoint.
example: "MNFY|67|20220725114827|000285"
collectionChannel:
type: string
description: The channel of collection (defaults to "API_NOTIFICATION").
example: "API_NOTIFICATION"
tokenId:
type: string
description: The token ID from the charge card endpoint response.
example: "100.00-b66bef0aa8e660863c4e1177a08fefba"
token:
type: string
description: The OTP sent to the user's device.
example: "123456"
required:
- transactionReference
- tokenId
- token
example:
transactionReference: "MNFY|67|20220725114827|000285"
collectionChannel: "API_NOTIFICATION"
tokenId: "100.00-b66bef0aa8e660863c4e1177a08fefba"
token: "123456"
AuthorizeOTPSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
paymentStatus:
type: string
example: "SUCCESSFUL"
paymentDescription:
type: string
example: "Payment Successful"
transactionReference:
type: string
example: "MNFY|67|20220725114827|000285"
paymentReference:
type: string
example: "1568577644707"
amountPaid:
type: number
example: 100.00
currencyPaid:
type: string
example: "NGN"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
paymentStatus: "SUCCESSFUL"
paymentDescription: "Payment Successful"
transactionReference: "MNFY|67|20220725114827|000285"
paymentReference: "1568577644707"
amountPaid: 100.00
currencyPaid: "NGN"
Authorize3DSCardRequest:
type: object
properties:
transactionReference:
type: string
description: The transaction reference.
example: "MNFY|99|20220725125351|000271"
apiKey:
type: string
description: The merchant API key.
example: "MK_TEST_JRQAZRFD2W"
collectionChannel:
type: string
description: The collection channel.
example: "API_NOTIFICATION"
card:
type: object
properties:
number:
type: integer
description: The card number.
example: "4000000000000"
expiryMonth:
type: integer
description: The card expiry month.
example: 12
expiryYear:
type: integer
description: The card expiry year.
example: 2025
cvv:
type: integer
description: The card CVV.
example: 123
pin:
type: integer
description: The card pin.
example: 1234
required:
- transactionReference
- apiKey
- card
Authorize3DSCardSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
paymentStatus:
type: string
example: "SUCCESSFUL"
paymentDescription:
type: string
example: "Payment Successful"
transactionReference:
type: string
example: "MNFY|99|20220725125351|000271"
paymentReference:
type: string
example: "1568577644707"
amountPaid:
type: number
example: 100.00
currencyPaid:
type: string
example: "NGN"
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
paymentStatus: "SUCCESSFUL"
paymentDescription: "Payment Successful"
transactionReference: "MNFY|99|20220725125351|000271"
paymentReference: "1568577644707"
amountPaid: 100.00
currencyPaid: "NGN"
TransactionSearchResponse:
type: object
properties:
content:
type: array
items:
type: object
properties:
transactionReference:
type: string
example: "MNFY|123|20231027|000001"
paymentReference:
type: string
example: "merchant-ref-123"
amount:
type: number
example: 50.00
customerName:
type: string
example: "John Doe"
customerEmail:
type: string
example: "john.doe@example.com"
paymentStatus:
type: string
example: "SUCCESSFUL"
transactionDate:
type: string
format: date-time
example: "2023-10-27T10:00:00Z"
pageable:
type: object
properties:
sort:
type: object
properties:
empty:
type: boolean
example: true
sorted:
type: boolean
example: false
unsorted:
type: boolean
example: true
offset:
type: integer
example: 0
pageSize:
type: integer
example: 10
pageNumber:
type: integer
example: 0
unpaged:
type: boolean
example: false
paged:
type: boolean
example: true
last:
type: boolean
example: true
totalPages:
type: integer
example: 1
totalElements:
type: integer
example: 1
size:
type: integer
example: 10
number:
type: integer
example: 0
sort:
type: object
properties:
empty:
type: boolean
example: true
sorted:
type: boolean
example: false
unsorted:
type: boolean
example: true
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 1
empty:
type: boolean
example: true
example:
content:
- transactionReference: "MNFY|123|20231027|000001"
paymentReference: "merchant-ref-123"
amount: 50.00
customerName: "John Doe"
customerEmail: "john.doe@example.com"
paymentStatus: "SUCCESSFUL"
transactionDate: "2023-10-27T10:00:00Z"
pageable:
sort:
empty: true
sorted: false
unsorted: true
offset: 0
pageSize: 10
pageNumber: 0
unpaged: false
paged: true
last: true
totalPages: 1
totalElements: 1
size: 10
number: 0
sort:
empty: true
sorted: false
unsorted: true
first: true
numberOfElements: 1
empty: true
TransactionStatusResponse:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: true
responseMessage:
type: string
description: A message describing the response.
example: "success"
responseCode:
type: string
description: The response code.
example: "0"
responseBody:
type: object
properties:
transactionReference:
type: string
description: The transaction reference.
example: "MNFY|67|20220725111957|000283"
paymentReference:
type: string
description: The payment reference.
example: "12-3---03--1kls0a--dkad"
amountPaid:
type: string
description: The amount paid.
example: "100.00"
totalPayable:
type: string
description: The total payable amount.
example: "100.00"
settlementAmount:
type: string
description: The settlement amount.
example: "90.00"
paidOn:
type: string
description: The date and time the payment was made.
example: "25/07/2022 11:20:20 AM"
paymentStatus:
type: string
description: The payment status.
example: "PAID"
paymentDescription:
type: string
description: A description of the payment.
example: "Trial transaction"
currency:
type: string
description: The currency.
example: "NGN"
paymentMethod:
type: string
description: The payment method.
example: "CARD"
product:
type: object
properties:
type:
type: string
description: The product type.
example: "WEB_SDK"
reference:
type: string
description: The product reference.
example: "12-3---03--1kls0a--dkad"
cardDetails:
type: object
properties:
cardType:
type: string
description: The card type.
example: "Sandbox Card Scheme"
last4:
type: string
description: The last 4 digits of the card number.
example: "1111"
expMonth:
type: string
description: The card expiry month.
example: "10"
expYear:
type: string
description: The card expiry year.
example: "22"
bin:
type: string
description: The card BIN.
example: "411111"
bankCode:
type: "null"
description: The bank code.
example: null
bankName:
type: "null"
description: The bank name.
example: null
reusable:
type: boolean
description: Indicates if the card is reusable.
example: false
countryCode:
type: "null"
description: The country code.
example: null
cardToken:
type: "null"
description: The card token.
example: null
supportsTokenization:
type: boolean
description: Indicates if the card supports tokenization.
example: false
maskedPan:
type: string
description: The masked card PAN.
example: "411111******1111"
accountDetails:
type: "null"
description: Account details.
example: null
accountPayments:
type: array
items: {}
description: Account payments.
example: []
customer:
type: object
properties:
email:
type: string
description: The customer email.
example: "stephen@ikhane.com"
name:
type: string
description: The customer name.
example: "Stephen Ikhane"
metaData:
type: object
description: Metadata.
example: {}
example:
requestSuccessful: true
responseMessage: "success"
responseCode: "0"
responseBody:
transactionReference: "MNFY|67|20220725111957|000283"
paymentReference: "12-3---03--1kls0a--dkad"
amountPaid: "100.00"
totalPayable: "100.00"
settlementAmount: "90.00"
paidOn: "25/07/2022 11:20:20 AM"
paymentStatus: "PAID"
paymentDescription: "Trial transaction"
currency: "NGN"
paymentMethod: "CARD"
product:
type: "WEB_SDK"
reference: "12-3---03--1kls0a--dkad"
cardDetails:
cardType: "Sandbox Card Scheme"
last4: "1111"
expMonth: "10"
expYear: "22"
bin: "411111"
bankCode: null
bankName: null
reusable: false
countryCode: null
cardToken: null
supportsTokenization: false
maskedPan: "411111******1111"
accountDetails: null
accountPayments: []
customer:
email: "stephen@ikhane.com"
name: "Stephen Ikhane"
metaData: {}
InitiateTransferRequest:
type: object
properties:
amount:
type: number
description: Amount to disburse.
example: 200
reference:
type: string
description: The unique reference for the transaction.
example: "reference---1290034"
narration:
type: string
description: The Narration for the transactions being processed.
example: "911 Transaction"
destinationBankCode:
type: string
description: The destination bank code representing the destination bank.
example: "50515"
destinationAccountNumber:
type: string
description: The beneficiary account number.
example: "2085886393"
destinationAccountName:
type: string
description: The beneficiary account name.
example: "Ciroma Chukwuka Adekunle"
currency:
type: string
description: The currency of the transaction being initialized - "NGN".
example: "NGN"
sourceAccountNumber:
type: string
description: Your Wallet Account Number.
example: "3934178936"
senderInfo:
type: object
properties:
sourceAccountNumber:
type: string
description: The sender account number. Must be 10 digits for Nigerian accounts
example: "3934178936"
sourceAccountName:
type: string
description: The sender account name. This can be changed to any name. Useful when you are sending on behalf of a business.
example: "Marvelous Benji"
sourceAccountBvn:
type: string
description: The sender account bvn. Must be valid 11-digit BVN
example: "1234567890"
senderBankCode:
type: string
description: The sender bank code. Must be valid Nigerian bank code
example: "50515"
required:
- sourceAccountNumber
- sourceAccountName
- senderBankCode
async:
type: boolean
description: Indicates if the transfer should be asynchronous.
example: false
required:
- amount
- reference
- narration
- destinationBankCode
- destinationAccountNumber
- destinationAccountName
- currency
- sourceAccountNumber
optional:
- senderInfo
- async
InitiateTransferSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
amount:
type: integer
example: 200
reference:
type: string
example: "referen00ce---1290034"
status:
type: string
example: "SUCCESS"
dateCreated:
type: string
format: date-time
example: "2022-07-31T14:31:33.759+0000"
totalFee:
type: integer
example: 35
destinationAccountName:
type: string
example: "Ciroma Chukwuka Adekunle"
destinationBankName:
type: string
example: "Moniepoint Microfinance bank"
destinationAccountNumber:
type: string
example: "2085886393"
destinationBankCode:
type: string
example: "50515"
senderInfo:
type: object
properties:
sourceAccountNumber:
type: string
example: "3934178936"
sourceAccountName:
type: string
example: "Marvelous Benji"
senderBankCode:
type: string
example: "50515"
InitiateTransferOTPResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
amount:
type: integer
example: 200
reference:
type: string
example: "refere--n00ce---1290034"
status:
type: string
example: "PENDING_AUTHORIZATION"
dateCreated:
type: string
format: date-time
example: "2022-07-31T15:36:16.398+0000"
totalFee:
type: integer
example: 35
destinationAccountName:
type: string
example: "Ciroma Chukwuka Adekunle"
destinationBankName:
type: string
example: "Moniepoint Microfinance bank"
destinationAccountNumber:
type: string
example: "2085886393"
destinationBankCode:
type: string
example: "50515"
InitiateBulkTransferRequest:
type: object
properties:
title:
type: string
description: The title of the batch disbursement.
example: "Game of Batches"
batchReference:
type: string
description: A unique reference identifying the batch disbursement.
example: "batch-ref-001"
narration:
type: string
description: A narration for the disbursement.
example: "911 Transaction"
sourceAccountNumber:
type: string
description: The merchant WALLET ACCOUNT NUMBER.
example: "9624937372"
onValidationFailure:
type: string
enum:
- CONTINUE
- BREAK
description: Decision to be taken if any of the disbursement batches fail. Either BREAK or CONTINUE.
example: "CONTINUE"
notificationInterval:
type: integer
description: This determines how often Monnify should notify the merchant of its progress when processing a batch transfer.
example: 10
transactionList:
type: array
items:
type: object
properties:
amount:
type: integer
description: Amount to disburse.
example: 1300
reference:
type: string
description: The unique reference for the transaction.
example: "Final-Refere-nce-1a"
narration:
type: string
description: The Narration for the transactions being processed.
example: "911 Transaction"
destinationBankCode:
type: string
description: The 3-5 digit bank code representing the destination bank.
example: "50515"
destinationAccountNumber:
type: string
description: The beneficiary account number.
example: "0111946768"
destinationAccountName:
type: string
description: The beneficiary account name.
example: "Ciroma Chukwuka Adekunle"
currency:
type: string
description: The currency of the transaction being initialized - "NGN".
example: "NGN"
required:
- amount
- reference
- narration
- destinationBankCode
- destinationAccountNumber
- destinationAccountName
- currency
description: A list of transactions to be processed.
required:
- title
- batchReference
- narration
- sourceAccountNumber
- onValidationFailure
- notificationInterval
- transactionList
InitiateBulkTransferSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: true
responseMessage:
type: string
description: A message describing the response.
example: "success"
responseCode:
type: string
description: The response code.
example: "0"
responseBody:
type: object
description: The response body containing the batch disbursement details.
properties:
totalAmount:
type: integer
description: The total amount disbursed.
example: 2100
totalFee:
type: integer
description: The total fee charged.
example: 105
batchReference:
type: string
description: The batch reference.
example: "batch-ref-001"
batchStatus:
type: string
description: The disbursement status of the batch.
example: "AWAITING_PROCESSING"
totalTransactionsCount:
type: integer
description: The total number of transactions in the batch.
example: 3
dateCreated:
type: string
description: The date and time the batch was created.
format: date-time
example: "2022-07-31T14:41:19.588+0000"
AuthorizeTransferRequest:
type: object
properties:
reference:
type: string
description: The unique reference for the transfer.
example: "refere--n00ce---1290034"
authorizationCode:
type: string
description: The OTP sent to merchant's email.
example: "491763"
required:
- reference
- authorizationCode
AuthorizeSingleTransferSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
amount:
type: integer
example: 200
reference:
type: string
example: "refere--n00ce---1290034"
status:
type: string
example: "SUCCESS"
dateCreated:
type: string
format: date-time
example: "2022-07-31T15:36:16.000+0000"
totalFee:
type: integer
example: 35
destinationAccountName:
type: string
example: "Marvelous Benji"
destinationBankName:
type: string
example: "Moniepoint Microfinance bank"
destinationAccountNumber:
type: string
example: "2085886393"
destinationBankCode:
type: string
example: "50515"
ResendOTPRequest:
type: object
properties:
reference:
type: string
description: The reference used for the transfer.
example: "refere--n00ce---1290--034"
required:
- reference
ResendOTPSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
message:
type: string
example: "Authorization code will be processed and sent to predefined email addresses(s)"
ResendOTPRequestBulk:
type: object
properties:
batchReference:
type: string
description: The batch reference used for the transfer.
example: "batch-refere--n00ce---1290--034"
required:
- batchReference
ResendOTPSuccessResponseBulk:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
message:
type: string
example: "Authorization code will be processed and sent to predefined email addresses(s)"
SingleTransferStatusResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
amount:
type: integer
example: 200
reference:
type: string
example: "referen00ce---1290034"
narration:
type: string
example: "911 Transaction"
currency:
type: string
example: "NGN"
fee:
type: integer
example: 35
twoFaEnabled:
type: boolean
example: "false"
status:
type: string
example: "SUCCESS"
transactionDescription:
type: string
example: "Transaction successful"
transactionReference:
type: string
example: "MFDS20220731033133AABQGN"
createdOn:
type: string
format: date-time
example: "2022-07-31T14:31:34.000+0000"
sourceAccountNumber:
type: string
example: "3934178936"
destinationAccountNumber:
type: string
example: "2085886393"
destinationAccountName:
type: string
example: "Marvelous Benji"
destinationBankCode:
type: string
example: "50515"
destinationBankName:
type: string
example: "Moniepoint Microfinance bank"
ListSingleTransfersResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/SingleTransferDetails"
pageable:
type: object
properties:
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
pageSize:
type: integer
example: 20
pageNumber:
type: integer
example: 1
offset:
type: integer
example: 20
paged:
type: boolean
example: true
unpaged:
type: boolean
example: false
last:
type: boolean
example: false
totalPages:
type: integer
example: 3
totalElements:
type: integer
example: 54
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
first:
type: boolean
example: false
numberOfElements:
type: integer
example: 20
size:
type: integer
example: 20
number:
type: integer
example: 1
empty:
type: boolean
example: false
SingleTransferDetails:
type: object
properties:
amount:
type: integer
example: 10
reference:
type: string
example: "hjkdd0odood0pl"
narration:
type: string
example: "911 Transaction"
currency:
type: string
example: "NGN"
fee:
type: integer
example: 35
twoFaEnabled:
type: boolean
example: false
status:
type: string
example: "SUCCESS"
transactionDescription:
type: string
example: "Transaction successful"
transactionReference:
type: string
example: "MFDS20220516012053AAAYYN"
createdOn:
type: string
format: date-time
example: "2022-05-16T12:20:54.000+0000"
sourceAccountNumber:
type: string
example: "3934178936"
destinationAccountNumber:
type: string
example: "0111946768"
destinationAccountName:
type: string
example: "MEKILIUWA SMART CHINONSO"
destinationBankCode:
type: string
example: "50515"
destinationBankName:
type: string
example: "Moniepoint Microfinance Bank"
ListBulkTransfersResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/BulkTransferDetails"
pageable:
type: object
properties:
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
pageSize:
type: integer
example: 3
pageNumber:
type: integer
example: 0
offset:
type: integer
example: 0
unpaged:
type: boolean
example: false
paged:
type: boolean
example: true
totalPages:
type: integer
example: 3
last:
type: boolean
example: false
totalElements:
type: integer
example: 7
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 3
size:
type: integer
example: 3
number:
type: integer
example: 0
empty:
type: boolean
example: false
BulkTransferDetails:
type: object
properties:
totalAmount:
type: integer
example: 45
totalFee:
type: integer
example: 80
batchReference:
type: string
example: "Batch-1596666798811"
batchStatus:
type: string
example: "COMPLETED"
totalTransactionsCount:
type: integer
example: 4
dateCreated:
type: string
format: date-time
example: "2020-08-05T22:33:21.000+0000"
BulkBatchSummaryResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
title:
type: string
example: "Game of Batches"
totalAmount:
type: integer
example: 210000
totalFee:
type: integer
example: 105
batchReference:
type: string
example: "batch-ref-001"
totalTransactionsCount:
type: integer
example: 30
initiator:
type: string
example: "Monnify"
failedCount:
type: integer
example: 10
successfulCount:
type: integer
example: 20
pendingCount:
type: integer
example: 0
pendingAmount:
type: integer
example: 0.00
failedAmount:
type: integer
example: 47600.00
successfulAmount:
type: integer
example: 162400.00
batchStatus:
type: string
example: "COMPLETED"
dateCreated:
type: string
format: date-time
BulkTransferTransactionsResponse:
type: object
/api/v2/disbursements/single/resend-otp:
post:
tags:
- Transfers (Disbursement)
summary: Resend OTP (Single Transfer)
description: >-
This endpoint generates a new OTP for single transfer in the event that there were
challenges with the former OTP sent.
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/BulkTransferTransactionDetails"
pageable:
type: object
properties:
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
pageSize:
type: integer
example: 10
pageNumber:
type: integer
example: 0
offset:
type: integer
example: 0
paged:
type: boolean
example: true
unpaged:
type: boolean
example: false
last:
type: boolean
example: true
totalPages:
type: integer
example: 1
totalElements:
type: integer
example: 3
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 3
size:
type: integer
example: 10
number:
type: integer
example: 0
empty:
type: boolean
example: false
BulkTransferTransactionDetails:
type: object
properties:
amount:
type: integer
example: 230
reference:
type: string
example: "Final-Refer-ence-3a"
narration:
type: string
example: "911 Transaction"
currency:
type: string
example: "NGN"
fee:
type: integer
example: 35
twoFaEnabled:
type: boolean
example: false
status:
type: string
example: "SUCCESS"
transactionDescription:
type: string
example: "Transaction successful"
transactionReference:
type: string
example: "MFDS20220731034121AABQGQ"
createdOn:
type: string
format: date-time
example: "2022-07-31T14:41:21.000+0000"
sourceAccountNumber:
type: string
example: "3934178936"
destinationAccountNumber:
type: string
example: "0111946768"
destinationAccountName:
type: string
example: "MEKILIUWA SMART CHINONSO"
destinationBankCode:
type: string
example: "50515"
destinationBankName:
type: string
example: "Moniepoint Microfinance Bank"
SearchDisbursementTransactionsResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/DisbursementTransactionDetails"
pageable:
type: object
properties:
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
pageSize:
type: integer
example: 10
pageNumber:
type: integer
example: 0
offset:
type: integer
example: 0
paged:
type: boolean
example: true
unpaged:
type: boolean
example: false
last:
type: boolean
example: false
totalPages:
type: integer
example: 6
totalElements:
type: integer
example: 54
sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 10
size:
type: integer
example: 10
number:
type: integer
example: 0
empty:
type: boolean
example: false
GetWalletBalanceResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
availableBalance:
type: string
example: "4919798101.36"
ledgerBalance:
type: string
example: "4919798101.36"
DisbursementTransactionDetails:
type: object
properties:
amount:
type: integer
example: 200
reference:
type: string
example: "refere--n00ce---1290--034"
narration:
type: string
example: "911 Transaction"
currency:
type: string
example: "NGN"
fee:
type: integer
example: 35
twoFaEnabled:
type: boolean
example: true
status:
type: string
example: "EXPIRED"
transactionDescription:
type: string
example: "Transaction has expired"
transactionReference:
type: string
example: "MFDS20220731044951AABQGV"
createdOn:
type: string
format: date-time
example: "2022-07-31T15:49:51.000+0000"
sourceAccountNumber:
type: string
example: "3934178936"
destinationAccountNumber:
type: string
example: "2085886393"
destinationAccountName:
type: string
example: "Marvelous Benji"
destinationBankCode:
type: string
example: "50515"
destinationBankName:
type: string
example: "Moniepoint Microfinance bank"
CreateReservedAccountRequest:
type: object
properties:
accountReference:
type: string
description: A unique reference generated by the merchant
example: "abc1niui23"
accountName:
type: string
description: The name to be displayed during name enquiry
example: "Test Reserved Account"
currencyCode:
type: string
description: The currency code of the account
example: "NGN"
contractCode:
type: string
description: The merchant contract code
example: "5867418298"
customerEmail:
type: string
description: The email of the customer
example: "test@tester.com"
customerName:
type: string
description: The name of the customer
example: "John Doe"
bvn:
type: string
description: The customer's BVN to be associated with the account
example: "21212121212"
getAllAvailableBanks:
type: boolean
description: Indicates if all available banks should be returned
example: "true"
preferredBanks:
type: array
description: The preferred banks for the customer. Currently defaults to 50515 (Moniepoint Microfinance Bank)
items:
type: string
example: ["50515"]
incomeSplitConfig:
type: array
description: The income split configuration for the account
items:
$ref: "#/components/schemas/IncomeSplitConfig"
restrictPaymentSource:
type: boolean
description: Indicates if payment source should be restricted
example: true
default: true
allowedPaymentSources:
description: The allowed payment sources for the account
$ref: "#/components/schemas/AllowedPaymentSources"
nin:
type: string
description: The customer's NIN to be associated with the account
example: "12345678901"
required:
- accountReference
- accountName
- currencyCode
- contractCode
- customerEmail
- customerName
- bvn
- getAllAvailableBanks
- preferredBanks
IncomeSplitConfig:
type: object
properties:
subAccountCode:
type: string
example: "MFY_SUB_319452883228"
feePercentage:
type: number
example: 10.5
splitPercentage:
type: number
example: 20
feeBearer:
type: boolean
example: true
splitAmount:
type: number
example: 100.0
AllowedPaymentSources:
type: object
properties:
bvns:
type: array
items:
type: string
example: ["21212121212", "20202020202"]
bankAccounts:
type: array
items:
$ref: "#/components/schemas/BankAccount"
accountNames:
type: array
items:
type: string
example: ["SAMUEL DAMILARE OGUNNAIKE"]
BankAccount:
type: object
properties:
accountNumber:
type: string
example: "0068687503"
bankCode:
type: string
example: "232"
CreateReservedAccountResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/ReservedAccountDetails"
ReservedAccountDetails:
type: object
properties:
contractCode:
type: string
example: "5867418298"
accountReference:
type: string
example: "abc1niui23"
accountName:
type: string
example: "MARVELOUS BENJI"
currencyCode:
type: string
example: "NGN"
customerEmail:
type: string
example: "test@tester.com"
customerName:
type: string
example: "John Doe"
accounts:
type: array
items:
$ref: "#/components/schemas/Account"
collectionChannel:
type: string
example: "RESERVED_ACCOUNT"
reservationReference:
type: string
example: "96ZPXECUD84UQTB00931"
reservedAccountType:
type: string
example: "GENERAL"
status:
type: string
example: "ACTIVE"
createdOn:
type: string
format: date-time
example: "2024-11-25 07:35:17.566"
incomeSplitConfig:
type: array
items:
$ref: "#/components/schemas/IncomeSplitConfigResponse"
bvn:
type: string
example: "21212121212"
restrictPaymentSource:
type: boolean
example: false
allowedPaymentSources:
$ref: "#/components/schemas/AllowedPaymentSources"
Account:
type: object
properties:
bankCode:
type: string
example: "50515"
bankName:
type: string
example: "Moniepoint Microfinance Bank"
accountNumber:
type: string
example: "6839490147"
accountName:
type: string
example: "MARVELOUS BENJI"
IncomeSplitConfigResponse:
type: object
properties:
subAccountCode:
type: string
example: "MFY_SUB_399360552679"
feePercentage:
type: number
example: 10.5
feeBearer:
type: boolean
example: true
splitPercentage:
type: number
example: 20
reservedAccountConfigCode:
type: string
example: "N3NT809NUK"
CreateInvoiceReservedAccountRequest:
type: object
properties:
contractCode:
type: string
description: "The merchant's contract code."
example: "5867418298"
accountName:
type: string
description: "The name to be displayed during name enquiry."
example: "Jane Doe"
currencyCode:
type: string
description: "The currency allowed, 'NGN'."
example: "NGN"
accountReference:
type: string
description: "A unique reference generated by the merchant."
example: "javnedoe12233"
customerEmail:
type: string
description: "Email address of the customer."
example: "janedoe@gmail.com"
customerName:
type: string
description: "Full name of the customer."
example: "Jane Doe"
bvn:
type: string
description: "The customer's BVN."
example: "21212121212"
nin:
type: string
description: "The customer's NIN."
example: "11212121212"
reservedAccountType:
type: string
description: "This should be 'INVOICE'."
example: "INVOICE"
required:
- contractCode
- accountName
- currencyCode
- accountReference
- customerEmail
- customerName
- reservedAccountType
- bvn
CreateInvoiceReservedAccountSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/InvoiceReservedAccountDetails"
InvoiceReservedAccountDetails:
type: object
properties:
contractCode:
type: string
example: "5867418298"
accountReference:
type: string
example: "javnedoe12233"
accountName:
type: string
example: "MARVELOUS BENJI"
currencyCode:
type: string
example: "NGN"
customerEmail:
type: string
example: "janedoe@gmail.com"
customerName:
type: string
example: "Jane Doe"
accountNumber:
type: string
example: "6842287969"
bankName:
type: string
example: "Moniepoint Microfinance Bank"
bankCode:
type: string
example: "50515"
collectionChannel:
type: string
example: "RESERVED_ACCOUNT"
reservationReference:
type: string
example: "LE7ZT2NR510PAM0WTYTK"
reservedAccountType:
type: string
example: "INVOICE"
status:
type: string
example: "INACTIVE"
createdOn:
type: string
format: date-time
example: "2024-11-27T04:35:50.054Z"
incomeSplitConfig:
type: array
items: {}
bvn:
type: string
example: "21212121212"
restrictPaymentSource:
type: boolean
example: false
GetReservedAccountDetailsSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/ReservedAccountDetails"
AddLinkedAccountsRequest:
type: object
properties:
getAllAvailableBanks:
type: boolean
description: "Determine if all necessary banks should be used."
example: false
preferredBanks:
type: array
items:
type: string
description: "Contains bank codes of desired banks."
example: ["50515"]
required:
- getAllAvailableBanks
AddLinkedAccountsSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/LinkedAccountDetails"
LinkedAccountDetails:
type: object
properties:
contractCode:
type: string
example: "5867418298"
accountReference:
type: string
example: "abc1niui23"
accountName:
type: string
example: "MARVELOUS BENJI"
currencyCode:
type: string
example: "NGN"
customerEmail:
type: string
example: "test@tester.com"
customerName:
type: string
example: "John Doe"
accounts:
type: array
items:
$ref: "#/components/schemas/Account"
collectionChannel:
type: string
example: "RESERVED_ACCOUNT"
reservationReference:
type: string
example: "96ZPXECUD84UQTB00931"
reservedAccountType:
type: string
example: "GENERAL"
status:
type: string
example: "ACTIVE"
createdOn:
type: string
format: date-time
example: "2024-11-25T07:35:18.000Z"
bvn:
type: string
example: "21212121212"
restrictPaymentSource:
type: boolean
example: false
UpdateBvnRequest:
type: object
properties:
bvn:
type: string
description: "The BVN used in creating the reserved account."
example: "21212121212"
required:
- bvn
UpdateBvnSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/UpdatedBvnAccountDetails"
UpdatedBvnAccountDetails:
type: object
properties:
contractCode:
type: string
example: "5867418298"
accountReference:
type: string
example: "abc1023"
currencyCode:
type: string
example: "NGN"
customerEmail:
type: string
example: "test@tester.com"
customerName:
type: string
example: "John Doe"
accountNumber:
type: string
example: "6842287615"
bankName:
type: string
example: "Moniepoint Microfinance Bank"
bankCode:
type: string
example: "50515"
collectionChannel:
type: string
example: "RESERVED_ACCOUNT"
reservationReference:
type: string
example: "06MCYE1991Q1X9102093"
reservedAccountType:
type: string
example: "GENERAL"
status:
type: string
example: "ACTIVE"
createdOn:
type: string
format: date-time
example: "2024-11-27T04:32:08.000Z"
incomeSplitConfig:
type: array
items:
$ref: "#/components/schemas/IncomeSplitConfig"
bvn:
type: string
example: "21212121212"
restrictPaymentSource:
type: boolean
example: true
AllowedPaymentSourcesRequest:
type: object
properties:
restrictPaymentSource:
type: boolean
description: "This field activates or deactivates restricting of payment sources for a reserved account."
example: true
allowedPaymentSources:
type: object
properties:
bvns:
type: array
items:
type: string
description: "List of BVNs that should be validated."
example: ["21212121212", "20202020202"]
bankAccounts:
type: array
items:
$ref: "#/components/schemas/BankAccount"
description: "List of account numbers that can fund the reserved account."
accountNames:
type: array
items:
type: string
description: "List of account names for accounts from which reserved accounts can be funded."
example: ["DAMILARE OGUNNAIKE SAMUEL"]
required:
- restrictPaymentSource
- allowedPaymentSources
AllowedPaymentSourcesSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/AllowedPaymentSourcesDetails"
AllowedPaymentSourcesDetails:
type: object
properties:
restrictPaymentSource:
type: boolean
example: true
allowedPaymentSources:
type: object
properties:
bvns:
type: array
items:
type: string
example: ["21212121212", "20202020202"]
bankAccounts:
type: array
items:
$ref: "#/components/schemas/BankAccount"
accountNames:
type: array
items:
type: string
example: "DAMILARE OGUNNAIKE SAMUEL"
UpdateSplitConfigRequestItem:
type: object
properties:
subAccountCode:
type: string
description: "The unique reference for the sub account that should receive the split."
example: "MFY_SUB_762212281785"
feeBearer:
type: boolean
description: "This field determines if the sub account should bear transaction fees or not."
default: false
example: false
feePercentage:
type: number
description: "The percentage of the transaction fee to be borne by the sub account."
default: 0
example: 10.50
splitPercentage:
type: number
description: "The percentage of the amount paid to be split into the sub account."
default: 0
example: 30
required:
- subAccountCode
UpdateSplitConfigSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/UpdatedSplitConfigDetails"
UpdatedSplitConfigDetails:
type: object
properties:
code:
type: string
example: "HRCNXDSAYX"
reservedAccountCode:
type: string
example: "HRCNXDSAYX"
feeBearer:
type: string
example: "MERCHANT_ONLY"
configDetails:
type: array
items:
$ref: "#/components/schemas/SplitConfigDetail"
SplitConfigDetail:
type: object
properties:
subAccountCode:
type: string
example: "MFY_SUB_762212281785"
feePercentage:
type: number
example: 10.5
feeBearer:
type: boolean
example: false
splitPercentage:
type: number
example: 0
reservedAccountConfigCode:
type: string
example: "HRCNXDSAYX"
DeallocateAccountSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/DeallocatedAccountDetails"
DeallocatedAccountDetails:
type: object
properties:
contractCode:
type: string
example: "5867418298"
accountReference:
type: string
example: "abc1niui23"
accountName:
type: string
example: "MARVELOUS BENJI"
currencyCode:
type: string
example: "NGN"
customerEmail:
type: string
example: "test@tester.com"
customerName:
type: string
example: "John Doe"
accountNumber:
type: string
example: "6839490147"
bankName:
type: string
example: "Moniepoint Microfinance Bank"
bankCode:
type: string
example: "50515"
collectionChannel:
type: string
example: "RESERVED_ACCOUNT"
reservationReference:
type: string
example: "96ZPXECUD84UQTB00931"
reservedAccountType:
type: string
example: "GENERAL"
status:
type: string
example: "ACTIVE"
createdOn:
type: string
format: date-time
example: "2024-11-25T07:35:18.000Z"
bvn:
type: string
example: "21212121212"
restrictPaymentSource:
type: boolean
example: false
GetTransactionsSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/TransactionsResponseBody"
TransactionsResponseBody:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/Transaction"
pageable:
$ref: "#/components/schemas/Pageable"
totalElements:
type: integer
example: 2
totalPages:
type: integer
example: 1
last:
type: boolean
example: true
sort:
$ref: "#/components/schemas/Sort"
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 2
size:
type: integer
example: 10
number:
type: integer
example: 0
empty:
type: boolean
example: false
Transaction:
type: object
properties:
customerDTO:
$ref: "#/components/schemas/CustomerDTO"
providerAmount:
type: number
example: 0.21
paymentMethod:
type: string
example: "ACCOUNT_TRANSFER"
createdOn:
type: string
format: date-time
example: "2019-07-24T14:12:27.000+0000"
amount:
type: number
example: 100.00
flagged:
type: boolean
example: false
providerCode:
type: string
example: "98271"
fee:
type: number
example: 0.79
currencyCode:
type: string
example: "NGN"
completedOn:
type: string
format: date-time
example: "2019-07-24T14:12:28.000+0000"
paymentDescription:
type: string
example: "Test Reserved Account"
paymentStatus:
type: string
example: "PAID"
transactionReference:
type: string
example: "MNFY|20190724141227|003374"
paymentReference:
type: string
example: "MNFY|20190724141227|003374"
merchantCode:
type: string
example: "ALJKHDALASD"
merchantName:
type: string
example: "Test Limited"
payableAmount:
type: number
example: 100.00
amountPaid:
type: number
example: 100.00
completed:
type: boolean
example: true
settleInstantly:
type: boolean
example: true
CustomerDTO:
type: object
properties:
email:
type: string
example: "test@tester.com"
name:
type: string
example: "Test Reserved Account"
merchantCode:
type: string
example: "ALJKHDALASD"
Pageable:
type: object
properties:
sort:
$ref: "#/components/schemas/Sort"
pageSize:
type: integer
example: 10
pageNumber:
type: integer
example: 0
offset:
type: integer
example: 0
unpaged:
type: boolean
example: false
paged:
type: boolean
example: true
Sort:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
UpdateKycInfoRequest:
type: object
properties:
bvn:
type: string
description: "The customer's BVN."
example: "22222222222"
nin:
type: string
description: "The customer's NIN."
example: "121212121212"
required:
- bvn
- nin
UpdateKycInfoSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/UpdatedKycInfoDetails"
UpdatedKycInfoDetails:
type: object
properties:
accountReference:
type: string
example: "a1fe1c73c6f985eb43e8ef35ec0d6a398698cdea"
accountName:
type: string
example: "MARVELOUS BENJI"
customerEmail:
type: string
example: "test@tester.com"
customerName:
type: string
example: "mao Zhang"
bvn:
type: string
example: "21212121212"
CreateInvoiceRequest:
type: object
properties:
amount:
type: number
description: "The amount to be paid by the customer"
example: 999
currencyCode:
type: string
description: 'The currency of the transaction being initialized. "NGN"'
example: "NGN"
invoiceReference:
type: string
description: "Merchant's Unique reference for the invoice"
example: "183891300182"
customerName:
type: string
description: "Full name of the customer"
example: "John Snow"
customerEmail:
type: string
description: "Email of the customer"
example: "johnsnow@gmail.com"
contractCode:
type: string
description: "Merchant's contract code"
example: "7059707855"
description:
type: string
description: "Description of the transaction. Will be used as the account name for bank transfer payments"
example: "test invoice"
expiryDate:
type: string
format: date-time
description: "The expiry date for the invoice. The format is: YYYY-MM-DD HH:MM:SS"
example: "2022-10-30 12:00:00"
paymentMethods:
type: array
items:
type: string
example:
incomeSplitConfig:
type: array
items:
$ref: "#/components/schemas/IncomeSplitConfig"
description: "This field contains specifications on how payments to this reserve account should be split."
redirectUrl:
type: string
description: "A URL which customer will be redirected to when payment is successfully completed"
example: "http://app.monnify.com"
accountReference:
type: string
description: "Your unique reference used to identify this reserved account. Required if a reserved account is to be attached"
required:
- amount
- currencyCode
- invoiceReference
- customerName
- customerEmail
- contractCode
- description
- expiryDate
CreateInvoiceSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/InvoiceDetails"
InvoiceDetails:
type: object
properties:
amount:
type: number
example: 999
invoiceReference:
type: string
example: "183891300182"
invoiceStatus:
type: string
example: "PENDING"
description:
type: string
example: "test invoice"
contractCode:
type: string
example: "7059707855"
customerEmail:
type: string
example: "johnsnow@gmail.com"
customerName:
type: string
example: "John Snow"
expiryDate:
type: string
format: date-time
example: "2022-10-30 12:00:00"
createdBy:
type: string
example: "MK_TEST_JRQAZRFD2W"
createdOn:
type: string
format: date-time
example: "2022-07-31 12:14:14"
checkoutUrl:
type: string
example: "https://sandbox.sdk.monnify.com/checkout/MNFY|99|20220731121414|000867"
accountNumber:
type: string
example: "5000588061"
accountName:
type: string
example: "tes"
bankName:
type: string
example: "Moniepoint Microfinance bank"
bankCode:
type: string
example: "50515"
redirectUrl:
type: string
example: "http://app.monnify.com"
transactionReference:
type: string
example: "MNFY|99|20220731121414|000867"
incomeSplitConfig:
type: array
items:
$ref: "#/components/schemas/InvoiceSplitConfig"
InvoiceSplitConfig:
type: object
properties:
subAccountCode:
type: string
example: "MFY_SUB_322165393053"
splitAmount:
type: number
example: 20
feePercentage:
type: number
example: 10.5
feeBearer:
type: boolean
example: true
splitPercentage:
type: number
nullable: true
example: null
ViewInvoiceDetailsSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/InvoiceDetails"
GetAllInvoicesSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/InvoiceList"
InvoiceList:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/InvoiceListItem"
pageable:
$ref: "#/components/schemas/Pageable"
last:
type: boolean
example: true
totalElements:
type: integer
example: 6
totalPages:
type: integer
example: 1
sort:
$ref: "#/components/schemas/Sort"
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 6
size:
type: integer
example: 10
number:
type: integer
example: 0
empty:
type: boolean
example: false
InvoiceListItem:
type: object
properties:
amount:
type: number
example: 999
invoiceReference:
type: string
example: "18389130010082"
invoiceStatus:
type: string
example: "PENDING"
description:
type: string
example: "test invoice"
contractCode:
type: string
example: "7059707855"
customerEmail:
type: string
example: "johnsnow@gmail.com"
customerName:
type: string
example: "John Snow"
expiryDate:
type: string
format: date-time
example: "2022-10-30 12:00:00"
createdBy:
type: string
example: "MK_TEST_JRQAZRFD2W"
createdOn:
type: string
format: date-time
example: "2022-07-31 12:29:26"
accountNumber:
type: string
example: "5000588060"
bankName:
type: string
example: "Moniepoint Microfinance bank"
bankCode:
type: string
example: "50515"
CancelInvoiceSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/CancelledInvoiceDetails"
CancelledInvoiceDetails:
type: object
properties:
amount:
type: number
example: 999
invoiceReference:
type: string
example: "18389130010082"
invoiceStatus:
type: string
example: "CANCELLED"
description:
type: string
example: "test invoice"
contractCode:
type: string
example: "7059707855"
customerEmail:
type: string
example: "johnsnow@gmail.com"
customerName:
type: string
example: "John Snow"
expiryDate:
type: string
format: date-time
example: "2022-10-30 12:00:00"
createdBy:
type: string
example: "MK_TEST_JRQAZRFD2W"
createdOn:
type: string
format: date-time
example: "2022-07-31 12:29:26"
accountNumber:
type: string
example: "5000588060"
bankName:
type: string
example: "Moniepoint Microfinance bank"
bankCode:
type: string
example: "50515"
ChargeCardTokenRequest:
type: object
properties:
cardToken:
type: string
description: "Card token gotten by performing a re-query on a card transaction using the Get Transaction Status API."
example: "MNFY_0CD0138B45F7478E941C3EC6D3698969"
amount:
type: number
description: "The amount(in Naira) to be paid, minimum is N20"
example: 20
customerName:
type: string
description: "Full name of the customer"
example: "Marvelous Benji"
customerEmail:
type: string
description: "Email of the customer. The customer email used in the first charge"
format: email
example: "benjikali29@gmail.com"
paymentReference:
type: string
description: "A unique string of characters that identifies each transaction"
example: "1642776mml0068n2937"
paymentDescription:
type: string
description: "A description of the payment"
example: "Paying for Product A"
currencyCode:
type: string
description: "The currency code"
default: "NGN"
example: "NGN"
contractCode:
type: string
description: "The merchant contract code"
example: "5867418298"
apiKey:
type: string
description: "The merchant API key"
example: "MK_PROD_WTZLS10MX6"
metaData:
$ref: "#/components/schemas/MetaData"
incomeSplitConfig:
type: array
items:
$ref: "#/components/schemas/IncomeSplitConfig"
description: "A way to split payments among subAccounts."
required:
- cardToken
- amount
- customerEmail
- paymentReference
- contractCode
- apiKey
MetaData:
type: object
properties:
ipAddress:
type: string
description: "Customer's IP Address"
example: "127.0.0.1"
deviceType:
type: string
description: "Customer's Device Type"
example: "mobile"
ChargeCardTokenSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/ChargeCardTokenResponseBody"
ChargeCardTokenResponseBody:
type: object
properties:
transactionReference:
type: string
example: "MNFY|87|20230602223418|007039"
paymentReference:
type: string
example: "1642776mml0068n2937"
amountPaid:
type: string
example: "20.00"
totalPayable:
type: string
example: "20.00"
settlementAmount:
type: string
example: "19.68"
paidOn:
type: string
example: "02/06/2023 10:34:26 PM"
paymentStatus:
type: string
example: "PAID"
paymentDescription:
type: string
example: "Paying for Product A"
currency:
type: string
example: "NGN"
paymentMethod:
type: string
example: "CARD"
product:
$ref: "#/components/schemas/Product"
cardDetails:
$ref: "#/components/schemas/CardDetails"
accountDetails:
type: "object"
nullable: true
accountPayments:
type: array
items:
type: object
customer:
$ref: "#/components/schemas/CustomerDetails"
metaData:
$ref: "#/components/schemas/MetaData"
Product:
type: object
properties:
type:
type: string
example: "API_NOTIFICATION"
reference:
type: string
example: "1642776mml0068n2937"
CardDetails:
type: object
properties:
cardType:
type: string
example: "MasterCard"
last4:
type: string
example: "9098"
expMonth:
type: string
example: "07"
expYear:
type: string
example: "23"
bin:
type: string
example: "539941"
bankCode:
type: string
example: "057"
bankName:
type: string
example: "Zenith bank"
reusable:
type: boolean
example: true
countryCode:
type: "string"
nullable: true
cardToken:
type: string
example: "MNFY_0CD0138B45F7478E941C3EC6D3698969"
supportsTokenization:
type: boolean
example: false
maskedPan:
type: string
example: "539941******9098"
CustomerDetails:
type: object
properties:
email:
type: string
format: email
example: "benjikali29@gmail.com"
name:
type: string
example: "Marvelous Benji"
CreateMandateRequest:
type: object
properties:
contractCode:
type: string
description: "The merchant’s Monnify contract code"
example: "4934121686"
mandateReference:
type: string
description: "Merchants generated reference to identify a mandate"
example: "unique_ref3_02s600972"
mandateAmount:
type: number
description: "Total lifetime amount debitable on the mandate."
example: 50000
autoRenew:
type: boolean
description: "This informs Monnify wether the mandate will be renewed once it reaches end date."
example: false
customerCancellation:
type: boolean
description: "Informs Monnify if the Mandate can be cancelled by the customer"
example: true
customerName:
type: string
description: "The customer's name"
example: "Ankit Kushwaha"
customerPhoneNumber:
type: string
description: "The customer's phone number"
example: "1234567890"
customerEmailAddress:
type: string
format: email
description: "The customer's email address"
example: "test@moniepoint.com"
customerAddress:
type: string
description: "The customer's home address"
example: "123 Example Street, City, Country"
customerAccountNumber:
type: string
description: "The customer's bank account number"
example: "0051762787"
customerAccountBankCode:
type: string
description: "The bank code of the customer’s bank account"
example: "044"
mandateDescription:
type: string
description: "The description of the payment the mandate is associated to"
example: "Subscription Fee"
mandateStartDate:
type: string
format: date-time
description: "The start date for the mandate. The date format is: YYYY-MM-DDTHH:MM:SS"
example: "2024-12-19T10:15:30"
mandateEndDate:
type: string
format: date-time
description: "The end date for the mandate. The date format is: YYYY-MM-DDTHH:MM:SS"
example: "2025-12-19T10:15:30"
redirectUrl:
type: string
description: A URL to redirect to after payment completion.
example: "https://my-merchants-page.com/direct-debit/success"
debitAmount:
type: number
description: "The amount to be debited periodically."
nullable: true
example: null
required:
- contractCode
- mandateReference
- customerName
- customerEmailAddress
- customerPhoneNumber
- customerAddress
- customerAccountNumber
- customerAccountBankCode
- mandateDescription
- mandateStartDate
- mandateEndDate
CreateMandateSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/MandateCreationResponseBody"
MandateCreationResponseBody:
type: object
properties:
responseMessage:
type: string
example: "Your request for creating a mandate is submitted. An authorization instruction will be sent to the customer email."
mandateReference:
type: string
example: "unique_ref3_02s600972"
mandateCode:
type: string
example: "MTDD|01HY8W3FBKHTFBZP9DQ9KNHR1G"
mandateStatus:
type: string
example: "INITIATED"
redirectUrl:
type: string
example: "https://my-merchants-page.com/transaction/confirm"
GetMandateStatusSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: array
items:
$ref: "#/components/schemas/MandateStatusDetails"
MandateStatusDetails:
type: object
properties:
mandateCode:
type: string
example: "MTDD|01HY8WMN8JYKDRJC67QPQVS1N0"
externalMandateReference:
type: string
example: "unique_ref3_02gs600s972"
startDate:
type: string
format: date-time
example: "2024-05-19T09:15:30.000+0000"
endDate:
type: string
format: date-time
example: "2024-09-22T09:15:30.000+0000"
mandateStatus:
type: string
example: "ACTIVE"
mandateAmount:
type: integer
example: 50000
contractCode:
type: string
example: "4934121686"
autoRenew:
type: boolean
example: false
customerPhoneNumber:
type: string
example: "1234567890"
customerEmailAddress:
type: string
format: email
example: "test@moniepoint.com"
customerAddress:
type: string
example: "123 Example Street, City, Country"
customerName:
type: string
example: "Ankit Kushwaha"
customerAccountName:
type: string
example: "Ankit Kushwaha"
customerAccountNumber:
type: string
example: "0051762787"
customerAccountBankCode:
type: string
example: "998"
mandateDescription:
type: string
example: "Subscription Fee"
debitAmount:
type: "integer"
nullable: true
example: null
authorizationMessage:
type: "string"
example: "Request Ankit Kushwaha to kindly proceed with a token payment of N50.00 into account number 9020025928 with Fidelity Bank. This transfer must be initiated from the account in the mandate request. This payment will trigger the authentication of customer and will authorize this mandate."
nullable: true
authorizationLink:
type: "string"
example: "https://paylink.monnify.com/mandate-auth/MTDD%7C01K7M2Y6BN6QZ9KF0WEEG7YPVP?accountNumber=9020025928&bankName=Fidelity+Bank&customerAccountName=ANKIT++KUSHWAHA&amount=50.00"
nullable: true
DebitMandateRequest:
type: object
properties:
paymentReference:
type: string
description: "Merchants unique reference to identify a single direct debit payment"
example: "PR1234567991002"
mandateCode:
type: string
description: "Monnify generated mandate identifier"
example: "MTDD|01HY8WMN8JYKDRJC67QPQVS1N0"
debitAmount:
type: number
description: "Payment amount to be debited from a single debit transaction"
example: 1000.00
narration:
type: string
description: "Description of the single debit"
example: "Payment for Services"
customerEmail:
type: string
format: email
description: "The customer's email address"
example: "ahsan.saleem@gmail.com"
incomeSplitConfig:
type: array
items:
type: object
properties:
subAccountCode:
type: string
description: The unique reference for the sub account that should receive the split. Required if income split is enabled.
example: "MFY_SUB_319452883228"
feePercentage:
type: number
description: The percentage of the fee to be borne by the subAccount.
example: 10.5
splitAmount:
type: number
description: The constant amount to be sent to the subAccount for each transaction. Expected if splitPercentage is not provided
example: 20
splitPercentage:
type: number
description: The percent amount to be splitted into the subAccount for each transaction. Expected if splitAmount is not provided
example: 20
feeBearer:
type: boolean
description: Indicates if the subAccount bears the fee.
example: true
description: A way to split payments among subAccounts.
required:
- paymentReference
- mandateCode
- debitAmount
- narration
- customerEmail
DebitMandateSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/DebitMandateResponseBody"
DebitMandateResponseBody:
type: object
properties:
transactionStatus:
type: string
example: "PENDING"
responseMessage:
type: string
example: "Debit mandate request accepted for processing"
transactionReference:
type: string
example: "MNFY|20240519180055|000001"
paymentReference:
type: string
example: "PR1234567991002"
debitAmount:
type: integer
example: 1000
narration:
type: string
example: "Payment for Services"
mandateCode:
type: string
example: "MTDD|01HY8WMN8JYKDRJC67QPQVS1N0"
GetDebitStatusSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/DebitStatusDetails"
DebitStatusDetails:
type: object
properties:
transactionStatus:
type: string
example: "PAID"
responseMessage:
type: "object"
nullable: true
transactionReference:
type: string
example: "MNFY|20240519180055|000001"
paymentReference:
type: string
example: "PR1234567991002"
debitAmount:
type: integer
example: 1000
narration:
type: string
example: "Payment for Services"
mandateCode:
type: string
example: "MTDD|01HY8WMN8JYKDRJC67QPQVS1N0"
UpdateMandateSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/UpdateMandateResponseBody"
UpdateMandateResponseBody:
type: object
properties:
responseMessage:
type: string
example: "Mandate has been requested to be cancelled."
mandateReference:
type: string
example: "unique_ref3_02s600972"
mandateCode:
type: string
example: "MTDD|01HY8W3FBKHTFBZP9DQ9KNHR1G"
mandateStatus:
type: string
example: "ACTIVE"
CreateSubAccountRequest:
type: object
properties:
currencyCode:
type: string
description: 'Settlement currency. "NGN"'
example: "NGN"
accountNumber:
type: string
description: "The account number that should be created as a sub account."
example: "0211319282"
bankCode:
type: string
description: "The 3 digit bank code of the bank where the account number is domiciled"
example: "058"
email:
type: string
format: email
description: "The email tied to the sub account"
example: "tamira1@gmail.com"
defaultSplitPercentage:
type: number
description: "The default percentage to be split into the sub account on any transaction."
example: 20.87
required:
- currencyCode
- accountNumber
- bankCode
- email
- defaultSplitPercentage
CreateSubAccountSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: array
items:
$ref: "#/components/schemas/SubAccountDetails"
SubAccountDetails:
type: object
properties:
subAccountCode:
type: string
example: "MFY_SUB_811397375865"
accountNumber:
type: string
example: "0211319282"
accountName:
type: string
example: "ALEMOH DANIEL MOSES"
currencyCode:
type: string
example: "NGN"
email:
type: string
format: email
example: "tamira1@gmail.com"
bankCode:
type: string
example: "058"
bankName:
type: string
example: "GTBank"
defaultSplitPercentage:
type: number
example: 20.87
settlementProfileCode:
type: string
example: "8717495899"
settlementReportEmails:
type: array
items:
type: string
DeleteSubAccountSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
GetSubAccountsSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: array
items:
$ref: "#/components/schemas/SubAccountDetails"
UpdateSubAccountRequest:
type: object
properties:
subAccountCode:
type: string
description: "The sub account code of the account to be updated."
example: "MFY_SUB_811397375865"
currencyCode:
type: string
description: 'Settlement currency. "NGN"'
example: "NGN"
accountNumber:
type: string
description: "The account number that should be created as a sub account."
example: "0211319282"
bankCode:
type: string
description: "The 3 digit bank code of the bank where the account number is domiciled"
example: "058"
email:
type: string
format: email
description: "The email tied to the sub account"
example: "kali@gmail.com"
defaultSplitPercentage:
type: number
description: "The default percentage to be split into the sub account on any transaction."
example: 25
required:
- subAccountCode
- currencyCode
- accountNumber
- bankCode
- email
- defaultSplitPercentage
UpdateSubAccountSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/SubAccountDetails"
CreateLimitProfileRequest:
type: object
properties:
limitProfileName:
type: string
description: "The name of the Limit Profile"
example: "Profile0001"
singleTransactionValue:
type: number
description: "The maximum amount that can be allowed per transaction on the reserved accounts."
example: 2000
dailyTransactionValue:
type: number
description: "The maximum amount per day in all transactions that can be allowed on the reserved accounts"
example: 150000
dailyTransactionVolume:
type: integer
description: "The maximum number of transaction count per day allowed on the reserved accounts"
example: 500
required:
- limitProfileName
- singleTransactionValue
- dailyTransactionValue
- dailyTransactionVolume
CreateLimitProfileSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/LimitProfileDetails"
LimitProfileDetails:
type: object
properties:
limitProfileCode:
type: string
example: "FSYVVWU8UPBD"
limitProfileName:
type: string
example: "Profile0001"
singleTransactionValue:
type: integer
example: 2000
dailyTransactionVolume:
type: integer
example: 500
dailyTransactionValue:
type: integer
example: 150000
dateCreated:
type: string
example: "02/08/2022 02:27:43 AM"
lastModified:
type: string
example: "02/08/2022 02:27:43 AM"
GetLimitProfilesSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/LimitProfilePage"
LimitProfilePage:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/LimitProfileDetails"
pageable:
$ref: "#/components/schemas/PageableObject"
last:
type: boolean
example: true
totalElements:
type: integer
example: 3
totalPages:
type: integer
example: 1
sort:
$ref: "#/components/schemas/SortObject"
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 3
size:
type: integer
example: 10
number:
type: integer
example: 0
empty:
type: boolean
example: false
UpdateLimitProfileRequest:
type: object
properties:
limitProfileName:
type: string
description: "The name of the Limit Profile"
example: "prof991"
singleTransactionValue:
type: number
description: "The maximum amount that can be allowed per transaction on the reserved accounts."
example: 70000
dailyTransactionValue:
type: number
description: "The maximum amount per day in all transactions that can be allowed on the reserved accounts"
example: 100000000
dailyTransactionVolume:
type: integer
description: "The maximum number of transaction count per day allowed on the reserved accounts"
example: 4000
required:
- limitProfileName
- singleTransactionValue
- dailyTransactionValue
- dailyTransactionVolume
UpdateLimitProfileSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/LimitProfileDetails"
ReserveAccountWithLimitRequest:
type: object
properties:
contractCode:
type: string
description: "The merchant contract code"
example: "7059707855"
accountName:
type: string
description: "The name to be displayed during name enquiry"
example: "Kan Yo' Reserved with Limit"
currencyCode:
type: string
description: "The currency payments will be received with"
example: "NGN"
accountReference:
type: string
description: "A unique reference generated by merchants."
example: "ref-00--7"
customerEmail:
type: string
format: email
description: "The customer's email"
example: "KanYo@monnify.com"
customerName:
type: string
description: "customer name"
example: "Kan Yo"
getAllAvailableBanks:
type: boolean
description: "if you want to get all available banks"
example: false
preferredBanks:
type: array
items:
type: string
description: "list of preferred banks"
example: ["50515"]
limitProfileCode:
type: string
description: "The unique identifier that references the limit profile to associate with the reserved accounts."
example: "FSYVVWU8UPBD"
required:
- contractCode
- accountName
- accountReference
- limitProfileCode
ReserveAccountWithLimitSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/ReservedAccountDetailsWithLimit"
ReservedAccountDetailsWithLimit:
type: object
properties:
contractCode:
type: string
example: "7059707855"
accountReference:
type: string
example: "ref-00--7"
accountName:
type: string
example: "Kan"
currencyCode:
type: string
example: "NGN"
customerEmail:
type: string
format: email
example: "KanYo@monnify.com"
customerName:
type: string
example: "Kan Yo"
accountNumber:
type: string
example: "5000578928"
bankName:
type: string
example: "Moniepoint Microfinance bank"
bankCode:
type: string
example: "50515"
collectionChannel:
type: string
example: "RESERVED_ACCOUNT"
reservationReference:
type: string
example: "0B70FP4CNC61U334XFG1"
reservedAccountType:
type: string
example: "GENERAL"
status:
type: string
example: "ACTIVE"
createdOn:
type: string
format: date-time
example: "2022-08-02T02:53:25.617Z"
incomeSplitConfig:
type: array
items:
type: object
restrictPaymentSource:
type: boolean
example: false
limitProfileConfig:
$ref: "#/components/schemas/LimitProfileConfigDetails"
UpdateReserveAccountLimitRequest:
type: object
properties:
accountReference:
type: string
description: "A unique reference generated by merchants."
example: "ref-00--7"
limitProfileCode:
type: string
description: "The unique identifier that references the limit profile to associate with the reserved accounts."
example: "FSYVVWU8UPBD"
required:
- accountReference
- limitProfileCode
UpdateReserveAccountLimitSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/ReservedAccountDetailsWithLimit"
InitiateRefundRequest:
type: object
properties:
transactionReference:
type: string
description: "Unique identifier for the transaction generated by Monnify."
example: "MNFY|65|20220727094724|000477"
refundAmount:
type: number
description: "Amount to refund."
example: 100
refundReference:
type: string
description: "Unique identifier for the transaction refund generated by the merchant."
example: "202100op3456"
refundReason:
type: string
description: "A note describing reason why this transaction is being refunded."
example: "Order cancelled!"
customerNote:
type: string
description: "This field serves as a narration in credit to the customer's bank account."
example: "An optional note"
destinationAccountNumber:
type: string
description: "The account number to be refunded"
example: "3270005594"
destinationAccountBankCode:
type: string
description: "The bank code for the destinationAccountNumber."
example: "050"
required:
- transactionReference
- refundAmount
- refundReference
- refundReason
- customerNote
InitiateRefundSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/RefundDetails"
RefundDetails:
type: object
properties:
refundReference:
type: string
example: "202100op3456"
transactionReference:
type: string
example: "MNFY|65|20220727094724|000477"
refundReason:
type: string
example: "Order cancelled!"
customerNote:
type: string
example: "An optional note"
refundAmount:
type: integer
example: 100
refundType:
type: string
example: "PARTIAL_REFUND"
refundStatus:
type: string
example: "COMPLETED"
refundStrategy:
type: string
example: "MERCHANT_WALLET"
comment:
type: string
example: "Transaction refund is in progress."
createdOn:
type: string
format: date-time
example: "02/08/2022 03:35:22 AM"
# Wallet schema used for arrays/listing endpoints
Wallet:
type: object
description: A wallet object returned in lists (mirrors the CreateWalletSuccessResponse.responseBody)
properties:
walletName:
type: string
description: The name of the wallet
example: "Staging Wallet - ref1684248425966"
walletReference:
type: string
description: The unique identifier for the wallet
example: "ref1684248425966"
customerName:
type: string
description: The customer's name
example: "John Doe"
customerEmail:
type: string
description: The customer's email
example: "johndoe@example.com"
feeBearer:
type: string
example: "SELF"
bvnDetails:
type: object
properties:
bvn:
type: integer
minLength: 11
maxLength: 11
example: "22222222226"
bvnDateOfBirth:
type: string
format: date
example: "1994-09-07"
accountNumber:
type: string
description: The account number associated with the wallet
example: "1234567890"
accountName:
type: string
description: The account name associated with the wallet
example: "John Doe"
topUpAccountDetails:
type: object
properties:
accountNumber:
type: string
example: "1234567890"
accountName:
type: string
example: "John Doe"
bankCode:
type: string
example: "50515"
bankName:
type: string
example: "Moniepoint MFB"
createdOn:
type: string
format: date-time
example: "2025-11-12T11:40:25.344+00:00"
GetRefundStatusSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/RefundDetails"
GetAllRefundsSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/RefundPage"
RefundPage:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/RefundDetails"
pageable:
$ref: "#/components/schemas/PageableObject"
last:
type: boolean
example: false
totalElements:
type: integer
example: 17
totalPages:
type: integer
example: 2
sort:
$ref: "#/components/schemas/SortObject"
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 10
size:
type: integer
example: 10
number:
type: integer
example: 0
empty:
type: boolean
example: false
GetTransactionsBySettlementReferenceSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/TransactionPage"
TransactionPage:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/TransactionDetails"
pageable:
$ref: "#/components/schemas/PageableObject"
last:
type: boolean
example: true
totalElements:
type: integer
example: 4
totalPages:
type: integer
example: 1
sort:
$ref: "#/components/schemas/SortObject"
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 4
size:
type: integer
example: 20
number:
type: integer
example: 0
empty:
type: boolean
example: false
TransactionDetails:
type: object
properties:
transactionReference:
type: string
example: "MNFY|28|20220718162222|066201"
paymentReference:
type: string
example: "1658157741945"
amountPaid:
type: string
example: "20.32"
totalPayable:
type: string
example: "20.32"
settlementAmount:
type: string
example: "20.00"
paidOn:
type: string
example: "18/07/2022 04:23:55 PM"
paymentStatus:
type: string
example: "PAID"
paymentDescription:
type: string
example: "lets pay"
transactionHash:
type: string
example: "218523babb5416ed29477d618c315f458d6a7e881edf9d7a7cfb5fa7a61a16857f80cb1a795ee07cdfd92f9502970cb71d59c4b21017952feacff99f17cbdb92"
currency:
type: string
example: "NGN"
paymentMethod:
type: string
example: "CARD"
product:
type: object
properties:
type:
type: string
example: "WEB_SDK"
reference:
type: string
example: "1658157741945"
cardDetails:
type: object
properties:
cardType:
type: string
example: "MasterCard"
last4:
type: string
example: "9098"
expMonth:
type: string
example: "07"
expYear:
type: string
example: "23"
bin:
type: string
example: "539941"
bankCode:
type: string
example: "057"
bankName:
type: string
example: "Zenith bank"
reusable:
type: boolean
example: true
countryCode:
type: "null"
cardToken:
type: string
example: "MNFY_1B4B8224C4A847DE847B094AB7B979F9"
supportsTokenization:
type: boolean
example: true
maskedPan:
type: string
example: "539941******9098"
accountDetails:
type: "null"
accountPayments:
type: array
items:
type: object
customer:
type: object
properties:
email:
type: string
example: "test@teamapt.com"
name:
type: string
example: "Marvelous Benji"
metaData:
type: object
example:
name: "Damilare"
age: "45"
ValidateBankAccountSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/AccountValidationDetails"
AccountValidationDetails:
type: object
properties:
accountNumber:
type: string
example: "0123456789"
accountName:
type: string
example: "Damilare Ogunnaike"
bankCode:
type: string
example: "057"
BVNVerificationRequest:
type: object
required:
- bvn
- name
- dateOfBirth
- mobileNo
properties:
bvn:
type: string
example: "22222222226"
description: "The user's bvn"
name:
type: string
example: "OLATUNDE JOSIAH OGUNBOYEJO"
description: "The user’s name"
dateOfBirth:
type: string
example: "27-Apr-1993"
description: "The user’s date of birth"
mobileNo:
type: string
example: "08142223149"
description: "The user's mobile number"
BVNVerificationSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/BVNVerificationDetails"
BVNVerificationFailureResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: false
responseMessage:
type: string
example: "Unable to process request. Invalid BVN provided"
responseCode:
type: string
example: "99"
BVNVerificationDetails:
type: object
properties:
bvn:
type: string
example: "22228945899"
name:
type: object
properties:
matchStatus:
type: string
enum:
- "FULL_MATCH"
- "PARTIAL_MATCH"
- "NO_MATCH"
example: "FULL_MATCH"
matchPercentage:
type: integer
example: 100
dateOfBirth:
type: string
enum:
- "FULL_MATCH"
- "NO_MATCH"
example: "NO_MATCH"
mobileNo:
type: string
enum:
- "FULL_MATCH"
- "NO_MATCH"
example: "FULL_MATCH"
BVNAccountMatchRequest:
type: object
required:
- bankCode
- accountNumber
- bvn
properties:
bankCode:
type: string
example: "057"
description: "The user’s bank code"
accountNumber:
type: string
example: "2191802645"
description: "The user's account number"
bvn:
type: string
example: "22222222226"
description: "The user’s bvn"
BVNAccountMatchSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/BVNAccountMatchDetails"
BVNAccountMatchFailureResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: false
responseMessage:
type: string
example: "Unable to process request. Invalid BVN provided"
responseCode:
type: string
example: "99"
BVNAccountMatchDetails:
type: object
properties:
bvn:
type: string
example: "22222222226"
accountNumber:
type: string
example: "0103284175"
accountName:
type: string
example: "OLATUNDE JOSIAH OGUNBOYEJO"
matchStatus:
type: string
enum:
- "FULL_MATCH"
- "NO_MATCH"
example: "FULL_MATCH"
matchPercentage:
type: integer
example: 100
NINVerificationRequest:
type: object
required:
- nin
properties:
nin:
type: string
example: "94646622685"
description: "The customer’s NIN number"
NINVerificationSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
$ref: "#/components/schemas/NINVerificationDetails"
NINVerificationFailureResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: false
responseMessage:
type: string
example: "NIN not found. Please check and try again."
responseCode:
type: string
example: "99"
NINVerificationDetails:
type: object
properties:
nin:
type: string
example: "91919191913"
lastName:
type: string
example: "WILES"
firstName:
type: string
example: "BENJAMIN"
middleName:
type: string
example: "CHUKS"
dateOfBirth:
type: string
example: "1996-10-08"
gender:
type: string
example: "OTHER"
mobileNumber:
type: string
example: "2348107248890"
CategoryResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
content:
type: array
items:
type: object
properties:
code:
type: string
name:
type: string
totalElements:
type: integer
size:
type: integer
number:
type: integer
empty:
type: boolean
BillerResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
content:
type: array
items:
type: object
properties:
code:
type: string
name:
type: string
categories:
type: array
items:
type: object
properties:
code:
type: string
name:
type: string
ProductResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
content:
type: array
items:
type: object
properties:
code:
type: string
name:
type: string
minAmount:
type: number
nullable: true
maxAmount:
type: number
nullable: true
price:
type: number
nullable: true
priceType:
type: string
VendRequest:
type: object
required:
- productCode
- customerId
- amount
- reference
properties:
productCode:
type: string
description: The unique code for the product being purchased.
example: "245"
customerId:
type: string
description: The customer's identifier (e.g., phone number, meter number).
example: "08130211113"
validationReference:
type: string
description: A reference obtained from the customer validation endpoint, if required.
example: "724707993771"
amount:
type: number
description: The amount for the transaction.
example: 300
emailAddress:
type: string
format: email
description: The customer's email address for notifications.
example: "customer@example.com"
phoneNumber:
type: string
description: The customer's phone number.
example: "09135914842"
reference:
type: string
description: A unique reference for this transaction.
example: "REF-MH0H27YL-966MVT"
VendResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
vendReference:
type: string
transactionReference:
type: string
vendStatus:
type: string
description:
type: string
vendAmount:
type: number
payableAmount:
type: number
commission:
type: number
customerId:
type: string
productCode:
type: string
productName:
type: string
billerCode:
type: string
billerName:
type: string
RequeryResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
transactionReference:
type: string
vendStatus:
type: string
description:
type: string
ValidateCustomerRequest:
type: object
required:
- productCode
- customerId
properties:
productCode:
type: string
description: The unique code for the product.
example: "13"
customerId:
type: string
description: The customer's identifier to validate.
example: "08130211113"
ValidateCustomerResponse:
type: object
properties:
requestSuccessful:
type: boolean
responseMessage:
type: string
responseCode:
type: string
responseBody:
type: object
properties:
customerName:
type: string
priceType:
type: string
price:
type: number
nullable: true
vendInstruction:
type: object
properties:
requireValidationRef:
type: boolean
validationReference:
type: string
CreatePaycodeRequest:
type: object
required:
- beneficiaryName
- amount
- paycodeReference
- expiryDate
- clientId
properties:
beneficiaryName:
type: string
description: "The customer's name"
example: "Marvelous Benji"
amount:
type: number
description: "The amount to be withdrawn"
example: 30
paycodeReference:
type: string
description: "A unique reference generated by the merchant"
example: "ur749o04jhke993u93o"
expiryDate:
type: string
description: "The expiry date for the paycode. The format is:YYYY-MM-DD HH:MM:SS"
example: "2023-10-18 19:00:26"
clientId:
type: string
description: "The merchant's APIKey"
example: "MK_PROD_GFVLE0PZTQ"
CreatePaycodeSuccessResponse:
type: object
properties:
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "M00"
responseBody:
$ref: "#/components/schemas/PaycodeDetails"
PaycodeDetails:
type: object
properties:
paycode:
type: string
example: "11467409"
transactionReference:
type: string
example: "MFY-39A78F78E6C341759ACA344297A8CF70"
paycodeReference:
type: string
example: "ghehdekdkefkefjekjfejj"
beneficiaryName:
type: string
example: "Marvelous Benji"
amount:
type: number
example: 50
fee:
type: integer
example: 100
transactionStatus:
type: string
example: "PENDING"
expiryDate:
type: string
example: "2023-02-19 11:00:26"
createdOn:
type: string
format: date-time
example: "2023-02-16T12:32:01.591+0000"
createdBy:
type: string
example: "MK_PROD_WTZLS10MX6"
modifiedBy:
type: string
example: "MK_PROD_WTZLS10MX6"
GetPaycodeSuccessResponse:
type: object
properties:
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "M00"
responseBody:
$ref: "#/components/schemas/PaycodeDetails"
FetchPaycodesSuccessResponse:
type: object
properties:
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "M00"
responseBody:
$ref: "#/components/schemas/PaycodeHistory"
PaycodeHistory:
type: object
properties:
content:
type: array
items:
$ref: "#/components/schemas/PaycodeDetails"
pageable:
$ref: "#/components/schemas/Pageable"
last:
type: boolean
example: true
totalPages:
type: integer
example: 1
totalElements:
type: integer
example: 1
sort:
$ref: "#/components/schemas/Sort"
first:
type: boolean
example: true
numberOfElements:
type: integer
example: 1
size:
type: integer
example: 50
number:
type: integer
example: 0
empty:
type: boolean
example: false
ErrorResponse:
type: object
properties:
requestSuccessful:
type: boolean
description: Indicates if the request was successful.
example: "false"
responseCode:
type: integer
description: A response code.
example: 99
responseMessage:
type: string
description: A message describing the response.
example: "Failure reason is specified here"
example:
requestSuccessful: false
responseCode: 99
responseMessage: "I failed because of this reason"
Bank:
type: object
properties:
name:
type: string
example: "Access Bank"
code:
type: string
example: "044"
ussdTemplate:
type: string
nullable: true
example: "*901*Amount*AccountNumber#"
baseUssdCode:
type: string
nullable: true
example: "*901#"
transferUssdTemplate:
type: string
nullable: true
example: "*901*AccountNumber#"
PageableObject:
type: object
properties:
sort:
$ref: "#/components/schemas/SortObject"
pageSize:
type: integer
example: 10
pageNumber:
type: integer
example: 0
offset:
type: integer
example: 0
unpaged:
type: boolean
example: false
paged:
type: boolean
example: true
SortObject:
type: object
properties:
sorted:
type: boolean
example: true
unsorted:
type: boolean
example: false
empty:
type: boolean
example: false
LimitProfileConfigDetails:
type: object
properties:
limitProfileCode:
type: string
example: "FSYVVWU8UPBD"
limitProfileName:
type: string
example: "Profile0001"
singleTransactionValue:
type: number
example: 2000
dailyTransactionVolume:
type: integer
example: 500
dailyTransactionValue:
type: number
example: 150000
GetSettlementInformationForTransactionSuccessResponse:
type: object
properties:
requestSuccessful:
type: boolean
example: true
responseMessage:
type: string
example: "success"
responseCode:
type: string
example: "0"
responseBody:
type: object
properties:
transactionReference:
type: string
example: "MNFY|28|20220718162222|066201"
settlementReference:
type: string
example: "MFST20220718000001"
settlementDate:
type: string
example: "2022-07-19"
settlementAmount:
type: number
example: 20.00
currency:
type: string
example: "NGN"