Direct Debit Integration Guide- Mandate Setup (Variable)
Last updated May 22nd, 2026
Step 2 (Option A): Variable bank mandate
Variable recurring mandate is an ideal option for businesses looking to collect a varied amount from their customers based on a set total debit for a period of time. For example, you authorise a mandate amount of NGN 200,000 for 6 months which can be debited in varied amounts and time.
Request Body Parameters
Using the customer ID (which is returned in the previous step) the next step is to create a mandate on an account belonging to this customer. To do this, a partner will need to provide the following information:
| Field | Description |
| amount (required) | This is the maximum amount to be debited from the user's account throughout the mandate (i.e from start to end date) in kobo. e.g NGN 200,000 should be passed as 20000000 |
| type (required) | This expects a string value i.e recurring-debit |
| method (required) | This field expects a string value i.e mandate. |
| mandate_type (required) | This can either be emandate or sweep. |
| debit_type (required) | This field expects the type of debit i.e variable |
| description (required) | This field expects a description of the set mandate. |
| reference (required) | This expects a unique reference ID for this particular reference. |
| account_number (optional) | This field expects the account number of user |
| bank_code (optional) | This field expects the bank code retrieved from the get bank list. You can visit here to get the bank code of the user's financial institution. |
| start_date (required) | This expects the start date for this mandate to begin. e.g. 2024-12-15 |
| end_date (required) | This expects the end date for this mandate to end. e.g. 2024-05-25 |
| customer (object, required) | This expects the customer ID as seen in the response here |
| meta (object, optional) | This object can be used to include additional information about the mandate. |
cURL Sample Request: For Variable E-Mandate
Request
curl --request POST \
--url https://api.withmono.com/v2/payments/initiate \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'mono-sec-key: string' \
--data {
"amount": 9190030,
"type": "recurring-debit",
"method": "mandate",
"mandate_type": "emandate", // or "sweep"
"debit_type": "variable",
"account_number": "2034332445",
"bank_code": "001",
"description": "Repayment for samuel@neem.com",
"reference": "test-O2b9O9EF903-949493432",
"redirect_url": "https://mono.co",
"customer": {
"id": "65eb623b0000900009e5c1f21cd"
},
"start_date": "2024-03-29",
"end_date": "2024-08-04",
"meta": {}
}

Skipping the bank account selection step
The bank account selection step can be skipped by providing the account_number and bank_code in the request body. You can retrieve the bank code from the get banks endpoint.
Success Response
If the emandate or sweep request has been initiated successfully, you will receive the following response:
Request
{
"status": "successful",
"message": "Payment Initiated Successfully",
"data": {
"mandate_id": "mmc_682b977203c0b7360787b46g",
"type": "recurring-debit",
"method": "mandate",
"amount": 9190030,
"mandate_type": "emandate", // or "sweep"
"mono_url": "https://authorise.mono.co/RD3044259",
"description": "Repayment for samuel@neem.com",
"reference": "test-O2b9O9EF903-949493432",
"customer": "65eb623b0000900009e5c1f21cd",
"redirect_url": "https://mono.co",
"created_at": "2024-03-12T14:17:31.548Z",
"updated_at": "2024-03-12T14:17:31.548Z",
"start_date": "2024-03-19",
"end_date": "2024-08-04"
}
}

Mandate Webhooks
Upon successful mandate initiation, rejection, or approval, different webhooks are triggered. You can view all webhooks events and their payload here.
Important: Mandate Setup
Please take note that for the successful setup of a direct debit mandate, it is essential that the Customer Name and Account Name match accurately.
Additional operations that can be performed on a direct debit mandate are:
- Cancelling a direct debit mandate 🔗
- Pausing a direct debit mandate 🔗
- Reinstating a direct debit mandate 🔗
- Retrieve a direct debit mandate 🔗
- Get all direct debit mandates 🔗

Re: Debits by Variable Mandate
Please note that since there is no fixed schedule for debiting an account for Variable Mandates, each debit must be triggered via the API, following the instructions in Step 3: Debit an Account.
