Mono Logo
  • Why Mono
    • Why Choose Mono
      Here's why 250+ Businesses & Developers use Mono APIs
    • Pricing
      Affordable pricing for developers, SMEs, and enterprises
    • See a Demo
      Experience Mono APIs in action
  • Products
    • Connect
      Financial account linking
    • Statement Pages
      No-code bank statement collection
    • DirectPay
      Direct bank payment collection
    • DirectPay Pages
      No-code bank payment collection
    • Portal
      Linked account management
    • Percept
      Corporate finance management
  • Learn
    • About us
    • Blog
    • Tutorials
    • Coverage
  • Developers
    • Overview
    • Documentation
Create free account
Why Mono
  • Why Choose Mono
  • Pricing
  • See a Demo
Products
  • Connect
  • Statement Pages
  • DirectPay
  • DirectPay Pages
  • Portal
  • Percept
Learn
  • About us
  • Blog
  • Tutorials
  • Coverage
Developers
  • Overview
  • Documentation
Create free account
Mono Blog

Building an automated loan recovery process with Mono Direct Debit APIs

3 Oct, 2024Engineering
  • Keyukemi Ubi
    Growth
  • On this page
    • What is Mono Direct Debit?
    • Types of Mono Direct Debit mandates
    • Types of mandate authorization
    • Benefits of using Mono Direct Debit
    • Integrating the Mono Direct Debit API for automated loan repayments
    • Setting up your loan recovery process with Mono Direct Debit
    Share article
    • Twitter
    • LinkedIn

    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:

    1. 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.

    2. 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:

    1. Create a Mono account here, if you don’t have one

    2. Submit all required business documents and complete the compliance process.

    3. 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.

    4. Next, make sure you have your App keys. Here is a guide on how to generate your secret key on the Mono dashboard.

    5. 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:

    1. Create a customer

    2. Initiate a mandate authorization

    3. 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 customer

    • firstName: First name of the customer

    • lastName: Last name of the customer

    • address: Address of the customer

    • phone: Phone Number of the customer

    • identity.type: Type of identification which must be BVN

    • identity.number: Bank Verification Number

    Create a Customer
    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.

    Sample response of Create a Customer request
    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 of recurring-debit.

    • method: This is a string value of mandate.

    • 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 mandate

    • redirect_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 1

    • start_date: This is the start date of the mandate

    • end_date: This is the end date of the mandate

    • meta: This field expects any other metadata the business would like to pass

      Initiate mandate request
      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.

      Debit a customerThe 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.

    Confirm the balanceIf 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.

    Sample API response for confirm balance endpoint
    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 Kobo

    • reference: 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.

    Debit a customer API requestIf 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.

    Debit a customer sample responseBuilding 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.

    Like what you read?

    Become a subscriber and receive notifications about blog posts, company events and announcements, products and more.

    Next Read

    17 Jul, 2024Engineering

    How to Implement the Mono Telco Data API

    Read the story
    How to Implement the Mono Telco Data API
    19 Apr, 2024Engineering

    How to build a robust credit-decisioning system with Mono Lookup APIs

    Read the story
    Building robust credit-decisioning system with Mono Lookup

    Start building with Mono

    Access high-quality financial data and start processing payments directly from bank accounts in minutes.

    Start now for freeTalk to Sales
    Products
    • Connect
    • Statement Pages
    • DirectPay
    • DirectPay Pages
    • Portal
    • Transactions
    • Income
    • Information
    • Realtime Data
    Resources
    • Developers
    • Documentation
    • API Reference
    • SDKs
    • Demo
    • Join Slack
    • Consumers
    Company
    • About us
    • Partner stories
    • Blog
    • Coverage
    • Careers
    • Contact
    Legal
    • End-User Policy
    • Privacy Policy
    • Developer Policy
    • Terms of Use
    • Cookies
    • Security
    © Mono Technologies Nigeria Limited
    TwitterLinkedIn