Biometric Verification for Recurring Direct Debit
Last updated November 26, 2025
Overview
Biometric Verification replaces the ₦50 transfer in Recurring Direct Debit (RDD) mandates with real-time BVN validation + Face Match checks. When the feature is enabled for your business, customers verify their identity with a selfie and liveness check inside your product, and mandates are approved instantly once the match succeeds.

Feature access
This flow is available on request. Please reach out to support team via support@mono.co for access, before calling the create a mandate API with verification_method: "selfie_verification".
Key benefits:
Instant Approval: Mandates auto-transition to
approvedonce the face match succeeds.In-platform experience: Customers complete the selfie/liveness journey without leaving your mobile or web experience.
Secure & compliant: BVN validation + Face Match runs against the BVN photo, reducing fraud and supporting faster onboarding.
API Flow
Customer creation with BVN: Before creating a mandate, call the Create Customer endpoint to capture the customer BVN and date of birth so Mono can look up the associated image.
Mandate creation with
verification_method: Use the Create a Mandate API and sendverification_method: "selfie_verification"to trigger Biometric Verification instead of the default transfer flow.Face Match & liveness: The customer follows the
mono_urlreturned in the response, completes the selfie/liveness journey, and Mono compares the selfie against the BVN photo.Mandate activation: Once the match succeeds, the mandate status flips to
approved, amandate approvedwebhook fires, and the mandate becomes available for debits.

Configure `verification_method`
If you omit verification_method, the API falls back to transfer_verification and the ₦50 transfer path. The Biometric path requires verification_method: "selfie_verification" so you can include the returned mono_url in your UI and keep track of the chosen method via the verification_method field in the response data.
Track this entire verification flow inside your platform, handle approved statuses, and make sure your webhook consumers listen for the mandate approved event before debiting.
API flow breakdown
Create the customer record with BVN details. Include the BVN and date of birth when calling the Create Customer endpoint so Mono can fetch the BVN photo used in face matching.
Call the Create a Mandate API with biometric verification. Send
verification_method: "selfie_verification"and the standard mandate payload—Mono validates the BVN, ties the mandate to the customer, and returns themono_urlfor the customer to complete the selfie + liveness experience.
Request
curl --request POST \
--url https://api.withmono.com/v3/payments/mandates \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'mono-sec-key: live_sk_your_secret_key' \
--data '{
"debit_type": "variable",
"customer": "string",
"mandate_type": "emandate",
"amount": 1000000,
"reference": "mandatevrif7l9d4",
"account_number": "2012345678",
"bank_code": "044",
"fee_bearer": "business",
"description": "Mono Test",
"start_date": "2025-11-27T00:00:00.000Z",
"end_date": "2026-12-31T22:59:59.999Z",
"verification_method": "selfie_verification",
"meta": {}
}'
Customer completes the selfie + liveness journey. Use the
mono_urlto render the verification experience, then wait for the callback/webhook indicating the mandate status changed toapproved.Mandate activated. Upon success the mandate is approved automatically; the
mandate approvedwebhook fires and the mandate becomes eligible for debits without the ₦50 transfer.
Request
{
"status": "successful",
"message": "Mandate created successfully",
"data": {
"id": "mmc_691d957a87120578aeb864af",
"status": "initiated",
"mandate_type": "emandate",
"debit_type": "variable",
"ready_to_debit": false,
"mono_url": "https://develop.d25lmvlzvrkhwa.amplifyapp.com/RC227914%2F1580%2F0015154303",
"nibss_code": "RC227914/1580/0015154303",
"approved": false,
"reference": "mandatevrif7l9d4",
"account_name": "Samuel Olamide",
"account_number": "2012345678",
"bank": "Access Bank",
"bank_code": "044",
"customer": "691af11398baaa44e1567bde",
"description": "Mono Test",
"live_mode": true,
"start_date": "2025-11-27T00:00:00.000Z",
"end_date": "2026-12-31T22:59:59.999Z",
"date": "2025-11-19T10:01:30.471Z",
"amount": 1000000,
"fee_bearer": "business",
"verification_method": "selfie_verification"
}
}
The response always includes the verification_method field so you can verify whether the biometric path or transfer path executed.
Pricing
- ₦100 for Biometric Verification (charged to the business wallet).
- ₦50 for NIBSS mandate activation when the transfer path is used.

Charges
Both fees are withdrawn from your Mono wallet once the mandate is created.
