Verify a U.S. bank account and ownership
In this tutorial, you will learn how to verify a United States bank account status and authenticate the account owner’s name. By the end of this tutorial, you will know how to:
- Verify if an account exists and is active.
 - Verify if an account is likely to result in a debit return.
 - Validate the account status along with the beneficiary.
 - Determine the required and optional field parameters.
 
Before you begin
To retrieve the status of an Validation Services request, you will need the following:
- A registered and fully onboarded Developer Account on the J.P. Morgan Payments Developer Portal.
 - An active project that provides you with the credentials to make a request.
 
Verify and authenticate a bank account
Validating account status evaluates a bank account and determines if the account number is in good standing. To do this call a POST request to the v2/validations/accounts endpoint. The following example shows the required fields for an Account verification request. 
[
  {
    "requestId": "123e4567-e89b-12d3-a456-426614174000",
    "account": {
      "accountNumber": "12345",
      "financialInstitutionId": {
        "clearingSystemId": {
          "id": "122199983",
          "idType": "ABA"
        }
      }
    },
    "entity": {
      "individual": {
        "firstName": "Jane",
        "lastName": "Abbot",
        "fullName": "Jane Abbot"
      }
    }
  }
]The following example shows a deterministic account validation response for a single provider:
[
  {
    "requestId": "123e4567-e89b-12d3-a456-426614174000",
    "responses": [
      {
        "codes": {
          "verification": {
            "code": 1002,
            "message": "Open Valid"
          },
          "authentication": {
            "code": 5002,
            "message": "Ownership Match"
          }
        },
        "provider": "JPMC_ACH",
        "details": {
          "paymentCheckContributingStatus": "Contributed",
          "accountNumber": "XXXX5",
          "financialInstitutionId": {
            "clearingSystemId": {
              "id": "122199983",
              "idType": "ABA"
            }
          }
        }
      }
    ]
  }
]The following example shows a deterministic account validation response for multiple providers:
[
  {
    "requestId": "123e4567-e89b-12d3-a456-426614174000",
    "responses": [
      {
        "codes": {
          "verification": {
            "code": 1001,
            "message": "Open Valid"
          }
        },
        "provider": "JPMC_ACH",
        "details": {
          "accountNumber": "XXXX5",
          "financialInstitutionId": {
            "clearingSystemId": {
              "id": "122199983",
              "idType": "ABA"
            }
          }
        }
      },
      {
        "codes": {
          "authentication": {
            "code": 6002,
            "message": "Ownership No Match"
          }
        },
        "provider": "EWS",
        "details": {
          "paymentCheckContributingStatus": "Contributed",
          "accountNumber": "XXXX5",
          "financialInstitutionId": {
            "clearingSystemId": {
              "id": "122199983",
              "idType": "ABA"
            }
          }
        }
      }
    ]
  }
]Probabilistic account validation
The following example shows a probabilistic account validation request:
[
  {
    "requestId": "123e4567-e89b-12d3-a456-426614174000",
    "profileName": "brie",
    "account": {
      "accountNumber": "61231234337",
      "financialInstitutionId": {
        "clearingSystemId": {
          "id": "021000021",
          "idType": "ABA"
        }
      }
    },
    "entity": {
      "individual": {
        "firstName": "George",
        "lastName": "White"
      }
    },
    "transactions": []
  }
]The following example shows a probabilistic account validation response:
[
  {
    "requestId": "123e4567-e89b-12d3-a456-426614174000",
    "responses": [
      {
        "codes": {
          "verification": {
            "code": 1001,
            "message": "Open Valid"
          },
          "authentication": {
            "code": 5001,
            "message": "Ownership Match"
          }
        },
        "provider": "JPMC_ACH",
        "details": {
          "accountNumber": "XXXXXXXX337",
          "financialInstitutionId": {
            "clearingSystemId": {
              "id": "021000021",
              "idType": "ABA"
            }
          }
        }
      }
    ]
  }
]Successful response messages
An HTTP status of 200 indicates a successful response. The following fields indicate the result:
responseStatusresponseCoderesponseMessage
Authenticate an individual or business's bank account
To validate an individual’s bank account, use the following fields:
individual.firstnameindividual.lastname
To validate a business’s bank account, use the following field:
organization.name
Related
- For more information about parameters, see Account Validation parameters.
 - For more information about the status responses and error codes supported by the Validation Services API, see Validation Services error response codes.
 
Next steps
- Learn how to perform micro-deposits.
 - Learn how to verify a global account.
 - Learn how to request Account Confidence Score