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

For inquiries with no dollar amount, enrollments for example, it is recommended to inquire applying an average dollar amount for the use case.
Required if available.' 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.
Must be present to get the benefit of below functionality:
* high focus item * duplication detection * stop payment notification.

Not required for ACH inquiries.' 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. 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.
\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. * 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.
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.
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.
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.
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.
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.
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.
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-z0-9\s.\-?&:()`+/'%#!^>=]+$ type: string description: A prefix or a title that precedes an account holder's name. nameSuffix: maxLength: 5 minLength: 1 pattern: ^[A-Za-z0-9\s.\-?&:()`+/'%#!^>=]+$ type: string description: A suffix or a title that follows an account holder's name. fullName: maxLength: 150 minLength: 1 type: string description: 'The individual’s full name.
First and Last Name or Full Name is required for individual validation.
The Full Name should be used when validating Individuals using a Chinese data provider.' example: Jane Smith 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 maxItems: 21 description: SSN, ITIN, DRIVERS_LICENSE_USA, PAN_CARD_INDIA, NATIONAL_ID, NATIONAL_ID_CHINA. items: $ref: '#/components/schemas/EntityId' gender: maxLength: 1 minLength: 1 pattern: ^[MF]+$ type: string description: 'Gender. Possible values: * M (Male) * F (Female)' dateOfBirth: maxLength: 8 minLength: 8 type: integer description: 'Date of Birth; format = YYYYMMDD.
The dateOfBirth is required for individual validation in the United States.' format: int32 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' income: type: object properties: income: maxLength: 20 minLength: 1 pattern: ^[0-9]+$ type: string description: Income. incomeCurrency: maxLength: 3 minLength: 1 pattern: ^[A-Z]+$ type: string description: 'Income Currency. Ex: USD' example: USD device: type: object description: Device details properties: ipAddress: maxLength: 39 minLength: 0 type: string description: Device IP address PhoneNumber: type: object properties: phoneNumber: type: string maxLength: 15 description: Phone numberValues should match the pattern ^[0-9]{10,15}$
phoneNumberType: type: string description: "
Allowable types for individuals are::\n *\thome\n *\twork\n *\tmobile\nAllowable types for organizations are:\n *\twork
" ResponseCollection: title: Validation Response Collection description: A collection of validation responses type: object properties: requestId: maxLength: 75 pattern: ^[a-zA-Z0-9\-]*$ type: string 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 profileName: type: string responses: type: array minItems: 0 items: $ref: '#/components/schemas/Response' FinancialInstitutionId: title: FinancialInstitutionId required: - clearingSystemId type: object properties: bic: type: string postalAddress: $ref: '#/components/schemas/PostalAddress' clearingSystemId: required: - id - idType type: object properties: id: type: string idType: type: string description: 'Type of Institution code. Examples values: - `CLABE` - `INFSC` - `IBAN` - `ABA` - `RTPABA` - `SWIFT_ID`' x-jpmc-securityDefinitions: MutualTLS: type: x509