Multiple-Banks Mandate
Global Standing Mandate (GSM)β
Developer & Merchant Integration Guideβ
β οΈ Important Disclaimer The Global Standing Mandate (GSM) described in this document is a private, merchant-initiated, consent-based direct debit arrangement built on CreditChek's infrastructure. It is not the Central Bank of Nigeria (CBN) / NIBSS-regulated Global Standing Instruction (GSI) system. Give your business the tools to build and run its own secure, compliant, consent-driven direct debit infrastructure across your borrowers' multiple bank accounts β protecting your credit terms at every stage, without compromising consumer rights.
GSI is a regulated interbank framework exclusively available to CBN-licensed commercial banks. GSM is a complementary, fully-consented alternative designed for OFIs, fintechs, cooperative societies, and post-paid service providers operating outside the CBN-licensed banking perimeter. Usage of this system implies acceptance of CreditChek's Terms of Service and applicable regulatory obligations.
Purpose of this document: To provide developers, merchants, compliance officers, and regulators with a fact-based, line-by-line comparison between the CBN's GSI framework and CreditChek's GSM service β using the CBN's own published language as the authoritative reference.
Executive Summaryβ
The CBN's GSI is a regulatory enforcement tool β a last resort for licensed commercial banks connected to the NIBSS NIP systems to recover loans already in default, executed involuntarily (upon the condition of the executed GSI condition or prior consent by the payer) against a borrower without requiring their real-time cooperation. It is administered by NIBSS under the authority of the CBN Act 2007.
CreditChekβs Global Standing Mandate (GSM) is our proprietary multi-bank collection infrastructure. Unlike traditional direct debits that attach only a single bank account (which fail if that account has insufficient funds on the repayment date), CreditChek GSM allows you to attach up to 7 bank accounts (1 primary and up to 6 backup accounts) to a single mandate agreement.
When an automated collection falls due, Recovaβs collection engine debits the primary account first. If the balance is insufficient or the transaction declines due to lack of funds, the engine gracefully and automatically cascades across the payer βs secondary backup accounts until the due amount is recuperated.
CreditChek's GSM is a private, consent-driven direct debit infrastructure β a pre-default repayment automation tool that requires explicit, active payer participation at every step. It is governed by contract law, the FCCPC Act 2018, and CreditChek's terms of service.
They address different problems, serve different audiences, and operate under entirely different legal regimes. They are not interchangeable or comparable systems.
Table of Contentsβ
- Overview
- GSM vs GSI β Key Distinctions
- Who Can Use GSM
- Architecture & Flow
- Step 1 β Bank Account Discovery (RADAR Lookup)
- Step 2 β Set Mandate (Place e-Mandate on Accounts)
- Step 3 β Micro-Deposit Verification Loop
- Step 4 β Automated Collection
- Consent & FCCPC Compliance
- Caveats, Limits & Legal Boundaries
- Glossary
1. Overviewβ
CreditChekβs Global Standing Mandate (GSM) is our proprietary multi-bank collection infrastructure. Unlike traditional direct debits that attach only a single bank account (which fail if that account has insufficient funds on the repayment date), CreditChek GSM allows you to attach up to 7 bank accounts (1 primary and up to 6 backup accounts) to a single mandate agreement.
When an automated collection falls due, Recovaβs collection engine debits the primary account first. If the balance is insufficient or the transaction declines due to lack of funds, the engine gracefully and automatically cascades across the payerβs secondary backup accounts until the due amount is recuperated.
Global Standing Mandate (GSM) is CreditChek's consent-driven, BVN-anchored multi-bank direct debit framework. It enables merchants and lenders outside the traditional commercial banking space to:
- Discover all active bank accounts tied to a borrower's BVN via RADAR
- Place verified e-mandates on one or more of those accounts via RecovaPRO
- Automate repayment collection from a primary account, with fallback to backup accounts
- Report every loan lifecycle event to the credit bureau via Spectrum, making collection legally defensible and always FCCPC-compliant
The system is fully consent-based. The payer (borrower) actively participates in designating their accounts β there is no silent or involuntary sweep.
2. GSM vs GSI β Key Distinctionsβ
| Dimension | CBN/NIBSS GSI | CreditChek GSM |
|---|---|---|
| Governing Body | CBN / NIBSS | CreditChek (Private Infrastructure) via NIBSS (NDD) |
| Eligibility | CBN-licensed commercial banks only | OFIs, fintechs, cooperatives, post-paid providers |
| Consent Model | Regulatory mandate; borrower consent implicit at loan origination | Explicit, active, per-account payer consent required at every step |
| Account Discovery | Bank-wide sweep by CBN authority | RADAR BVN lookup; payer-confirmed accounts |
| Initiation Authority | CBN-empowered sweep | Merchant-initiated via CreditChek API |
| Reporting Trigger | Non-performing loan reported to CBN | Loan lifecycle reported to Credit Bureau via Spectrum |
| Legal Basis | CBN Act, BOFIA Act 2020 | FCCPC Act 2018, Contract Law, CreditChek Terms of Service |
| Collection Behavior | Involuntary interbank sweep | Automated but fully consented debit per mandate |
| Bureau Reporting | Handled by bank | Mandatory via CreditChek Spectrum |
| Micro-deposit Verification | Not applicable | Required for every account enrolled |
β οΈ You must never represent this service to borrowers or regulators as equivalent to, or backed by, the CBN's GSI system.
CBN's own language on authority:
"In pursuant of the powers conferred on the Central Bank of Nigeria (CBN) by Section 2(d) of the CBN Act, 2007... the CBN hereby issues this guideline on Global Standing Instruction (GSI) to enhance loan recovery across the banking sector."
Implication for GSM merchants: CreditChek's GSM derives no authority from the CBN Act or any CBN guideline. It operates entirely within the contractual relationship between the merchant and the borrower, governed by FCCPC consumer protection law.
3. Who Can Use GSM β Eligibilityβ
GSM is designed for entities that extend credit or post-paid services but are not CBN-licensed commercial banks:
- Microfinance Institutions & OFIs β registered under CBN MFB/State Government Lending/OFI licences
- Digital Lenders & Fintechs β FCCPC-registered, operating under the Digital Lending Guidelines
- Cooperative Societies β registered under the Cooperative Societies Act
- Post-paid Service Providers β telcos, e-commerce, utilities, SaaS platforms collecting on deferred billing
| Dimension | CBN GSI | CreditChek GSM |
|---|---|---|
| Eligible initiators | CBN-licensed Participating Financial Institutions (PFIs) only | OFIs, digital lenders (FCCPC-registered), cooperatives, post-paid providers, fintechs |
| Participation requirement | Must execute a GSI Master Agreement with NIBSS; must be connected to Nigeria Central Switch | Must hold an active CreditChek merchant account with approved appId and businessId |
| Infrastructure dependency | NIBSS NIP platform; Industry Customer Accounts Database (ICAD) | CreditChek RADAR API; CreditChek RecovaPRO API |
| Commercial banks | β Eligible | β Eligible (as merchants) but GSI is the preferred regulatory channel |
| Fintechs / digital lenders | β Not eligible | β Primary target audience |
| Cooperatives | β Not eligible | β Eligible |
| Post-paid service providers | β Not eligible | β Eligible |
Prerequisites before integrating GSM:
- Active CreditChek merchant account with approved
appId(go-live) andbusinessId - FCCPC registration or applicable operating licence
- A compliant loan origination process with explicit borrower consent captured (written/digital)
- Integration with CreditChek Spectrum for credit bureau reporting (mandatory β see Step 4)
3.1 When It Is Triggered β Pre-Default vs Post-Defaultβ
This is arguably the most fundamental distinction between the two systems.
| Dimension | CBN GSI | CreditChek GSM |
|---|---|---|
| Trigger point | After default β borrower has already failed to repay per loan terms and classified per CBN Prudential Guidelines | Before default β scheduled, pre-agreed repayment automation from day one of the loan |
| Nature of use | Explicitly a "last resort" recovery mechanism | A primary repayment collection infrastructure |
| Borrower notification | Collection happens "without recourse to the Borrower" | Payer is actively informed and consented at every collection event |
| Loan status at trigger | Non-performing; classified under CBN Prudential Guidelines | Performing; active loan in good standing |
| Relationship to NPL | Triggered because NPL exists | Designed to prevent NPL by automating timely repayments |
CBN's own language on trigger intent:
"The GSI shall serve as a last resort by a Creditor bank, without recourse to the Borrower, to recover past due obligations... from a defaulting Borrower through a direct set-off."
Implication: GSI is a debt recovery instrument. GSM is a repayment facilitation instrument. A merchant should be running GSM throughout the healthy life of a loan, not as a response to default.
CBN's own language on consent:
"(a) Execute a GSI mandate in hard copy or digital form. (b) Ensure that the terms and conditions of the mandate are clearly understood before execution."
Important nuance: Both systems require a mandate to be executed. However, in GSI, once that mandate is signed, the CBN-empowered sweep can happen entirely without the borrower's knowledge or participation when default occurs. In CreditChek's GSM, the payer's active, consented participation is required at account discovery, mandate placement, and micro-deposit confirmation β and the payer decides which accounts are enrolled.
3.2 Consent Model β Involuntary vs Consent-Firstβ
| Dimension | CBN GSI | CreditChek GSM |
|---|---|---|
| Consent nature | Mandate executed once at loan origination; subsequent GSI triggers require no further borrower involvement | Explicit, active, per-account consent required from the payer at each mandate placement |
| Account selection | NIBSS sweeps all qualifying accounts automatically via ICAD β borrower has no say in which accounts are hit | Payer chooses their Primary Account and opts in to each Backup Account individually |
| Real-time involvement | Borrower is not involved at point of GSI trigger | Payer confirms each enrolled account via micro-deposit verification |
| Consent revocability | Governed by the executed GSI mandate instrument | Payer may request mandate cancellation (subject to outstanding obligations); merchant must honour |
| Consent documentation | Hard copy or digital GSI mandate; stored by Creditor Bank and retrievable on demand | Digital consent with timestamp, IP, payer ID; merchant's responsibility to retain |
CBN's own language on consent:
"(a) Execute a GSI mandate in hard copy or digital form. (b) Ensure that the terms and conditions of the mandate are clearly understood before execution."
Important nuance: Both systems require a mandate to be executed. However, in GSI, once that mandate is signed, the CBN-empowered sweep can happen entirely without the borrower's knowledge or participation when default occurs. In GSM, the payer's active participation is required at account discovery, mandate placement, and micro-deposit confirmation β and the payer decides which accounts are enrolled.
Supported Banks for Micro-Deposit Mandateβ
The following banks support the micro-deposit mandate authorization method:
Access Bank Plc Β· EcoBank Plc Β· Fidelity Bank Plc Β· First Bank of Nigeria Plc
First City Monument Bank Plc Β· Globus Bank Ltd Β· Guaranty Trust Bank Plc
Jaiz Bank Β· Keystone Bank Plc Β· Polaris Bank Limited Β· Providus Bank
Stanbic IBTC Β· Standard Chartered Bank Plc Β· Sterling Bank Plc
Suntrust Bank Β· TAJBank Ltd Β· Titan Trust Bank Β· Union Bank of Nigeria Plc
United Bank for Africa Plc Β· Unity Bank Plc Β· Wema Bank Β· Zenith International Bank Plc
Kuda MFB . JAIZ Bank
To programmatically retrieve the current list:
GET https://api.creditchek.africa/v1/recova/micro-deposit/bank-list
Authorization: token <YOUR_SECRET_API_KEY>
4. Architecture & Flowβ
The GSM integration follows a strict sequential flow. Do not skip or reorder steps.
ββββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββ
β PAYER ONBOARDING β
β β
β 1. Merchant captures BVN + consent from payer at loan origination β
β 2. RADAR Lookup β discover all BVN-linked bank accounts β
β 3. Payer selects Primary Account + Backup Accounts (Select up to 7 accounts. Designate 1 Primary account and up to 6 β
β secondary backup accounts. ) β
β 4. RecovaPRO β loop micro-deposit (β¦50) on each account β
β 5. Accounts confirmed β e-mandates activated β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββ ββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββ
β DISBURSEMENT GATE β
β β
β 6. Spectrum β report loan approval + disbursement to credit bureau β
β β οΈ Automated collection is BLOCKED until disbursement is β
β confirmed reported to bureau via Spectrum β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββ
β REPAYMENT LIFECYCLE β
β β
β 7. On each instalment due date β debit Primary Account β
β 8. If Primary fails β cascade through Backup Account array β
β 9. Spectrum β report each payment event (success / missed /partially paidβ
β 10. Loan reaches term β Spectrum closes loan record with Credit Reference Bureauβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
GSM Architecture & Workflow (summarized view)β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ ββββββββββββββββ
β 1. RADAR BVN Discovery β
β Call CreditChek Radar with the payer's BVN to discover all active β
β bank accounts linked to the borrower across Nigerian banks. β
βββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 2. Account Selection & Allocation β
β Select up to 7 accounts. Designate 1 Primary account and up to 6 β
β secondary backup accounts. β
βββββββββββββββββββββββββββββββββββββ¬βββ ββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 3. GSM Enrollment API β
β Submit the accounts array to: β
β POST /v1/recova/micro-deposit/create/mandate/gsm β
β (Creates independent consents concurrently with high resilience) β
βββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 4. Payer Micro-Deposit Authorization β
β Payer transfers β¦50 from EACH individual enrolled account to its β
β specific dedicated virtual account (e.g., 7 accounts = 7 transfers).β
βββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββ
β 5. Automated Cascading Collection β
β On due date, scheduler debits the Primary account. If balance is β
β insufficient, it seamlessly cascades through Backup accounts. β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Stage 1 β Bank Account Discovery (RADAR BVN Lookup)β
Service: CreditChek RADAR Purpose: Discover all active bank accounts linked to the payer's BVN across Nigerian financial institutions.
Before enrolling bank accounts into a GSM mandate, query the CreditChek Radar service with the borrower's 11-digit BVN. Radar scans the banking ecosystem and returns a list of verified active bank accounts associated with that customer.
POST /v1/radar/bvn-lookup
token: <YOUR_API_KEY>
Content-Type: application/json
Endpointβ
POST: https://api.creditchek.africa/v1/radar/
Requestβ
{
"bvn": "22222222222"
}
Request Parametersβ
| Parameter | Position | Required | Description |
|---|---|---|---|
bvn | body | β Yes | Payer's Bank Verification Number |
token | Authorization | β Yes | app secret key |
type | body | β Yes | to contain the bvn in JSON format |
Headers:
Authorization: Bearer <token>
Content-Type: application/json
Full documentation: https://docs.creditchek.africa/nigeria/radar/getRadar
Implementation Notesβ
- Present discovered accounts to the payer. The payer must actively consent and select their Primary Account and opt-in to any Backup Accounts. Do not pre-select on their behalf (to comply to the Privacy and Data protection act).
- Store the payer's selection before proceeding to Step 2.
- RecommendationUndiscovered or inactive accounts should be excluded from the mandate setup(can be added as Tooltip to the users).
Response (200 OK)β
{
"status": true,
"message": "BVN accounts retrieved successfully",
"data": {
"bvn": "22222222222",
"firstName": "Oluwaseun",
"lastName": "Adekunle",
"accounts": [
{
"bankName": "ACCESS BANK PLC",
"bankCode": "044",
"accountNumber": "0088741090"
},
{
"bankName": "ZENITH BANK PLC",
"bankCode": "057",
"accountNumber": "2178920069"
},
{
"bankName": "GUARANTY TRUST BANK PLC",
"bankCode": "058",
"accountNumber": "0123456789"
},
{
"bankName": "UNITED BANK FOR AFRICA PLC",
"bankCode": "033",
"accountNumber": "1022889091"
},
{
"bankName": "FIRST BANK OF NIGERIA PLC",
"bankCode": "011",
"accountNumber": "3011223344"
}
]
}
}
Stage 2: Account Selection & Allocation Rulesβ
From the accounts discovered via Radar, select the accounts to enroll into the mandate based on the following rules:
- Maximum 7 Accounts: A single GSM mandate request accepts between 1 and 7 bank accounts (
MAX_ACCOUNTS_PER_REQUEST = 7). Requests with more than 7 accounts are rejected with an HTTP 400 error. - Single Primary Account: Exactly one account must have
"primary": true. This will be the priority account attempted on scheduled repayment dates. - Backup Accounts: Up to 6 accounts marked
"primary": false. These serve as fallback accounts during cascading collections. - Unique Accounts: All account numbers in the request must be unique. Submitting duplicate account numbers in the same request is rejected.
- Shared Contact Details: Top-level
address,email, andmobileNumberapply across all enrolled accounts.
{
"primaryAccount": {
"accountNumber": "0088741090",
"bankCode": "044"
},
"backupAccounts": [
{ "accountNumber": "2034556781", "bankCode": "058" },
{ "accountNumber": "0112334456", "bankCode": "033" }
]
}
Stage 3 β Set Mandate (Place e-Mandate on Accounts - Multi-Bank Mandate Attachment API)β
Service: CreditChek RecovaPRO β Initialize e-mandate with the payer
Purpose: Register an e-mandate against each of the payer's selected bank accounts. Each account requires a separate API call using the same mandateId, email, and BVN combination.
Submit the selected list of accounts to the Recova GSM enrollment endpoint.
POST /v1/recova/micro-deposit/create/mandate/gsm
Content-Type: application/json
Full documentation: https://docs.creditchek.africa/nigeria/recovaPro/api.md/initiateConsent
Looping Across All Discovered Accountsβ
Call this endpoint once per account β for the primary account and each backup account β using the identical mandateId + email + BVN combination. CreditChek uses this triplet to link all mandates to the same loan arrangement.
// Pseudocode β Loop through all payer-selected accounts
const allAccounts = [primaryAccount, ...backupAccounts];
for (const account of allAccounts) {
await placeMandateAPI({
appId: "630c8be89131cd442344e794",
businessId: "630c8be89131cd442344e790",
email: payerEmail,
mandateId: mandateId,
accountNumber: account.accountNumber,
bankCode: account.bankCode,
address: payerAddress,
mobileNumber: payerPhone
});
}
Sample request account_number: 12345678901 and 09876543212
Contact [email protected] if you encounter any error responses at this stage.
Key Rule: The combination of
mandateIdmust be identical across all mandate placement calls for the same loan. This uniquely ties all accounts to one loan event and prevents duplicate mandate conflicts.Request Parametersβ
| Field | Type | Required? | Description |
|---|---|---|---|
appId | string | Yes | Your application ID. |
businessId | string | Yes | Your business ID. |
mandateId | string | Yes | The mandate _id returned from POST /consent/create. |
email | string | Yes | Payer's email address. |
mobileNumber | string | Yes | Payer's mobile phone number. |
address | string | Yes | Payer's residential address. |
accounts | array | Yes | Array of 1 to 7 bank accounts (see structure below). |
accounts[].accountNumber | string | Yes | 10-digit NUBAN account number. |
accounts[].bankCode | string | Yes | 3-digit CBN bank code. |
accounts[].primary | boolean | Optional | Set true for exactly one account to designate as the primary account. Defaults to false. |
Sample Requestβ
{
"appId": "730c8be89131cd1111111111",
"businessId": "730c8be89121212121212121",
"mandateId": "77192739b3cf770000000000",
"email": "[email protected]",
"mobileNumber": "08012345678",
"address": "12 Marina Road, Lagos Island, Lagos",
"accounts": [
{
"accountNumber": "1234567890",
"bankCode": "044",
"primary": true
},
{
"accountNumber": "0987654321",
"bankCode": "057",
"primary": false
}
]
}
Sample Response (200 OK)β
{
"status": true,
"message": "Mandate accounts processed (test mode)",
"error": false,
"data": {
"mandate": {
"_id": "77192739b3cf770000000000",
"consents": [],
"provider": "mono"
},
"results": [
{
"accountNumber": "1234567890",
"bankCode": "044",
"success": true,
"demo": true,
"primary": true,
"message": "Mandate created successfully",
"transfer_destinations": [
{
"bank_name": "Parallex Bank",
"account_number": "6007049662",
"icon": "https://res.cloudinary.com/creditchek-africa/image/upload/v1772053274/banks/parallex-logo_k4e30p.png"
}
]
},
{
"accountNumber": "0987654321",
"bankCode": "057",
"success": true,
"demo": true,
"primary": false,
"message": "Mandate created successfully",
"transfer_destinations": [
{
"bank_name": "Parallex Bank",
"account_number": "6007049662",
"icon": "https://res.cloudinary.com/creditchek-africa/image/upload/v1772053274/banks/parallex-logo_k4e30p.png"
}
]
}
]
}
}
[!TIP] Concurrent Processing & Fault Tolerance All accounts submitted in the array are processed concurrently. If one bank experiences temporary downtime or an individual account fails name-enquiry verification, the remaining valid accounts proceed without interruption. Check each account's
successflag in theresultsarray.For each successfully attached account, CreditChek dispatches a
recova.consent.createdwebhook event to your registered webhook URL.
7. Step 3 β Micro-Deposit Verification Loopβ
Purpose: Verify that each enrolled bank account is valid, active, and capable of processing credit and debits by sending a strict β¦50 micro-deposit from each selected account to the displayed account details from the platform. The NIBSS NDD(Direct Debit) platform confirms (or rejects) each deposit to forward the activate request of the mandate to the payer's bank.
How It Worksβ
- PAYER initiates a β¦50 micro-deposit from each selected bank account submitted in Step 2
- The payer's bank either honours or rejects the deposit confirmation auto-relayed message from NIBSS NDD.
- Honoured accounts have their mandate status set to
active - Rejected accounts are marked
failedβ the merchant should notify the payer and optionally prompt re-selection
[!IMPORTANT] Crucial Rule: Transfers Must Originate from Each Enrolled Account Each β¦50 transfer MUST originate directly from the specific bank account being authorized to its corresponding dedicated virtual destination returned in
transfer_destinations.If a mandate enrolls multiple bank accounts, the payer must complete a separate β¦50 transfer for each:
- Account 1 (e.g., Access Bank - 1234567890): Payer transfers β¦50 from their Access Bank account to Account 1's dedicated destination.
- Account 2 (e.g., Zenith Bank - 0987654321): Payer transfers β¦50 from their Zenith Bank account to Account 2's dedicated destination.
- Account 3 (e.g., GTBank): Payer transfers β¦50 from their GTBank account to Account 3's dedicated destination.
- Account 4 (e.g., UBA): Payer transfers β¦50 from their UBA account to Account 4's dedicated destination.
- Account 5 (e.g., First Bank): Payer transfers β¦50 from their First Bank account to Account 5's dedicated destination.
- Account 6 (e.g., Providus Bank): Payer transfers β¦50 from their Providus Bank account to Account 6's dedicated destination.
- Account 7 (e.g., Kuda Bank): Payer transfers β¦50 from their Kuda Bank account to Account 7's dedicated destination.
Why this is required: The receiving interbank settlement network and NIBSS verify the originating account number and sender identity against the enrolled account record. If a payer uses one bank account (e.g., Access Bank) to send money to another bank account's destination (e.g., Zenith Bank's destination), the receiving bank cannot verify ownership of that second account, and the authorization will fail.
Micro-Deposit Status Outcomesβ
| Outcome | Mandate Status | Action Required |
|---|---|---|
| Deposit accepted by bank | active | Account ready for collection |
| Deposit rejected / account inactive | failed | Notify payer; prompt re-selection |
| Payer disputes deposit | disputed | Escalate through RecovaPRO dispute flow |
| No response within TTL | pending_timeout | Notify payer; prompt re-selection |
Mandate Priority Logicβ
The collection engine follows this priority during automated repayment:
1. Attempt PRIMARY account debit
2. If PRIMARY fails β attempt BACKUP account [0]
3. If BACKUP [0] fails β attempt BACKUP account [1]
4. Continue through backup array in sequence
5. If ALL accounts fail β trigger missed repayment event β report to Spectrum
Note: A minimum of one active mandate (primary) is required before disbursement is permitted. Backup accounts are strongly recommended to maximise collection success rates.
8. Step 4 β Automated Collectionβ
Once mandates are active and Spectrum confirms disbursement, RecovaPRO's collection engine handles scheduled debits automatically.
Collection Behaviourβ
- Debits are initiated on the scheduled repayment dates defined at mandate creation
- The primary account is attempted first; backup accounts are cascaded through in order
- All collection events (success, failure, partial) are automatically fed back to Spectrum for bureau reporting
- The merchant receives webhook notifications for every collection event and daily collection summary (digest) email
Authorization & Webhook Flowβ
- As the payer completes each transfer from its respective account, that bank verifies ownership and activates that consent.
- Recova receives confirmation from the banking rail and marks each consent as active.
- For each verified account, CreditChek fires
recova.consent.approved. - Once the designated primary account is verified, the overarching mandate status switches to
active, andrecova.mandate.approvedis dispatched to your registered webhook URL. Collections can now proceed automatically.
Webhook Eventsβ
Register a webhook URL in your CreditChek dashboard to receive real-time notifications:
| Event | Description |
|---|---|
mandate.activated | e-mandate successfully verified and active |
mandate.failed | Micro-deposit rejected; mandate not established or Mandate not approved |
collection.success | Repayment collected successfully |
collection.failed | All accounts exhausted; repayment missed |
collection.partial | Partial amount collected (insufficient funds) |
mandate.expired | Mandate has reached end of loan tenure |
Sample Webhook Payload β Collection Successβ
{
"businessId": "65c23585353059",
"consentId": "68e505b6c0570b",
"mandateId": "68e4156dc6f60",
"accountName": "LEADSAUTO CENTER NIG LTD",
"accountNumber": "2063293726",
"bankName": "Access Bank",
"totalAmount": 2033626.28,
"providerMessage": "Account debited successfully.",
"amountCollected": 610087.88,
"status": "success",
"collectedOn": "2025-11-06T02:07:46.195Z",
"collectionType": "auto",
"instalmentReference": "4a3b4a76-f897-483c-aca1-d8db30d86efa",
"instalmentStatus": "success",
"reference": "1762394845143",
}
Sample Webhook Payload β Collection On Overdueβ
{
"businessId": "65c23585353059",
"consentId": "68e505b6c0570b",
"mandateId": "68e4156dc6f60",
"accountName": "LEADSAUTO CENTER NIG LTD",
"accountNumber": "2063293726",
"bankName": "Access Bank",
"totalAmount": 2033626.28,
"providerMessage": "Account debited successfully.",
"amountCollected": 610087.88,
"status": "success",
"collectedOn": "2025-11-06T02:07:46.195Z",
"collectionType": "auto",
"instalmentReference": "4a3b4a76-f897-483c-aca1-d8db30d86efa",
"instalmentStatus": "overdue",
"reference": "1762394845143",
}
Sample Webhook Payload β Collection Failedβ
{
"businessId": "65c23585353059",
"consentId": "68e505b6c0570b",
"mandateId": "68e4156dc6f60",
"accountName": "LEADSAUTO CENTER NIG LTD",
"accountNumber": "2063293726",
"bankName": "Access Bank",
"totalAmount": 2033626.28,
"providerMessage": "Account debited successfully.",
"amountCollected": 610087.88,
"status": "success",
"collectedOn": "2025-11-06T02:07:46.195Z",
"collectionType": "auto",
"instalmentReference": "4a3b4a76-f897-483c-aca1-d8db30d86efa",
"instalmentStatus": "failed",
"reference": "1762394845143",
}
Sample Webhook Payload β Collection Partial Paidβ
{
"businessId": "65c23585353059",
"consentId": "68e505b6c0570b",
"mandateId": "68e4156dc6f60",
"accountName": "LEADSAUTO CENTER NIG LTD",
"accountNumber": "2063293726",
"bankName": "Access Bank",
"totalAmount": 2033626.28,
"providerMessage": "Account debited successfully.",
"amountCollected": 610087.88,
"status": "success",
"collectedOn": "2025-11-06T02:07:46.195Z",
"collectionType": "auto",
"instalmentReference": "4a3b4a76-f897-483c-aca1-d8db30d86efa",
"instalmentStatus": "partially paid",
"reference": "1762394845143",
}
Sample Webhook Payload β Collection Processingβ
{
"businessId": "65c23585353059",
"consentId": "68e505b6c0570b",
"mandateId": "68e4156dc6f60",
"accountName": "LEADSAUTO CENTER NIG LTD",
"accountNumber": "2063293726",
"bankName": "Access Bank",
"totalAmount": 2033626.28,
"providerMessage": "Account debited successfully.",
"amountCollected": 610087.88,
"status": "success",
"collectedOn": "2025-11-06T02:07:46.195Z",
"collectionType": "auto",
"instalmentReference": "4a3b4a76-f897-483c-aca1-d8db30d86efa",
"instalmentStatus": "processing",
"reference": "1762394845143",
}
Stage 5: Intelligent Cascading Collection Logicβ
When an automated collection is scheduled, Recova's scheduler follows an intelligent multi-account cascade:
- Attempt Primary Account: The scheduler first attempts to debit the installment amount from the designated
primaryaccount. - Evaluate Insufficient Funds: If the primary account has sufficient funds, the collection completes immediately, and the transaction is marked as paid.
- Graceful Cascade to Backup Accounts: If the primary account returns an insufficient balance or declines, the scheduler immediately and sequentially attempts the enrolled backup accounts (
primary: false) in order. - Transparent Audit Trail: Every collection attempt, cascade event, and settlement status is recorded and reported via webhooks (
recova.mandate.approved, installment payment events) and accessible via the mandate status API.
6. Webhooks & Lifecycle Eventsβ
Because interbank mandate approvals and electronic debit collections are asynchronous, your system should rely on webhooks rather than continuous polling.
RecovaPRO delivers webhook events directly to your registered webhook URL.
Webhook Securityβ
Every webhook payload dispatched to your endpoint includes standard webhook verification headers:
- Verify the webhook signature against your webhook secret using HMAC-SHA256 / Webhook Service verification.
- Always return an immediate
2xxHTTP status code upon receiving the event to acknowledge receipt.
Mandate & Consent Lifecycleβ
[ POST /consent/create ]
β
βΌ
status: "pending" βββββββββββββββββΊ recova.mandate.initialize
β
βΌ (Payer links bank account / accounts)
recova.consent.created (Fires for each linked account)
β
βΌ (Payer transfers β¦50 per individual account)
βββ Individual Account Verified βββΊ recova.consent.approved
βββ Individual Account Rejected βββΊ recova.consent.rejected
βββ Individual Account Expired βββΊ recova.consent.expired
βββ Individual Account Revoked βββΊ recova.consent.cancelled
β
βΌ (Primary account verified)
status: "active" ββββββββββββββββ recova.mandate.approved (Collection begins)
β β²
β β
βΌ β
status: "paused" ββββββββββββββββ recova.mandate.paused / recova.mandate.resumed
β
βΌ
status: "deactivated" βββββββββββββΊ recova.mandate.cancelled (Terminated by merchant)
status: "closed" βββββββββββββΊ Mandate expired (endDate passed)
7. Consent & FCCPC Complianceβ
The Federal Competition and Consumer Protection Commission (FCCPC) Act 2018 governs all consumer-facing financial and credit services in Nigeria. CreditChek's GSM is designed to be fully compliant. The following obligations fall on the merchant:
Mandatory Consent Capture Requirementsβ
At loan origination, before any RADAR lookup or mandate placement, you must capture and store verifiable consent from the payer for:
- Use of their BVN to discover linked bank accounts
- Placement of e-mandates on each selected bank account
- Automated debit on repayment due dates
- Reporting of their loan data to a licensed Credit Reference Bureau
- Cascading debit to backup accounts if primary account fails
Consent must be:
- Explicit β affirmative action (tick-box, OTP confirmation, digital signature and verifiable personalInfo)
- Informed β payer must understand what they are consenting to in plain language
- Auditable β stored with timestamp, IP address, and payer identifier
- Revocable β payer must be able to request mandate cancellation (subject to outstanding obligations)
FCCPC Prohibited Practices (Merchant Obligations)β
| Practice | Status |
|---|---|
| Initiating collection without proof of disbursement | β Prohibited |
| Collecting amounts exceeding approved loan terms | β Prohibited |
| Placing mandates without explicit payer consent | β Prohibited |
| Failing to report loan lifecycle to credit bureau | β Prohibited |
| Presenting GSM as CBN/NIBSS GSI to borrowers | β Prohibited |
| Collecting after borrower has filed valid dispute | β Prohibited β pause pending resolution |
| Retaining mandate after full loan repayment | β Prohibited |
8. Caveats, Limits & Legal Boundariesβ
What CreditChek GSM Isβ
- β A consent-based, merchant-operated, BVN-anchored multi-account direct debit system
- β A private infrastructure service built by CreditChek for eligible non-bank lenders
- β Designed as an empowerment tool for businesses to complement the regulated GSI system outside the commercial banking sector
- β Fully auditable with end-to-end bureau reporting via Spectrum
What GSM Is Notβ
- β Not the CBN/NIBSS Global Standing Instruction (GSI) system
- β Not a regulatory mandate β it is a contract-based arrangement between merchant and payer
- β Not available to entities without a valid CreditChek merchant account and applicable operating licence
- β Not a substitute for FCCPC compliance or applicable state/federal lending regulations
- β Not a payment gateway β CreditChek does not hold, move, or settle funds directly
Technical Limitsβ
| Parameter | Limit |
|---|---|
| Maximum backup accounts per mandate | Platform limit β NONE |
| Micro-deposit amount | β¦50 per account (fixed) |
| Mandate validity | Tied to loan tenure defined at mandate creation |
| Retry attempts per due date | Configurable per merchant agreement |
| API rate limits | Refer to CreditChek developer portal |
Liability & Indemnificationβ
- CreditChek bears no liability for collections on mandates where
loan.disbursedhas not been reported via Spectrum - Merchants bear full responsibility for consent validity, FCCPC compliance, and accuracy of loan data reported to bureaus
- CreditChek's indemnification of the merchant is contingent on correct use of Spectrum for end-to-end bureau reporting
- Misuse of the GSM system β including misrepresenting it as CBN-regulated β may result in immediate account suspension and regulatory referral
9. Glossaryβ
| Term | Definition |
|---|---|
| BVN | Bank Verification Number β a unique CBN-issued identifier tied to an individual across all Nigerian bank accounts |
| GSI | Global Standing Instruction β CBN/NIBSS-regulated system for commercial banks to sweep accounts for NPL recovery |
| GSM | Global Standing Mandate β CreditChek's consent-based multi-bank direct debit framework for non-bank lenders |
| RADAR | CreditChek's BVN account discovery service that returns all active accounts linked to a BVN |
| RecovaPRO | CreditChek's e-mandate placement and automated collection service |
| Spectrum | CreditChek's credit bureau reporting service; mandatory for GSM collection to be activated |
| Micro-deposit | A β¦50 test credit sent to verify an account is active and capable of transacting |
| Primary Account | The payer's preferred account for first-attempt repayment collection |
| Backup Accounts | Additional payer-consented accounts debited in sequence if the primary account fails |
| Mandate | A formal, consent-backed authorisation for a merchant to debit a borrower's bank account |
| NPL | Non-Performing Loan β a loan where scheduled repayments have been missed beyond a defined threshold |
| FCCPC | Federal Competition and Consumer Protection Commission β Nigeria's consumer rights and fair market practices regulator |
| OFI | Other Financial Institution β financial entities regulated by the CBN but not licensed as commercial banks |