mono-logo

Direct Debit Integration Guide- Mandate Setup (Variable)

Last updated May 8th, 2024

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 ₦200,000 for 6 months which can 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:

FieldDescription
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). NGN 200 (20000 kobo)
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 signed or emandate or gsm.
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.
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
customerThis expects the the customer id as seen in the response here
meta (object)This object used to include additional payment information. e.g meta

cURL Sample Request: For Variable E-Mandate/Signed Mandate

Request

123456789101112131415161718192021
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 "signed" or "gsm"
    "debit_type": "variable", 
    "description": "Repayment for samuel.olamide@mono.co",
    "reference": "test-O2b9O9EF903-949493432",
    "redirect_url": "https://mono.co",
    "customer": {
        "id":"65eb623b0000900009e5c1f21cd"
    },
    "start_date": "2024-03-29",
    "end_date": "2024-08-04",
    "meta": {}
}

Success Response

If the emandate or signed or gsm request has been initiated successfully, you will receive the following response:

Request

12345678910111213141516171819
{
    "status": "successful",
    "message": "Payment Initiated Successfully",
    "data": {
        "mono_url": "https://authorise.mono.co/RD3044259",
        "type": "recurring-debit",
        "method": "mandate",
        "mandate_type": "emandate", // or "signed" or "gsm"
        "amount": 9190030,
        "description": "Repayment for samuel.olamide@mono.co",
        "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

Mandate Webhooks

Upon successful creation, rejection, or approval of a mandate, different webhooks are triggered based on the specific scenario. Explore this resource for more details on the diverse webhook workflows.

N.B On Mandate Creation

Please take note that for the successful creation 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

Re: Debits by Variable Mandate

Please take note that since there are no fixed schedule for debitting an account for Variable Mandates, each debit has to be triggered trigged via API following the instructions in Step 3: Debit an Account.

Did this page help you?