External account verification

Use Mambu Payments (formerly Numeral) to verify external accounts, maximise success rate, and reduce fraud

With Mambu Payments, companies can verify their external accounts prior to sending or collecting payments. Verifying external accounts is key to maximising payment success rate and reducing fraud.

Verifications include:

  • Account number structure
  • Bank code
  • Account holder, based on name and / or company registration number
  • Account status

This feature is available in the dashboard and through the API.

Verifications

Verification

Description

Account number structure valid_account_number

Mambu Payments verifies the account number structure, including:

  • Check digits
  • Length, depending on country
  • Authorised characters

Bank code
matching_account_number_and_bank_code

Mambu Payments verifies that the bank code matches the account number. In case it does not match, the correct bank code is returned

Account holder
matching_account_holder

For supported banks, Mambu Payments retrieves the account holder from the bank holding the account and compares it your data.

Account status
active_account

For supported banks, Mambu Payments retrieves the account status from the bank holding the account.

Use the feature

Verify an external account in the dashboard

To verify an external account in the dashboard, create an external account or go to an existing external account and click on Verify account under the Actions menu.

Verify an external account with the API

To verify an external account with the API, use the Verify external account API endpoint.

The process is asynchronous, meaning the response indicates pending_verification with all verifications set to null.

Mambu Payments retrieves results from the different sources. This process can take up to 30 seconds.

Once all results are available, a verified event is sent, with all verifications' results. Alternatively, you can retrieve the external_account to get all verifications' results.

curl --request POST \
     --url https://sandbox.numeral.io/v1/external_accounts/39446492-3d63-4a3c-8f96-a8ed8be91c0c/verify \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --header 'X-API-Key: Your_API_Key'
{
  "id": "39446492-3d63-4a3c-8f96-a8ed8be91c0c",
  "object": "external_account",
  "type": "legal_entity",
  "status": "approved",
  "status_details": "",
  "name": "Acme Corp. settling account",
  "holder_name": "Acme Corp.",
  "holder_address": {
    "country": "",
    "line_1": "",
    "line_2": "",
    "building_number": "",
    "street_name": "",
    "postal_code": "",
    "region_state": "",
    "city": ""
  },
  "account_number": "FR1212739000506541967515Q48",
  "bank_code": "SOMEBIC0XXX",
  "counterparty_id": null,
  "company_registration_number": "123456789",
  "company_registration_number_type": "fr_siren",
  "metadata": {},
  "custom_fields": {},
  "account_verification": {
    "result": "pending_verification",
    "valid_account_number": null,
    "matching_account_number_and_bank_code": null,
    "matching_account_holder": null,
    "active_account": null,
    "created_at": null
  },
  "created_at": "2024-05-22T12:34:34.721347Z",
  "disabled_at": null
}
{
  "id": "39446492-3d63-4a3c-8f96-a8ed8be91c0c",
  "object": "external_account",
  "type": "legal_entity",
  "status": "approved",
  "status_details": "",
  "name": "Acme Corp. settling account",
  "holder_name": "Acme Corp.",
  "holder_address": {
    "country": "",
    "line_1": "",
    "line_2": "",
    "building_number": "",
    "street_name": "",
    "postal_code": "",
    "region_state": "",
    "city": ""
  },
  "account_number": "FR1212739000506541967515Q48",
  "bank_code": "SOMEBIC0XXX",
  "counterparty_id": null,
  "company_registration_number": "123456789",
  "company_registration_number_type": "fr_siren",
  "metadata": {},
  "custom_fields": {},
  "account_verification": {
    "result": "valid",
    "valid_account_number": {
      "result": "valid",
      "details": {
        "reason": "",
        "expected_value": "",
        "message": ""
      }
    },
    "matching_account_number_and_bank_code": {
      "result": "valid",
      "details": {
        "reason": "",
        "expected_value": "",
        "message": ""
      }
    },
    "matching_account_holder": {
      "result": "valid",
      "details": {
        "reason": "",
        "expected_value": "",
        "message": ""
      }
    },
    "active_account": {
      "result": "valid",
      "details": {
        "reason": "",
        "expected_value": "",
        "message": ""
      }
    },
    "created_at": "2024-05-22T12:35:01.892244399Z"
  },
  "created_at": "2024-05-22T12:34:34.721347Z",
  "disabled_at": null
},

Sandbox test cases

Comprehensive external account verification scenarios are covered in our test cases.

Coverage

VerificationCountries supported
Account number structureEurope
Bank codeEurope
Account holder
  • France
  • Netherlands
  • More countries to come
You will find the list of banks covered here.
Account status
  • France
  • Netherlands
  • More countries to come
You will find the list of banks covered here.

Data providers

Mambu Payments supports a number of data providers to verify accounts:

  • IBAN.com
  • SurePay
  • SEPA Mail Diamond
  • Swift (planned)