Validate an account
Validates a recipient account — a bank account or a mobile-money number — against the appropriate upstream provider for the requested country and accountType, before initiating a payout. This is the unified replacement for the deprecated /verification/mobile and /verification/bank-account endpoints.
The call resolves synchronously for cache hits and short-lived upstream lookups (≤2s). Longer-running validations return status pending together with an id; poll GET /accounts/validate/{id} until the status is terminal.
When accountHolderName is supplied, the response reports name_mismatch if the provider returns a different name.
Authentication
Request
3-letter ISO country code identifying the market the account belongs to. Supported markets depend on accountType:
bank_account— ZAF (South Africa), NGA (Nigeria), EGY (Egypt), GHA (Ghana) and KEN (Kenya).mobile_money— KEN (Kenya) and GHA (Ghana).institution_wallet— ZWE (Zimbabwe).
The account locator, interpreted according to accountType:
bank_account— the bank account number. For Egypt (EGY) supply the full IBAN instead (it encodes the bank, sobankCodeis not needed).mobile_money— the MSISDN (phone number, including country-code prefix).institution_wallet— the wallet identifier.
Identifies the destination bank. Required for bank_account in every market except Egypt (EGY), where the IBAN in accountIdentifier carries the bank; ignored for mobile_money and institution_wallet. The format is market-specific:
- ZAF — 6-digit universal (any-branch) bank code, e.g.
632005(Absa),051001(Standard Bank),250655(FNB),470010(Capitec). See the South Africa payout guide. - NGA — 3-digit (commercial bank) or 6-digit (OFI) CBN bank code.
- GHA — 3-digit Bank of Ghana institution code.
- KEN — the destination bank’s code on the domestic rails.
When supplied, the response status will be name_mismatch if the provider returns a different name.
Response
Validation result (resolved or pending)
Validation ID — use with GET /accounts/validate/{id} to poll a pending validation.
Validation outcome. pending means the upstream provider is still resolving; poll GET /accounts/validate/{id} until terminal.
Which connector produced the result (e.g. flutterwave, sandbox).
Name returned by the provider, populated for verified / name_mismatch.
Where the result came from — internal_rules = format check (e.g. NUBAN check digit), external = upstream provider lookup.
ISO-8601 timestamp at which the cached result becomes stale.
Free-form provider reason; populated for not_found / name_mismatch / error.