Direct Debit Integration Guide- Mandate Setup (Fixed)
Last updated May 22nd, 2026
Step 2 (Option B): Fixed bank mandate
Fixed recurring mandate is an ideal option for businesses looking to collect a consistent amount from their customers for a set period. The fixed debit type handles recurring debits using our internal schedulers. For example, you authorise a mandate amount of NGN 10,000 to be debited monthly for twelve months which will be automatically totalled and calculated by our systems as NGN 120,000.

Re: Debits by Fixed Mandate
Please take note that the debits for fixed mandates are scheduled when creating the mandate and automatically debited from the customer's account on the set date. The Debit Account API is NOT supported for a fixed mandate type.
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 fixed amount to be debited from the user's account per debit cycle in kobo. e.g NGN 200 should be passed as 20000 |
| 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 fixed |
| 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 |
| frequency (required) | This expects the frequency of the debit daily, weekly, monthly and yearly. For custom frequencies use days, weeks, months and provide a whole number value in the interval field |
| interval | This expects any whole number (e.g. 1, 5) as it's only required when days, weeks, months are set as the frequency |
| retrial_frequency (required) | This expects the number of retries on a particular debit date [Minimum is 1 & Maximum is 6]. For example, if a customer's debit date is 2024-03-04 but the initial debit failed, the retrial_frequency keeps retrying for the number of times specified at mandate creation. |
| initial_debit_date (required) | This expects the first day/date to debit the mandate account. Must be greater than start_date |
| initial_debit_amount | This expects the initial amount to debit on the initial_debit_date |
| grace_period (required) | This expects the number of days to continue debiting an account before setting the next debit date to the next frequency date |
| minimum_due (required) | This expects an amount in a case of failed debits due to insufficient funds, the minimum_due is attempted i.e anything you can find, give debit |
| customer (object) | 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 Fixed E-Mandate or Signed 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 {
"type": "recurring-debit",
"debit_type": "fixed",
"customer": {
"id": "6629259fe903b1"
},
"mandate_type": "emandate", // or "sweep"
"amount": 200000,
"reference": "nomo-test-24-04-24-02",
"description": "nomo Mandate Test",
"account_number": "2034332445",
"bank_code": "001",
"redirect_url": "https://mono.co",
"start_date": "2024-04-29",
"end_date": "2024-05-30",
"retrial_frequency": 1,
"frequency": "weekly",
"initial_debit_date": "2024-04-30",
"grace_period": 6,
"minimum_due": 20000, // if we are unable to debit the main amount, this minimum due is what we can collect from the account
"initial_debit_amount": 30000, // After the approval of the mandate, this is the first debit (OPTIONAL)
"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": 200000,
"mandate_type": "emandate", // or "sweep"
"mono_url": "https://authorise.mono.co/RD3044259",
"description": "nomo Mandate Test",
"reference": "nomo-test-24-04-24-02",
"customer": "6629259fe903b1",
"redirect_url": "https://mono.co",
"created_at": "2024-03-12T14:17:31.548Z",
"updated_at": "2024-03-12T14:17:31.548Z",
"start_date": "2024-04-29",
"end_date": "2024-05-30"
}
}

Mandate Webhooks
Upon successful mandate initiation, rejection, or approval, different webhooks are triggered. You can view all webhooks events and their payload here.

Custom Frequencies
If you need to configure custom frequencies for a fixed mandate beyond the standard daily, weekly, bi-weekly, monthly, and yearly options, you can use days, weeks, or months as the frequency.
You can then set any whole number (e.g., 1, 5) in the interval field to specify the frequency.
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:
