Manual Bank Verification

Manual Bank Verification API

Overview and Workflow

The Manual Bank Verification API allows you to verify a user's bank account information (Account Number and Routing Number) and identity details without requiring the user to log in via online banking credentials. This endpoint validates the banking structure, assesses return risk, and checks account ownership against provided identity data.

As a Client, you will indicate which Result Codes are automatic “failures” after processing. Aerosync will set the failure codes for your configurationId. Aerosync can also set banks to the Manual verification blocklist as needed (IE if you wants to automatically block Chime, we would add this to your routing number blocklist)

Happy path

  • On success, a result code will be returned, along with a connectionId representing the new bank.
  • You can call the Aerosync /accounts endpoint with this connectionId to see more account details as needed

On failure

  • Result code returned
  • connectionId will be returned as null
  • You will need to triage with the end user to understand if they have an alternative AN/RN pair or better identity information

HTTP Request

Sandbox - POST http://api.sandbox.aerosync.com/v2/manual-bank-verification

Production - POST http://api.aerosync.com/v2/manual-bank-verification

Request Parameters

The request body accepts a JSON object containing the bank account and identity details.

ParameterTypeRequired?Description
accountNumberStringYesMax 20 characters. Numeric only.
routingNumberStringYesExact 9 characters. Numeric only.
firstNameStringYesUser's first name.
lastNameStringYesUser's last name.
accountTypeStringNoEnum:checkingorsavings. Note: Savings validation must be enabled in your configuration.
businessNameStringNoName of the business (if applicable).
fullSSNStringNoUser's SSN. 9 characters. Numeric only.
dateOfBirthStringNoUser's date of birth. Format:MMDDYYYY
streetStringNoUser's street address. Max 100 chars. Alphanumeric, dashes, periods (.), and forward slashes (/) allowed.
cityStringNoCity of user street address. Max 50 chars. Alphanumeric, dashes, periods (.), and forward slashes (/) allowed.
stateStringNoState of the user's city. 2-character state code (e.g., "NY").
zipCodeStringNoNumeric only. No dashes.
phoneNumberStringNo10 characters. Numeric only.
emailAddressStringNoMax 50 chars. Alphanumeric, dashes, periods (.), and underscores (_) allowed.

Request example:

POST /manual-bank-verification
Authorization: Bearer {{token}}
x-api-key:'API key'
{
	"accountNumber": "123456789",
	"routingNumber": "000000009",
	"firstName": "Cory",
	"lastName": "Anderson"
}

Response Handling

The API returns a JSON object containing the verification status and detailed result codes.

Success Response (HTTP 201)

A 201 status indicates the verification process completed successfully and the account is considered valid based on your configuration. A connectionId is generated.

{
  "statusCode": 201,
  "resultCode": "11",
  "connectionId": "6c8e1e6d-3db5-4235-a86b-62aa467ceb02",
  "verified": true,
  "resultCodeDetails": [
    {
      "bankVerificationCode": "Pass - Valid Account",
      "accountOwnerVerificationCode": "Pass",
      "description": "Account owner details match with a high confidence the data on file with the bank"
    }
  ]
}

Failure/Review Response (HTTP 200)

A 200 status with a failure resultCode indicates the request was processed, but the verification failed or requires manual review (e.g., invalid account, high return risk, or ownership mismatch). No connectionId is returned.

{
  "statusCode": 200,
  "resultCode": "73",
  "connectionId": null,
  "verified": false,
  "resultCodeDetails": [
    {
      "bankVerificationCode": "Fail",
      "accountOwnerVerificationCode": "Fail",
      "description": "The information provided does not match the information from the bank"
    }
  ]
}

Error Response (HTTP 400)

Occurs when invalid parameters are sent or configuration requirements are not met (e.g., trying to verify a Savings account when that feature is disabled).

{
  "error": {
    "code": "AC-122",
    "message": "Savings accounts are not enabled for this configuration"
  }
}

Result Code Reference

The resultCode is a composite indicator of two factors: Bank Verification (Is the account valid/safe?) and Account Owner Verification (Does the user match the bank's records?).

Interpreting the Codes

  • 1x - 4x: Bank Verification Passed (Various levels of confidence).
  • 5x - 8x: Bank Verification Failed or Low Confidence.
  • x1: Owner Match (Pass).
  • x2: Owner Unknown (No Data).
  • x3: Owner Mismatch (Fail).
Result CodeBank Verification CodeBank Verification Code DescriptionAccount Owner Verification CodeAccount Owner Verification Code Description
11Pass (Valid Account)The account is open and valid and has a good history of valid transactionsPass (Match)Account owner details match with a high confidence the data on file with the bank
12Pass (Valid Account)The account is open and valid and has a good history of valid transactionsNo DataNo Data came back from the account owner details provided
13Pass (Valid Account)The account is open and valid and has a good history of valid transactionsFail (Mismatch)Account owner details provided do not match the data on file with the bank
21Pass (High Confidence Structure)The account number structure matches routing number providedPass (Match)Account owner details match with a high confidence the data on file with the bank
22Pass (High Confidence Structure)The account number structure matches routing number providedNo DataNo Data came back from the account owner details provided
23Pass (High Confidence Structure)The account number structure matches routing number providedFail (Mismatch)Account owner details provided do not match the data on file with the bank
31Pass (Medium Risk of Returns)Account history indicates debit return may be more likelyPass (Match)Account owner details match with a high confidence the data on file with the bank
32Pass (Medium Risk of Returns)Account history indicates debit return may be more likelyNo DataNo Data came back from the account owner details provided
33Pass (Medium Risk of Returns)Account history indicates debit return may be more likelyFail (Mismatch)Account owner details provided do not match the data on file with the bank
41Pass (Medium Confidence Account Number Structure)Account number structure structure may be invalid and doesn’t match the routing number providedPass (Match)Account owner details match with a high confidence the data on file with the bank
42Pass (Medium Confidence Account Number Structure)Account number structure structure may be invalid and doesn’t match the routing number providedNo DataNo Data came back from the account owner details provided
43Pass (Medium Confidence Account Number Structure)Account number structure structure may be invalid and doesn’t match the routing number providedFail (Mismatch)Account owner details provided do not match the data on file with the bank
51Fail (Low Confidence Account Number Structure)Account number structure structure is likely invalid and doesn’t match the routing number providedPass (Match)Account owner details match with a high confidence the data on file with the bank
52Fail (Low Confidence Account Number Structure)Account number structure structure is likely invalid and doesn’t match the routing number providedNo DataNo Data came back from the account owner details provided
53Fail (Low Confidence Account Number Structure)Account number structure structure is likely invalid and doesn’t match the routing number providedFail (Mismatch)Account owner details provided do not match the data on file with the bank
61Fail (High Risk of Returns)Account history indicates debit return may be highlyPass (Match)Account owner details match with a high confidence the data on file with the bank
62Fail (High Risk of Returns)Account history indicates debit return may be highlyNo DataNo Data came back from the account owner details provided
63Fail (High Risk of Returns)Account history indicates debit return may be highlyFail (Mismatch)Account owner details provided do not match the data on file with the bank
71Fail (Invalid Account/RN)The Account Number, Routing Number may be invalid or the account may be closedPass (Match)Account owner details match with a high confidence the data on file with the bank
72Fail (Invalid Account/RN)The Account Number, Routing Number may be invalid or the account may be closedNo DataNo Data came back from the account owner details provided
73Fail (Invalid Account/RN)The Account Number, Routing Number may be invalid or the account may be closedFail (Mismatch)Account owner details provided do not match the data on file with the bank
81No DataNo Data came back from the routing number providedPass (Match)Account owner details match with a high confidence the data on file with the bank
82No DataNo Data came back from the routing number providedNo DataNo Data came back from the account owner details provided
83No DataNo Data came back from the routing number providedFail (Mismatch)Account owner details provided do not match the data on file with the bank
94BlocklistedRouting number specified on BlocklistBlocklistedRouting number specified on Blocklist

Workflow Note

Specific resultCode values can be configured as automatic failures based on your business logic. If a code is configured as a failure, the API will not return a connectionId. To set a passing or failing resultCode, please contact your dedicated Solutions Engineer.