Mono Sweep Integration Guide
Last updated August 5th, 2026
Step 1: Initiate the mandate
Initiate Mono Sweep via the Initiate a Mandate API with mandate_type set to sweep.
Use the Initiate a Mandate API
To set up Mono Sweep, you must use the Initiate a Mandate API. The Create a Mandate API does not support Mono Sweep and will fail for Mono Sweep setups.
The mono_url field in the response is the only field you act on — redirect your customer to it so they can add their account details and complete the authorization flow.
Request
{
"status": "successful",
"message": "Payment Initiated Successfully",
"timestamp": "2026-03-28T14:44:02.084Z",
"data": {
"mandate_id": "mmc_69c7e9760dbd802f35843aee",
"type": "recurring-debit",
"method": "mandate",
"amount": 20000,
"mandate_type": "sweep",
"mono_url": "https://authorise.mono.co/RD0024260424",
"description": "test",
"reference": "livetesting1O9O9EF90300",
"customer": "692da79111e73c006ec580a4",
"redirect_url": "https://mono.co",
"created_at": "2026-03-26T14:44:02.084Z",
"updated_at": "2026-03-26T14:44:02.084Z",
"start_date": "2026-11-30",
"end_date": "2026-12-04",
"meta": {
"loan_id": "a12bjce"
}
}
}
Step 2: Customer setup and confirmation
Your customer uses the mono_url to confirm and authorize the mandate. Here's the flow your customer follows:
Account linking: Select account type (Personal or Business), choose bank, and enter account number.
Identity verification: Enter BVN, then input the OTP sent to their phone to verify it. The date of birth associated with the BVN is required to complete verification.
Ownership validation: Send NGN 50 to the NIBSS-designated account displayed on screen. Once confirmed, Mono authorizes the mandates on all linked accounts and sends a webhook event to your URL.

Mandate approval timeline
Following a successful NGN 50 authorization payment, the activation of the primary and linked accounts is generally finalized within 3–7 minutes.
Setup charges and service downtimes
The NGN 500 setup fee covers multiple operations during the Mono Sweep setup process, including BVN verification and fetching all bank accounts linked to the customer's BVN.
Important: Because fees are incurred at several stages of the setup process, if you attempt a Mono Sweep setup during a service downtime and the setup fails to complete, you may still be charged the setup fee without a refund. We recommend monitoring service status announcements before initiating a Mono Sweep setup.
Step 3: Confirm the mandate is ready to debit
Before you can collect funds, Mono Sweep must be ready to debit. This is indicated by the events.mandates.ready webhook event, sent within 5 minutes to 24 hours after the mandate approval. In rare cases, this could take more than 48 hours.
The ready_to_debit field is the flag you gate debits on — only start collecting funds when it is true.
Sample response
Request
{
"data": {
"event": "events.mandates.ready",
"data": {
"id": "mmc_69a72021334450c8f673be95",
"status": "approved",
"mandate_type": "sweep",
"debit_type": "variable",
"ready_to_debit": true,
"nibss_code": "RC227914/1580/0020510612",
"approved": true,
"reference": "YL0Uxrsp2mXcrpo0iRCe",
"account_name": "JANE DOE",
"account_number": "12345678910",
"bank": "United Bank For Africa",
"bank_code": "033",
"customer": "697c923c41a19158bd01d790",
"description": "Mono Test",
"live_mode": true,
"message": "Mandate is now ready for debiting",
"start_date": "2026-03-03T00:00:00.000Z",
"end_date": "2027-12-31T22:59:59.999Z",
"date": "2026-03-03T17:52:18.705Z",
"amount": 10000000,
"fee_bearer": "business",
"verification_method": "transfer_verification",
"app": "67adadced23314578c206100",
"business": "67adaad3d210314578c205d10"
}
}
}
If the event does not arrive, check the Mandates History tab in the dashboard for the mandate's status.
Step 4: Collect funds
Once the mandate is ready to debit (confirmed via the events.mandates.ready webhook), you can begin collecting funds.
| Fixed Mono Sweep | Variable Mono Sweep | |
| Who triggers debits | Mono, automatically | You, via the Debit Account API |
| Scheduling | Based on the schedule set at mandate initiation | On your schedule, see Debiting the account |
| Tracking | Retrieve all Debits API or the Mandates History tab in the dashboard | Same |

Debiting linked accounts
Mono Sweep attempts the debit on the primary account first. If the balance is insufficient, it checks for an approved linked account with adequate balance and debits it.
Webhook confirmation
On each successful debit, you will receive the events.mandates.debit.successful webhook. If a debit attempt fails, you will receive the events.mandates.debit.failed webhook instead. See the webhook events reference for all debit events.
Request
{
"event": "events.mandates.debit.successful",
"data": {
"status": "successful",
"message": "Account debited successfully.",
"response_code": "00",
"amount": 50000,
"customer": "6570ee1115ddbc5528fea1c8",
"mandate": "mmc_6571f4e55c7d1843d7d162e9",
"reference_number": "Ah20141329b841234",
"account_details": {
"bank_code": "058",
"account_name": "SAMUEL OLAMIDE",
"account_number": "0123456789",
"bank_name": "GUARANTY TRUST BANK PLC"
},
"beneficiary": {
"bank_code": "000",
"account_name": "Mono",
"account_number": "P000001",
"bank_name": "MONO SETTLEMENT WALLET"
},
"date": "2023-12-14T10:41:42.016Z",
"app": "60cc8f95ba1772018c123456",
"fee_bearer": "business",
"business": "60cc8f95ba1772018c123456"
}
}

Partial Sweep
For mandates with Partial Sweep enabled, debits follow an asynchronous flow: a processing event is sent immediately, followed by the final outcome across your customer's linked accounts.
Next steps
- Learn about Partial Sweep to recover outstanding payments across linked accounts.
- Browse all Direct Debit webhook events.
- Explore the Initiate a Mandate API and Debit Account API references.
