Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Validation Services Account Validation API
version: 2.2.3
description: Verify accounts and identities for individuals and organizations in real time, so you can confidently onboard customers, reduce fraud, and meet compliance requirements with a single, streamlined integration.
contact:
name: JPMC Technical Services Support
servers:
- url: https://apigateway.jpmorgan.com/tsapi/v2
description: PRODUCTION - MTLS
- url: https://apigatewaycat.jpmorgan.com/tsapi/v2
description: CLIENT TESTING - MTLS
- url: https://api-mock.payments.jpmorgan.com/tsapi/v2
description: MOCK
tags:
- name: Account Validation
description: API to validate accounts
paths:
/validations/accounts:
post:
tags:
- Account Validation
operationId: accountValidation
summary: Account validation
description: Validate an account
parameters:
- name: x-client-id
in: header
required: true
description: A unique identifier assigned to a client during the onboarding process.
examples:
Account Validation Request (US):
value: CLIENTID
Account Validation Request Multi (US):
value: CLIENTID
Micro-deposit Initial ACH Request (US):
value: CLIENTID
Micro-deposit Challenge ACH Request (US):
value: CLIENTID
Micro-deposit Initial RTP Request (US):
value: CLIENTID
Micro-deposit Challenge RTP Request (US):
value: CLIENTID
Account Validation Request (Non US):
value: CLIENTID
Account Confidence Request (US):
value: CLIENTID
Account Validation Request (SurePay VOP):
value: CLIENTID
schema:
type: string
- name: x-program-id
in: header
required: true
description: A unique identifier assigned to a client during the onboarding process.
schema:
type: string
examples:
Account Validation Request (US):
value: VERIAUTH
Account Validation Request Multi (US):
value: VERIAUTHMULTI
Micro-deposit Initial ACH Request (US):
value: PROGRAMID
Micro-deposit Challenge ACH Request (US):
value: PROGRAMID
Micro-deposit Initial RTP Request (US):
value: PROGRAMID
Micro-deposit Challenge RTP Request (US):
value: PROGRAMID
Account Validation Request (Non US):
value: VERIAUTHNONUS
Account Confidence Request (US):
value: VERIAUTHUS
Account Validation Request (SurePay VOP):
value: SUREPAYVOP
- name: x-program-id-type
in: header
required: false
description: A unique identifier assigned to a specific Validation Services product selection. The defaults values is “AVS” program-id-type. It indicates the processing settings selected for the product and will be provided during onboarding. This is an optional parameter.
schema:
type: string
examples:
Account Validation Request (US):
value: AVS
Account Validation Request Multi (US):
value: AVS
Micro-deposit Initial ACH Request (US):
value: AVS
Micro-deposit Challenge ACH Request (US):
value: AVS
Micro-deposit Initial RTP Request (US):
value: AVS
Micro-deposit Challenge RTP Request (US):
value: AVS
Account Validation Request (Non US):
value: AVS
Account Confidence Request (US):
value: AVS
Account Validation Request (SurePay VOP):
value: AVS
requestBody:
content:
application/json:
schema:
type: array
minItems: 0
items:
$ref: '#/components/schemas/AccountDetails'
examples:
Account Validation Request (US):
value:
- requestId: 123e4567-e89b-12d3-a456-426614174000
clientReferenceId: CLIENT-AVS-US-001
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: '122199983'
idType: ABA
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
Account Validation Request Multi (US):
value:
- requestId: 123e4567-e89b-12d3-a456-426614174000
clientReferenceId: CLIENT-AVS-MULTI-001
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: '122199983'
idType: ABA
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
transactions: []
Micro-deposit Initial ACH Request (US):
value:
- requestId: 223e4567-e89b-12d3-a456-426614174000
clientReferenceId: CLIENT-MD-ACH-INIT-001
profileName: verificationauth
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: '122199983'
idType: ABA
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
transactions: []
Micro-deposit Challenge ACH Request (US):
value:
- requestId: 223e4567-e89b-12d3-a456-426614174000
clientReferenceId: CLIENT-MD-ACH-CHAL-001
profileName: verificationauth
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: '122199983'
idType: ABA
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
transactions:
- context: ACCOUNT_VALIDATION
amount:
amount: 0.03
currency: USD
- context: ACCOUNT_VALIDATION
amount:
amount: 0.14
currency: USD
Micro-deposit Initial RTP Request (US):
value:
- requestId: 1231e001-e89b-12d3-a456-129414174000213
clientReferenceId: CLIENT-MD-RTP-INIT-001
profileName: verificationauth
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: '122199983'
idType: RTPABA
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
transactions: []
Micro-deposit Challenge RTP Request (US):
value:
- requestId: 1231e001-e89b-12d3-a456-129414174000213
clientReferenceId: CLIENT-MD-RTP-CHAL-001
profileName: verificationauth
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: '122199983'
idType: RTPABA
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
transactions:
- context: ACCOUNT_VALIDATION
amount:
amount: 0.03
currency: USD
- context: ACCOUNT_VALIDATION
amount:
amount: 0.14
currency: USD
Account Validation Request (Non US):
value:
- requestId: 123e4567-e89b-12d3-a456-426614174000
clientReferenceId: CLIENT-AVS-NONUS-001
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: PARBDEFFZZZ
idType: SWIFT
postalAddress:
country: AT
accountNumberType: IBAN
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
identification:
- idType: TAX_ID
id: '111223333'
transactions: []
Account Confidence Request (US):
value:
- requestId: 123e4567-e89b-12d3-a456-426614174000
clientReferenceId: CLIENT-CONF-US-001
account:
accountNumber: '12345'
financialInstitutionId:
clearingSystemId:
id: '122199983'
idType: ABA
entity:
individual:
firstName: Jane
lastName: Abbot
fullName: Jane Abbot
transactions: []
Account Validation Request (SurePay VOP):
value:
- requestId: 0000-TEST-SPI-T01
clientReferenceId: CLIENT-SUREPAY-001
profileName: SPIndividual
account:
accountNumber: NL91ABNA041716430
accountNumberType: IBAN
financialInstitutionId:
clearingSystemId:
id: ABNANL2A
idType: BIC
ultimateEntityAccount:
financialInstitutionId:
clearingSystemId:
id: DEUTDEFF500
idType: BIC
entity:
individual:
firstName: David
lastName: Martin
fullName: David Martin
transactions: []
required: true
callbacks:
validationStatus:
'{client-url}/status':
post:
summary: Validation Status Callback
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Payload'
required: true
responses:
'200':
description: OK
responses:
'200':
description: 'OK
Error codes which could be returned with a 200 http response.
* 9001 - Data Provider Error
* 9002 - Processing Error
* 9003 - Timeout Error
* 9004 - Client Configuration Error
* 9005 - Bad Request
'
content:
application/json:
schema:
type: array
minItems: 0
items:
$ref: '#/components/schemas/ResponseCollection'
examples:
AccountValidationRequest:
value:
- requestId: 123e4567-e89b-12d3-a456-426614174000
clientReferenceId: CLIENT-AVS-US-001
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
AccountValidationRequestSurePayVOP:
value:
- requestId: 0000-TEST-SPI-T01
clientReferenceId: CLIENT-SUREPAY-001
responses:
- codes:
verification:
code: 1002
message: Open Valid
authentication:
code: 5002
message: Ownership Match
provider: SUREPAY_VOP
details:
resultType: MATCHING
accountNumber: NL91ABNA041716430
financialInstitutionId:
clearingSystemId:
id: ABNANL2A
idType: BIC
'400':
description: 'Bad Request.
* GCA-023 - Please re-send request in valid format.
* GCA-129 - ProgramId is required.
'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'403':
description: 'Forbidden.
* GCA-001 - Unauthorized Access.
* GCA-003 - Unauthorized Access.
* GCA-103 - The programId was not found.
'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
examples:
TooManyRequests:
summary: Too many requests
description: The pre-defined API request rate limit breached due to too many requests within a specific time window.
value:
errors:
- errorCode: '9005'
errorMsg: The agreed rate limit has been exceeded, try again later.
'500':
description: 'Internal Error.
* GCA-099 - System is Unavailable.
'
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
components:
schemas:
Amount:
type: object
properties:
amount:
minimum: 0
type: number
description: 'Must be present to receive a Participant Model score and also to receive the benefit of below functionality:
* high focus item
* duplication detection
* stop payment notification
<br><br>For inquiries with no dollar amount, enrollments for example, it is recommended to inquire applying an average dollar amount for the use case.<br>
<b>Required if available.</b>'
format: double
example: 1234567890.99
currency:
maxLength: 3
minLength: 3
type: string
description: Required when amount is not zero.
checkSerialNo:
maxLength: 15
minLength: 1
type: integer
description: 'For check transactions.<br>
Must be present to get the benefit of below functionality:<br>
* high focus item
* duplication detection
* stop payment notification.
<br><br><b>Not required for ACH inquiries.</b>'
format: int32
Individual:
title: Individual
required:
- individual
type: object
properties:
individual:
$ref: '#/components/schemas/IndividualEntity'
PostalAddress:
title: PostalAddress
required:
- country
type: object
description: Required for Entity Validation
properties:
addressLine:
type: array
minItems: 0
items:
type: string
maxLength: 60
minLength: 1
example: 123 Main St
description: The street address.
example:
- 123 Main St
- Apartment 2a
townName:
maxLength: 25
minLength: 1
type: string
description: The town or city name.
example: Tampa
countrySubDvsn:
type: string
minLength: 1
maxLength: 25
example: FL
description: The country sub division's name.<b> If used for a US state then should be 2 character code.
country:
maxLength: 2
minLength: 2
pattern: ^[A-Z]{2}$
type: string
description: "2 character ISO 3166_1 Country Code. <br>\n Required for individual and business validation."
example: US
postalCode:
maxLength: 10
minLength: 5
pattern: ^([0-9]{5}|[0-9]{9}|[0-9]{5}-[0-9]{4})$
type: string
example: '52255'
county:
maxLength: 60
minLength: 1
type: string
description: The county name.
example: Hillsborough
residentialStatus:
type: string
description: 'Subject''s owner or renter status. Possible values: * Own * Rent'
unitNumber:
maxLength: 10
minLength: 1
type: string
description: The suite or the unit number.
example: '1'
buildingNumber:
maxLength: 10
minLength: 1
type: string
description: The building number.
example: '101'
buildingName:
maxLength: 60
minLength: 1
type: string
description: The building name.
example: Tampa
streetType:
maxLength: 60
minLength: 1
type: string
description: The street type.
example: Avenue
streetName:
maxLength: 60
minLength: 1
type: string
description: The street name.
example: Clement Town
suburb:
maxLength: 60
minLength: 1
type: string
description: The suburb or district within a town or a city.
example: Citrus Park
ResultCollection:
type: object
properties:
error:
$ref: '#/components/schemas/Result'
verification:
$ref: '#/components/schemas/Result'
authentication:
$ref: '#/components/schemas/Result'
individualID:
$ref: '#/components/schemas/Result'
businessID:
$ref: '#/components/schemas/Result'
limitAmount:
$ref: '#/components/schemas/Result'
individualScreening:
$ref: '#/components/schemas/Result'
businessScreening:
$ref: '#/components/schemas/Result'
verificationMicrodeposit:
$ref: '#/components/schemas/Result'
authenticationMicrodeposit:
$ref: '#/components/schemas/Result'
accountScore:
$ref: '#/components/schemas/AccountScore'
Organization:
title: Organization
required:
- organization
type: object
properties:
organization:
$ref: '#/components/schemas/OrganizationEntity'
Errors:
type: object
properties:
errors:
type: array
minItems: 0
items:
type: object
properties:
errorCode:
type: string
example: GCA-001
errorMsg:
type: string
example: Unauthorized Access
PhoneNumbers:
title: PhoneNumbers
type: array
minItems: 0
items:
$ref: '#/components/schemas/PhoneNumber'
Result:
type: object
properties:
code:
type: integer
description: 'Error codes have first digit of 9,
for example:
* 9001 : Data Provider Error
* 9002 : Processing Error
* 9003 : Timeout Error
* 9004 : Client Configuration Error
* 9005 : Bad Request
'
format: int32
example: 1002
message:
type: string
description: 'Message is based on the code:
* 1 = Open Valid
* 2 = Closed Invalid
* 3 = No Information Found
* 4 = Debit Return Likely
* 5 = Ownership Match
* 6 = Ownership No Match
* 7 = No Information Found
'
example: Open Valid
sequence:
type: integer
format: int32
authorizedRepIDs:
type: object
properties:
code:
type: integer
description: 'Refer to the API and Technical Specifications Doc based on your product for provider response details
Error codes have first digit of 9,
for example:
* 9001 : Data Provider Error
* 9002 : Processing Error
* 9003 : Timeout Error
* 9004 : Client Configuration Error
* 9005 : Bad Request
'
format: int32
example: 1002
message:
type: string
description: 'Message is based on the code.<b>
* 1 = Open Valid
* 2 = Closed Invalid
* 3 = No Information Found
* 4 = Debit Return Likely
* 5 = Ownership Match
* 6 = Ownership No Match
* 7 = No Information Found
'
example: Open Valid
sequence:
type: integer
format: int32
description: An array that contains the results for the authorized representative for a given business. The authorizedRepIds can be returned when using provider 'LEXISNEXIS_BUSINESS_V2'.
Account:
required:
- accountNumber
- financialInstitutionId
type: object
properties:
accountNumber:
maxLength: 17
minLength: 4
pattern: ^[0-9a-zA-Z]+$
type: string
example: '123456789012'
accountNumberType:
type: string
description: Type of account. Example values - CLABE, DDA, IBAN
financialInstitutionId:
$ref: '#/components/schemas/FinancialInstitutionId'
Transaction:
type: object
properties:
context:
type: string
description: Denotes the context of the transaction. Supported values – ACCOUNT_VALIDATION
processControlTransactionCode:
maximum: 999999
minimum: 100000
maxLength: 6
minLength: 6
type: integer
description: Process Control Transaction Code.
format: int32
amount:
$ref: '#/components/schemas/Amount'
AccountScore:
type: object
title: Account Score
description: 'Account score information in coded message format being:
| code | message |
|-------|----------------------|
| 1109 | Information Found |
| 1209 | No Information Found |'
properties:
code:
type: integer
example: 1109
message:
type: string
example: Information Found
example:
code: 1209
message: No Information Found
Response:
type: object
properties:
codes:
$ref: '#/components/schemas/ResultCollection'
provider:
type: string
description: "- For Entity validation the following providers are applicable:\n - **JPMC**, \n - **JPMC_SCREENING**,\n - **LEXISNEXIS** \n - **LEXISNEXIS_INSTANT_ID**,\n - **LEXISNEXIS_BUSINESS_V2, \n - **GIACT_BUSINESS**, \n - **GIACT_INDIVIDUAL**,\n - **TRULIOO_INDIVIDUAL**,\n - **TRULIOO_BUSINESS**\n- For Account validation the following providers are applicable:\n - **JPMC**, \n - **JPMC_BENE**, \n - **JPMC_ACH**, \n - **GIACT**, \n - **MICRODEPOSITS**, \n - **EWS**, \n - **EWS_VA**,\n - **PATTERN_MATCH**"
details:
type: object
AccountDetails:
required:
- account
- requestId
type: object
properties:
profileName:
type: string
requestId:
maxLength: 75
minLength: 1
pattern: ^[a-zA-Z0-9\-]+$
type: string
description: Unique Identifier for a request.<br>Preferably a Universally Unique Identifier (UUID).
example: ad020818-aecb-4427-a4d8-a9912f0742e4
clientReferenceId:
maxLength: 75
pattern: ^[a-zA-Z0-9+\-]+$
type: string
description: Client-provided reference identifier for tracking and correlation purposes.
example: CLIENT-REF-12345
account:
$ref: '#/components/schemas/Account'
entity:
oneOf:
- $ref: '#/components/schemas/Individual'
- $ref: '#/components/schemas/Organization'
transactions:
type: array
minItems: 0
items:
$ref: '#/components/schemas/Transaction'
OrganizationEntity:
title: Organization Entity
required:
- name
type: object
properties:
name:
maxLength: 100
minLength: 1
type: string
description: 'Indicates the organization’s name. <br>
This is a required field when authenticating an organization.'
example: Smith And Co
alternateName:
maxLength: 100
minLength: 1
pattern: ^[A-Za-z0-9\s.\-?&:()`@,+/'%#!^>=]+$
type: string
example: Smith And Co Products
postalAddress:
$ref: '#/components/schemas/PostalAddress'
associatedCountries:
type: array
minItems: 0
items:
type: string
maxLength: 2
minLength: 2
pattern: ^[A-Z]{2}$
description: List of comma-separated 2 character ISO 3166_1 Country Code.
identification:
type: array
minItems: 0
description: FEIN, PAN_CARD_INDIA, ORGANIZATION_ID_CHINA.
items:
$ref: '#/components/schemas/EntityId'
contactDetails:
type: object
properties:
email:
maxLength: 320
minLength: 1
type: string
description: The email address.
phoneNumbers:
$ref: '#/components/schemas/PhoneNumbers'
channel:
maxLength: 20
minLength: 1
pattern: Mail|PointOfSale|Kiosk|Internet|Branch|Telephonic|Other
type: string
description: 'Channel. Possible values: Mail, PointOfSale, Kiosk, Internet, Branch, Telephonic, Other'
authorizedIndividuals:
type: array
minItems: 0
description: Related parties such as the Beneficial Owners of the business and the authorized signer or the controller.
items:
$ref: '#/components/schemas/IndividualEntity'
device:
type: object
description: Device details
properties:
ipAddress:
maxLength: 39
minLength: 0
type: string
description: Device IP address
EntityId:
required:
- id
- idType
type: object
properties:
idType:
type: string
description: "Entity Identification type required for entity and financial validation:\n\n- Individual entity possible values: \n - *SSN* (Optional for US), \n - *ITIN* (Optional for US), \n - *DRIVERS_LICENSE_USA* (Optional for US), \n - *PAN_CARD_INDIA* (Optional for IN), \n - *NATIONAL_ID_CHINA*(Mandatory for CN), \n - *DRIVERS_LICENSE* (Optional for IN), \n - *VOTER_ID* (Optional for IN),\n - TAX_ID (Mandatory for GR), \n - *SOCIAL_SERVICE* (Optional for CA, IT, MX, PH), \n - *NATIONAL_ID* (Mandatory for HK, SG, AE, VN, CR, DN, ID, MY, MT, KR, SE TW, TH. Optional for MX, AR, BR, CL, RO, ES)\n\n---\n\n- Business possible values: \n - *FEIN* (Optional for US) ), \n - *PAN_CARD_INDIA* (Optional for IN), \n - *ORGANIZATION_ID_CHINA* (Optional for CN), \n - *BUSINESS_REGISTRATION_NUMBER* (Mandatory for Brazil, Optional for all other countries), \n - *TAX_ID* (Mandatory for FR, DE, LU, NL, GB, AT, BE, CZ, DK, FL, GR, ID, IE, IT, MT, PL, PT, RO, SK, ES, SE, CH, BG, HR, CY, EE, HU, LY, LT)"
enum:
- SSN
- DRIVERS_LICENSE_USA
- PAN_CARD_INDIA
- ITIN
- FEIN
- NATIONAL_ID_CHINA
- ORGANIZATION_ID_CHINA
- NATIONAL_ID
- DRIVERS_LICENSE
- VOTER_ID
- SOCIAL_SERVICE
- BUSINESS_REGISTRATION_NUMBER
- TAX_ID
id:
maxLength: 28
minLength: 1
type: string
description: 'The first identification ID of the individual.<br>In case of SSN, must contain either full SSN/ITIN or last four digits of SSN.
i.e. Only four digits or nine digits will be accepted for SSN. <br>
In case of PAN ID, must be 10 characters: first five characters as letters, followed by four digits and then a letter.
Required for financial validation.'
issuer:
maxLength: 6
minLength: 2
type: string
description: The state or place that issued the first identification ID.
issueDate:
maxLength: 8
minLength: 8
type: integer
description: Structure that contains passport issue date elements, format = YYYYMMDD.
format: int32
expirationDate:
maxLength: 8
minLength: 8
type: integer
description: Structure that contains passport expiration date elements, format = YYYYMMDD.
format: int32
Payload:
$ref: '#/components/schemas/ResponseCollection'
IndividualEntity:
title: Individual Entity
description: An individual entity
required:
- firstName
- fullName
- lastName
type: object
properties:
firstName:
maxLength: 40
minLength: 1
pattern: ^[A-Za-z0-9\s.\-?&:()`@,+/'%#!^>=]+$
type: string
description: 'Indicates the individual’s first name. <br>
This is a required field when authenticating an individual.'
example: Jane
lastName:
maxLength: 40
minLength: 1
pattern: ^[A-Za-z0-9\s.\-?&:()`@,+/'%#!^>=]+$
type: string
description: 'Indicates the individual’s last name. <br>
This is a required field when authenticating an individual.'
example: Smith
middleName:
maxLength: 40
minLength: 1
pattern: ^[A-Za-z0-9\s.\-?&:()`@,+/'%#!^>=]+$
type: string
description: 'The individual’s middle name or initial. <br>
If middle initial is included, it should be a single letter without a period.'
additionalLastName:
type: string
maxLength: 40
minLength: 1
description: The individual’s additional last name.
issueDate:
type: string
format: date
namePrefix:
maxLength: 4
minLength: 1
pattern: ^[A-Za
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/jp-morgan-chase/refs/heads/main/openapi/jp-morgan-chase-account-validation-api-openapi.yml