Overview
Shufti's Bank Account Verification (BAV) service performs a real time check against banking data sources, returning an account status without requiring the end user to upload a document or complete a test transfer.
The service answers one of two questions, depending on what is submitted:
- BAV Check — verifies that a bank account exists and that it belongs to the person or business presented as the account holder.
- IBAN Check — verifies that an IBAN is correctly formed and passes its check digits, and identifies the bank it belongs to. It makes no claim about who owns the account.
How It Works
The bank account verification process includes the following steps:
- Data Collection: The merchant collects the account holder name and bank account details on its own platform.
- API Request: The merchant's server sends a verification request to Shufti with the collected details. The required fields, such as account holder name, account number or IBAN, and bank code, depend on the country.
- Check: Shufti sends the details to its third-party data source. For a BAV Check, the data source checks them with the bank data in the destination country and confirms that the account exists and, in most countries, that the account holder name matches the bank's record. For an IBAN Check, the IBAN's structure and check digits are validated and no bank is contacted.
- Result: Shufti receives the result from the third-party data source. Depending on the check and the country, the result is a name match score and result, a confirmation that the account exists, or an IBAN validity result together with the bank the IBAN belongs to.
- Response and Callback: Shufti returns the result in the API response. If a callback URL is provided, Shufti also sends the result to that URL.
- Back Office Record: The verification is recorded in the Shufti back office against its reference.
The validation type and the response returned are determined by the country in the API request, and by which check runs. See the list of BAV-supported countries.
Check Types
Every supported country offers a BAV Check, an IBAN Check, or both.
| Check | What it confirms | What it does not confirm |
|---|---|---|
| BAV Check | The account exists, is active, and is held by the submitted account holder. In Thailand and the Philippines, only that the account exists or that the account number is correctly formed (see Validation Types). | In Thailand and the Philippines, who holds the account. |
| IBAN Check | The IBAN's country prefix, length, character set and check digits are valid, and which bank it belongs to. | That the account exists, that it is active, or who holds it. |
Choosing the Check
The check is selected by the fields submitted in the bank_account_verification object, not by a separate parameter.
- Submit only
account.ibanand nothing else, and the IBAN Check runs. - Submit the account holder name together with the account details, and the BAV Check runs.
For a country that supports only one of the two, the fields it requires are fixed and there is nothing to choose. For a country that supports both, the choice is yours on every request.
On a country that supports both checks, omitting the account holder name does not produce a validation error. It selects the IBAN Check instead, which is a weaker check: an accepted result then means the IBAN is well formed, not that the account exists or that your customer holds it. Always send the account holder name when you intend to verify ownership, and read verification_mode in the response to confirm which check ran.
Validation Types
BAV is a passive verification. Shufti does not interact with the end user and no document upload or redirect is involved. The check runs on the data submitted in the API request. The type of validation depends on the country.
| Validation type | Check | Countries |
|---|---|---|
| Name Match | BAV Check | Every country that offers a BAV Check, except Thailand and the Philippines |
| Account Existence Check | BAV Check | Thailand |
| Format Validation | BAV Check | The Philippines |
| IBAN Validation | IBAN Check | Every country that offers an IBAN Check |
1. Name Match
The account is validated and the submitted name is checked against the bank's record. The name registered on the account is not returned. See Account Holder Name Match.
2. Account Existence Check
Confirms that the account exists and can receive funds. No name check is performed: Thailand requires account_holder_name in the request, but the name is not compared with the bank's record, so an accepted result does not confirm who holds the account. name_match_score and name_match_result are returned as null.
3. Format Validation
Checks that the account number is correctly structured for the bank identified by the BIC. The bank is not contacted, no account holder name is submitted and no name check is performed. name_match_score and name_match_result are returned as null.
4. IBAN Validation
Checks the IBAN's country prefix, length, character set and check digits. The bank is not contacted and no name check is performed. Where the data source identifies it, the bank behind the IBAN is returned in bank_name, bic, bank_address, clearing_system_id and payment_scheme_eligibility. This is what an IBAN Check performs.
Account Holder Name Match
Applies to the BAV Check only, and not in Thailand or the Philippines. An IBAN Check submits no name, so no name match is performed and no name match fields are returned.
The name submitted by the merchant is compared with the name the bank holds for the account. A name match result is returned only when the validation is successful.
| Outcome | Description |
|---|---|
| Match | The account was found and the name matches the bank's record. |
| Partial Match | The account was found and the name partially matches the bank's record. The verification is accepted. |
| No Match | The account was found but the name does not match the bank's record. The verification is declined. |