Today the process of loan recovery doesn’t work like they used to. Lenders rely heavily on card payments to automate their repayment process, while this method is somewhat effective, they aren’t very reliable. Besides the high processing fees that businesses have to deal with, there are cases where cards submitted by users are expired, not funded, or cancelled by malicious debtors, making these loans irrecoverable.
To reduce the chances of defaults and missed payments, lenders need to provide borrowers with multiple ways to repay their debts on a periodic basis, without impacting their experience. This is where Mono Direct Debit comes in.
What is Mono Direct Debit?
The Mono Direct Debit product empowers businesses to seamlessly and securely collect single and recurring payments from customers' bank accounts with their permission. This process happens through a simple API integration which allows you to set up payments instructions called mandates across multiple financial institutions and account types, to collect scheduled payments from customers’ accounts.
With Mono Direct Debit, you can easily collect variable or fixed payments without consistent reauthorization. Your users can also establish payment limits with long-lasting consent for a specific period, detailing the total amount and payment frequency.
This means that you can create mandates on a user’s account for the loan sum (plus interest) during a set period and once this has been set, you can debit the user's bank account directly.
Types of Mono Direct Debit mandates
Here are the types of payments you can collect with Mono Direct Debit:
Variable Mandate: This mandate type allows you to debit varying amounts from a user’s account within the start and end date specified during mandate creation. This means that the business can choose when to initiate a debit on an approved mandate. Variable mandates offer a lot more flexibility when trying to set up a loan repayment process.
Fixed Mandate: This mandate type allows you to debit a user’s account on specific dates and intervals. Once a fixed mandate has been created and approved, the debit dates or amount can’t be adjusted. Unlike variable mandates that give you flexibility on when to debit the customer, the debit dates for fixed mandates are automatically set once the mandate is created
In both cases, the amount you can debit from a user’s account is limited by the total amount set on the created mandates and its start and end date.
Types of mandate authorization
There are currently two ways to authorise a mandate with Mono Direct Debit, no matter the mandate type you use. They are:
E-mandate: With this authorization method, the customer is required to transfer a one-time fee of NGN 50 to a NIBSS-d
esignated account, using the bank account they linked. This payment serves as a way for the user to verify their account ownership and complete the mandate approval process. E-mandates can be set up for both personal and business accounts, and the approval process is faster.
Signed mandates: Here, the user must provide a signature to approve the mandate, and the customer's bank typically contacts the customer to confirm the mandate set on their account. Signed mandates are an alternative for businesses that don’t want their customers to pay the N50 deposit. This mandate authorization method can be set up for personal, joint, and business accounts, and approval times take 1 hour to 72 hours.
While both mandate authorization types work on personal and business accounts, the signed mandates may be a more suitable option when creating mandates on accounts with multiple signatories as part of their internal processes.
Benefits of using Mono Direct Debit
As a business, there are certain benefits to using the Mono Direct Debit product.
Compatibility with Mono Connect
With Mono Connect v2, every account linked via the Mono widget has a customer ID generated and returned in the webhook. This customer ID returned can then be passed from initiating the account linking process to the mandate authorisation endpoint. The Mono Connect APIs help you link a user's bank account and retrieve financial data information about a user to determine their eligibility for credit. When combined with the Direct Debit product it can help you manage repayments and greatly reduce the risk of non-performing loans.
Future-dated Payments
The Mono Direct Debit fixed payments cover this use case but you can also schedule loan instalments/repayments for automatic execution using the variable payments. Using variable payments means that you can debit the customer within and outside the set dates you have specified as long it is within the limited time range in cases where the repayment fails or the user defaults.
Ease of use and status tracking
The Mono dashboard serves as a source of truth for tracking the status and progress of your direct debit payments. When mandates are created and debits are made, the details for each user appear on the dashboard, so teams can track the payment progress for each user. We also send several comprehensive webhook events to your servers for different mandate and debit actions.
Integrating the Mono Direct Debit API for automated loan repayments
For this article, we will focus on how to set up a loan repayment process with variable mandates using the e-mandate authorization method.
To get started, here are a few things you need to do:
Create a Mono account here, if you don’t have one
Submit all required business documents and complete the compliance process.
Create an app on the Mono dashboard and select
DirectPay
as your product scope. Here’s how to create an app and choose your product scope.Next, make sure you have your App keys. Here is a guide on how to generate your secret key on the Mono dashboard.
Lastly, add a webhook URL to the app you created, so you can be notified of the different mandate statuses. You can learn everything you need to know about our webhooks here.
Remember, every call to the Mono endpoint requires your app keys. The mono-sec-key is used in the headers to make any successful request.
Setting up your loan recovery process with Mono Direct Debit
To set up a variable mandate with e-mandate authorization type, there are three major steps you have to take:
Create a customer
Initiate a mandate authorization
Debit a customer
Step 1: Create a customer
Creating a customer on Mono is an essential process that enables businesses to efficiently add users to their platform while ensuring compliance with regulatory requirements. With this endpoint, businesses can capture essential user details and perform Know Your Customer (KYC) checks, facilitating a smooth onboarding process within Mono’s ecosystem.
To create a new customer, you need to send a POST Request to the Customer creation API with certain details passed in the body. You are required to provide the following details:
email
: Email address of the customerfirstName
: First name of the customerlastName
: Last name of the customeraddress
: Address of the customerphone
: Phone Number of the customeridentity.type
: Type of identification which must be BVNidentity.number
: Bank Verification Number
Sample response data
When this request is successful, you will get a JSON response with a message status showing successful
. Most importantly, a customer ID will be returned in the response in the field data.id
. This ID will be passed in the body of the request when initiating a mandate.
Step 2: Initiate a mandate
Once you have the customer ID, you can then send a POST request to the Mandate Initiation endpoint with the required body parameter which includes:
amount
: This is the maximum amount to be debited from the user’s account throughout the mandate duration, passed in Kobo.type
: This is a string value ofrecurring-debit
.method
: This is a string value ofmandate
.mandate_type
: This is the mandate authorization type which can either be signed or e-mandate.debit_type
: This field expects the debit type which can either be variable or fixed mandates.description
: This is a brief description of the mandate.reference
: This is a unique reference ID for identifying the mandateredirect_url
: This expects a URL you want your user to be redirected to.customer.id
: This expects the customer ID that was generated in step 1start_date
: This is the start date of the mandateend_date
: This is the end date of the mandatemeta
: This field expects any other metadata the business would like to pass
Sample response data
Once a call to the mandate initiation endpoint is successful, a URL is returned in the response that triggers the Mono Direct Debit widget. The Mono Direct Debit widget is shared with the user to input the required details to approve the mandate.
When the user inputs and validates the details on the widget, the user is required to send N50 from the bank account they chose to create a mandate on, to the bank account generated on the widget.
Once the user completes the widget authorization experience and makes the N50 payment to the designated account, Mono sends several webhook events to your servers to let you know the status of the approved mandate.
Some of the webhook responses are:
Mandate created: This webhook is sent when a mandate has been successfully created. One of the most important fields returned in this webhook response is the mandate_id. This ID is required to make further calls to any other mandates or debit endpoints.
Mandate approved: This webhook is sent when a created mandate has been successfully approved.
Mandate rejected: This webhook is triggered when a created mandate has been rejected by the bank.
Mandate ready to debit: This webhook is sent when a mandate has been approved and the account is ready to be debited. It is sent between 8-24 hours after the mandate has been approved.
The NIBSS code also serves as a unique identifier for tracking the mandate status and activity. You can read more information on available webhook events here.
Step 3: Debit a customer
Debiting a customer happens in two phases. First, you have to confirm that the user has enough money in their account to cover the debit, then call the debit endpoint. This is because calling the debit endpoint without confirming if the user has sufficient balance might lead to failed debits. Here’s how to do process a debit on a customer’s account:
a. Confirm the balance
To confirm the account balance of the user, you’d pass the mandate_id
returned when creating the mandate along with the amount as path parameters in the query.
If this call is successful, you will receive a response, with the mandate_id
and the user’s bank account detail. This response also contains a field that returns a boolean value confirming if there is sufficient balance or not.
b. Debit the Customer
If the balance endpoint returns a “has_sufficient_balance: true
” response. This means that the user has the requested amount in the bank account and a debit can initiated.
To do this, you need to make a POST request to the debit endpoint with mandate_id
as a path parameter and the body of the request containing the following:
amount
: The field expects the amount you want to debit the user in Koboreference
: The field expects a unique reference for each debit.narration
: This expects a string indicating the purpose/description for this debit.
Where the debit amount is going directly to a specified bank account, you will need to pass the beneficiary account params like:
beneficiary.nuban
: This string field expects the user’s bank account number.beneficiary.nip_code
: This field expects the nip_code which can be gotten from the Mono Banks endpoint.
If this API request is successful, you will receive a response with a status of successful
amongst other details. In cases where a beneficiary is passed in the payload, details of the beneficiary like account_name
and bank_name
are also returned in the response.
We also send successful and failed webhook events to make sure of the payment status.
Building your loan recovery processes with the Mono Direct Debit APIs means you greatly reduce non-performing loans for your business. With mandates created directly on the user’s accounts as opposed to debit cards, you can periodically check the balance on the user's account and debit as needed to offset due repayments. You can also create multiple mandates on multiple accounts belonging to a user, so you can process a direct debit when the primary account doesn't have the required funds.
By following the steps outlined in this article, businesses can set up a loan recovery process tailored to their lending needs. If you’d like to integrate the Mono Direct Debit APIs into your service, you can get started by creating a free Mono account here or reach out to our team at sales@mono.co.