openapi: 3.0.0 info: title: Account Validation description: "With the Account Validation API you can validate payee details to reduce payment processing\ \ errors. You can validate Account Number, Routing Number, and Beneficiary. Many payments are made\ \ in real-time and are irrevocable, confirming those payments go to the right counterparty is essential.\ \ The following functions are available:\n\n - Verify a bank account based on account number and\ \ routing number.\n - Verify the account status (open, closed, unverified, incorrect, rejected,\ \ open credits only).\n - Verify a beneficiary name match status (partial, full, no match).\n

\n\ \nThe **Account Validation Services** offer the following key features:\n\n1. **Initiate Account Inquiry\ \ API**:\n - This endpoint initiates an account validation request by submitting the account details,\ \ bank details, and beneficiary name. Upon successful submission, a unique reference ID is returned,\ \ which can be used to track the status of the inquiry. If status is available immediately, /initiation\ \ API response includes reference Id along with account inquiry status and name match status.\n \ \ - **Endpoint**: `v1/account-validation/initiation` (POST)\n - **Purpose**: To initiate an account\ \ validation request.\n\n2. **Get Account Inquiry Status API**:\n - This endpoint retrieves the\ \ status of an account inquiry request by providing the reference ID returned during the initiation\ \ step. This API checks if the validation is still in progress, completed, or has failed, along with\ \ any relevant status messages. Once the account inquiry is completed, the status can be requested\ \ up to three times.\n - **Endpoint**: `v1/account-validation/status` (GET)\n - **Purpose**: To\ \ retrieve account validation result using the reference ID.\n" contact: name: Commercial Sales team url: https://www.citizensbank.com/corporate-finance/overview.aspx?cmclmkt#next-step version: 1.0.13 x-ibm-name: account-validation x-pathalias: accountvalidation-v1 x-ibm-summary: '' x-source-url: https://developer.citizensbank.com/product/commercial-banking/api/accountvalidation-v1 x-harvested: '2026-09-05' x-harvest-method: searched x-environment: production externalDocs: description: API Documentation url: https://developer.citizensbank.com/content/qut/CitizensAccountValidationAPIUserGuide.pdf security: - client-id: [] paths: /initiation: post: tags: - Initiate Account Validation Inquiry summary: Initiate account validation request with account and bank details. description: This endpoint allows users to initiate an account inquiry by providing beneficiary name, account details and bank details. operationId: getAccountInquiry parameters: - name: x-fapi-trace-id in: header description: Unique request id for each request to make it traceable if needed. required: true style: simple schema: maxLength: 36 type: string - name: x-fapi-channel-id in: header description: Identifier used to distinguish between different communication channels or data streams within a client system. required: false style: simple explode: false schema: maxLength: 20 type: string - name: Authorization in: header description: OAuth 2.0 Authorization Bearer Token required: true style: simple schema: $ref: '#/components/schemas/AuthorizationHeader' example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkhMMkQtYVdmaUxVS1BpUHQ5b2lweWNiYXo4WV9SUzI1NiIsInBpLmF0bSI6InphYXciLCJ0eXAiOiJKV1QifQ.eyJzY29wZSI6ImlyOnJlYWQiLCJjaWQiOiIyNzFmYTdkZDI3MDExMTA5Mzc4ZWE5MTU1YzA2ZTcxMSIsImlzcyI6Imh0dHBzOi8vcGYtZmFtLWRldi5pbnRlcm5hbC5jaXRpemVuc2JhbmsuY29tIiwiYXVkIjoiaW5mb3JtYXRpb25fcmVwb3J0aW5nIiwianRpIjoiOHpRMUJVSnlTT0xkWHZmQXJtb1pQSXVpZXBmdkF5WnJwdnc4NVlGY2dDVk1FbyIsInN1YmplY3QiOiJBQ01FLUFQSV9VQVRBTExfTU1HUFMiLCJjbmYiOnsieDV0IjoiOTlmN2Q3ZDQzOGMxZjViMWFiNzc4MDA1YmU3OGNkODY0NDU1YmYyYSJ9LCJleHAiOjE3NTczNTE2NzR9.c6y4ZcVxP8c8dZK8IwMPhVnKkrk7Kyf4h4cUo8GOPxrrR_AYq-59tcO9lzTkr4Kfa5-7q_HbxCV14wUnwz_N1JuehZ5N3wyuJ3wjc2jEfOnto8YwSEhY4qWbFm1TTdU8jqRZMp2KpvBpwa5BKNfjo3t0xAMqQ2til5-1JQHEZyint56OglKq13OzG265jW_RKOhmmmGuTlqDjiC4Mz2AQU-1VZY2i6LZTqKKTr7dvQVy5TKm9-akEkie8s-cXymaQ9Km54-PARdH8orezez8NuJc4LN550m46ulWJ2mNMDs4D9NnKQMr-stla2mQtovU__vNg3WDCvQ8Nrw1db5icA requestBody: description: The request body must include account identifiers and bank identifiers to initiate account inquiry process. content: application/json: schema: $ref: '#/components/schemas/AccountStatusInquiryRequest' required: true responses: '200': description: Successfully initiated account inquiry. content: application/json: schema: $ref: '#/components/schemas/inline_response_200' '400': description: Bad request. This may occur if the input data is invalid or missing required fields. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' '401': description: Unauthorized. The user does not have permission to access this resource. content: application/json: schema: $ref: '#/components/schemas/UnauthorizedErrorResponse' '500': description: Internal Server Error. An unexpected error occurred on the server. content: application/json: schema: $ref: '#/components/schemas/InternalServerErrorResponse' /status: get: tags: - Get Account Inquiry Status summary: Retrieve account inquiry status by reference ID description: This endpoint retrieves the status of an account inquiry using a reference ID. operationId: getAccountInquiryByRefId parameters: - name: x-fapi-trace-id in: header description: Unique request id for each request to make it traceable if needed. required: true style: simple schema: maxLength: 36 type: string - name: x-fapi-channel-id in: header description: Identifier used to distinguish between different communication channels or data streams within a client system. required: false style: simple explode: false schema: maxLength: 20 type: string - name: Authorization in: header description: OAuth 2.0 Authorization Bearer Token required: true style: simple schema: $ref: '#/components/schemas/AuthorizationHeader' example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkhMMkQtYVdmaUxVS1BpUHQ5b2lweWNiYXo4WV9SUzI1NiIsInBpLmF0bSI6InphYXciLCJ0eXAiOiJKV1QifQ.eyJzY29wZSI6ImlyOnJlYWQiLCJjaWQiOiIyNzFmYTdkZDI3MDExMTA5Mzc4ZWE5MTU1YzA2ZTcxMSIsImlzcyI6Imh0dHBzOi8vcGYtZmFtLWRldi5pbnRlcm5hbC5jaXRpemVuc2JhbmsuY29tIiwiYXVkIjoiaW5mb3JtYXRpb25fcmVwb3J0aW5nIiwianRpIjoiOHpRMUJVSnlTT0xkWHZmQXJtb1pQSXVpZXBmdkF5WnJwdnc4NVlGY2dDVk1FbyIsInN1YmplY3QiOiJBQ01FLUFQSV9VQVRBTExfTU1HUFMiLCJjbmYiOnsieDV0IjoiOTlmN2Q3ZDQzOGMxZjViMWFiNzc4MDA1YmU3OGNkODY0NDU1YmYyYSJ9LCJleHAiOjE3NTczNTE2NzR9.c6y4ZcVxP8c8dZK8IwMPhVnKkrk7Kyf4h4cUo8GOPxrrR_AYq-59tcO9lzTkr4Kfa5-7q_HbxCV14wUnwz_N1JuehZ5N3wyuJ3wjc2jEfOnto8YwSEhY4qWbFm1TTdU8jqRZMp2KpvBpwa5BKNfjo3t0xAMqQ2til5-1JQHEZyint56OglKq13OzG265jW_RKOhmmmGuTlqDjiC4Mz2AQU-1VZY2i6LZTqKKTr7dvQVy5TKm9-akEkie8s-cXymaQ9Km54-PARdH8orezez8NuJc4LN550m46ulWJ2mNMDs4D9NnKQMr-stla2mQtovU__vNg3WDCvQ8Nrw1db5icA - name: referenceId in: query description: The unique reference ID associated with the account inquiry. required: true style: form explode: false schema: type: string responses: '200': description: Successfully retrieved the account inquiry status. content: application/json: schema: $ref: '#/components/schemas/AccountInquiryResponse' '401': description: Unauthorized. The user does not have permission to access this resource. content: application/json: schema: $ref: '#/components/schemas/UnauthorizedRequestErrorResponse' '500': description: Internal Server Error. An unexpected error occurred on the server. content: application/json: schema: $ref: '#/components/schemas/InternalServerErrorResponse' components: schemas: ErrorResponse: required: - errorDetails - result - source type: object properties: result: maxLength: 7 type: string description: It represents the error status. Its value should be either WARNING or FATAL. * `FATAL` - is an error which represents that something is not correct while processing the request, it could be because of the request or something is not correct with the processing system. * `WARNING` - is a success with some info which means it is not absolute successful transaction, however response will have information about what is needed in order to have absolute successful transaction. example: WARNING enum: - FATAL - WARNING source: maxLength: 100 type: string description: Source system or provider system which causes error. example: Account Validation API requestId: maxLength: 36 type: string description: traceid to track the error in the APM logs. example: 685af2c80f9b1a93ca106902937c2e01 errorDetails: type: array items: $ref: '#/components/schemas/ErrorResponse_errorDetails' UnauthorizedRequestErrorResponse: required: - errorDetails - result - source type: object properties: result: maxLength: 7 type: string description: It represents the error status. Its value should be either WARNING or FATAL. * `FATAL` - is an error which represents that something is not correct while processing the request, it could be because of the request or something is not correct with the processing system. * `WARNING` - is a success with some info which means it is not absolute successful transaction, however response will have information about what is needed in order to have absolute successful transaction. example: WARNING enum: - FATAL - WARNING source: maxLength: 100 type: string description: Source system or provider system which causes error. example: Account Validation API requestId: maxLength: 36 type: string description: traceid to track the error in the APM logs. example: 685af2c80f9b1a93ca106902937c2e01 errorDetails: type: array items: $ref: '#/components/schemas/UnauthorizedRequestErrorResponse_errorDetails' UnauthorizedErrorResponse: required: - errorDetails - result - source type: object properties: result: maxLength: 7 type: string description: It represents the error status. Its value should be either WARNING or FATAL. * `FATAL` - is an error which represents that something is not correct while processing the request, it could be because of the request or something is not correct with the processing system. * `WARNING` - is a success with some info which means it is not absolute successful transaction, however response will have information about what is needed in order to have absolute successful transaction. example: WARNING enum: - FATAL - WARNING source: maxLength: 100 type: string description: Source system or provider system which causes error. example: Account Validation API requestId: maxLength: 36 type: string description: traceid to track the error in the APM logs. example: 685af2c80f9b1a93ca106902937c2e01 errorDetails: type: array items: $ref: '#/components/schemas/UnauthorizedRequestErrorResponse_errorDetails' InternalServerErrorResponse: required: - errorDetails - result - source type: object properties: result: maxLength: 7 type: string description: It represents the error status. Its value should be either WARNING or FATAL. * `FATAL` - is an error which represents that something is not correct while processing the request, it could be because of the request or something is not correct with the processing system. * `WARNING` - is a success with some info which means it is not absolute successful transaction, however response will have information about what is needed in order to have absolute successful transaction. example: WARNING enum: - FATAL - WARNING source: maxLength: 100 type: string description: Source system or provider system which causes error. example: Account Validation API requestId: maxLength: 36 type: string description: traceid to track the error in the APM logs. example: 685af2c80f9b1a93ca106902937c2e01 errorDetails: type: array items: $ref: '#/components/schemas/InternalServerErrorResponse_errorDetails' AccountIdentifier: type: object properties: businessName: type: string description: Business name, if the account is a business account. example: ABC CORP accountNumber: type: string description: The account number being validated. example: '112234000' accountType: type: string description: The type of account identifer. example: ACCOUNT_NUMBER enum: - IBAN - CLABE - BBAN - ACCOUNT_NUMBER - CBU - CVU - CCI - SHID - MBNO country: type: string description: Country associated with the account. example: US enum: - US - AR - BR - CA - CN - CO - EU - HK - IN - ID - MY - MX - NP - NG - PK - PE - SG - ZA - KR - TW - TH - AE - UY - VN description: Schema for account identifiers, including personal and account details. AccountStatusInquiryRequest: type: object properties: accountIdentifier: $ref: '#/components/schemas/AccountIdentifier' bankIdentifier: $ref: '#/components/schemas/BankIdentifier' description: Schema for the request body to initiate an account inquiry. Includes account and bank identifiers. BankIdentifier: type: object properties: idType: type: string description: Type of bank identifier (e.g., SWIFT, ABA). example: USABA enum: - SWIFT_ID - IBAN - IFSC - CLABE - USABA - BRAZIL_BANK_CODE - CBU - CVU - CACPA - CNAPS - ACCOUNT_NUMBER - SHID - MBNO - ZANCC idValue: type: string description: Value of the bank identifier. example: '101000019' description: Schema for bank identifiers, includes bank id type and bank id value. AccountInquiryResponse: type: object properties: message: type: string description: A brief message about the response. example: Successfully processed description: type: string description: Detailed description of the response. example: Successfully retrieved inquiry status. requestId: type: string description: Unique identifier for the request. example: 6823527217cf82e16df9244b569cf1d2 requestTime: type: string description: Timestamp of the request. format: date-time data: $ref: '#/components/schemas/AccountInquiryResponse_data' status: type: integer description: HTTP status code of the response. format: int32 example: 200 description: Schema for the response of an account inquiry. Includes reference identifier, inquiry status, and metadata. AccountInquiryInitiateResponse: type: object properties: message: type: string description: A brief message about the response. example: Successfully processed description: type: string description: Detailed description of the response. example: Account Inquiry Initiated. requestId: type: string description: Unique identifier for the request. example: 6823527217cf82e16df9244b569cf1d2 requestTime: type: string description: Timestamp of the request. format: date-time data: $ref: '#/components/schemas/AccountInquiryInitiateResponse_data' status: type: integer description: HTTP status code of the response. format: int32 example: 200 description: Schema for the response of an account inquiry. Includes reference identifier, inquiry status, and metadata. inline_response_200: oneOf: - $ref: '#/components/schemas/AccountInquiryInitiateResponse' - $ref: '#/components/schemas/AccountInquiryResponse' ErrorResponse_errorDetails: required: - code - description type: object properties: code: maxLength: 10 type: string description: This is the application error code returned by the API layer or the Implementation layer. A list of error codes will be provided in the user guide. example: AV-400 messageDetail: maxLength: 250 type: string description: Details about error including stack traces. This will not be populated for any handled error. example: Your request cannot be processed. Please refer to the user guide for more information. UnauthorizedRequestErrorResponse_errorDetails: required: - code - description type: object properties: code: maxLength: 10 type: string description: This is the application error code returned by the API layer or the Implementation layer. A list of error codes will be provided in the user guide. example: AV-401 messageDetail: maxLength: 250 type: string description: Details about error including stack traces. This will not be populated for any handled error. example: Your request cannot be processed. Please refer to the user guide for more information. InternalServerErrorResponse_errorDetails: required: - code - description type: object properties: code: maxLength: 10 type: string description: This is the application error code returned by the API layer or the Implementation layer. A list of error codes will be provided in the user guide. example: AV-500 messageDetail: maxLength: 250 type: string description: Details about error including stack traces. This will not be populated for any handled error. example: Your request cannot be processed. Please refer to the user guide for more information. AccountInquiryResponse_data_referenceIdentifier: type: object properties: referenceId: type: string description: Unique reference ID for the inquiry. example: c9820cbb-ee63-443d-859c-45556514fd3c AccountInquiryResponse_data_inquiryStatus: type: object properties: accountNumber: type: string description: The account number being validated. example: '112234000' routingNumber: type: string description: The routing number associated with the account. example: '311079474' accountName: type: string description: Name associated with the account. example: ABC CORP accountStatus: type: string description: Status of the account (e.g., OPEN, CLOSED). example: OPEN accountStatusMessage: type: string description: Detailed message about the account status. example: Open accountStatusCode: type: string description: Code representing the account status. example: AC00 nameMatchStatus: type: string description: Status of the name match (e.g., FULL, PARTIAL). example: FULL AccountInquiryResponse_data: type: object properties: referenceIdentifier: $ref: '#/components/schemas/AccountInquiryResponse_data_referenceIdentifier' inquiryStatus: $ref: '#/components/schemas/AccountInquiryResponse_data_inquiryStatus' AccountInquiryInitiateResponse_data: type: object properties: referenceIdentifier: $ref: '#/components/schemas/AccountInquiryResponse_data_referenceIdentifier' AuthorizationHeader: title: JWT Access Token type: string parameters: x-fapi-trace-id: name: x-fapi-trace-id in: header description: Unique request id for each request to make it traceable if needed. required: true style: simple schema: maxLength: 36 type: string x-fapi-channel-id: name: x-fapi-channel-id in: header description: Identifier used to distinguish between different communication channels or data streams within a client system. required: false style: simple explode: false schema: maxLength: 20 type: string authorization: name: Authorization in: header description: OAuth 2.0 Authorization Bearer Token required: true style: simple schema: $ref: '#/components/schemas/AuthorizationHeader' example: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkhMMkQtYVdmaUxVS1BpUHQ5b2lweWNiYXo4WV9SUzI1NiIsInBpLmF0bSI6InphYXciLCJ0eXAiOiJKV1QifQ.eyJzY29wZSI6ImlyOnJlYWQiLCJjaWQiOiIyNzFmYTdkZDI3MDExMTA5Mzc4ZWE5MTU1YzA2ZTcxMSIsImlzcyI6Imh0dHBzOi8vcGYtZmFtLWRldi5pbnRlcm5hbC5jaXRpemVuc2JhbmsuY29tIiwiYXVkIjoiaW5mb3JtYXRpb25fcmVwb3J0aW5nIiwianRpIjoiOHpRMUJVSnlTT0xkWHZmQXJtb1pQSXVpZXBmdkF5WnJwdnc4NVlGY2dDVk1FbyIsInN1YmplY3QiOiJBQ01FLUFQSV9VQVRBTExfTU1HUFMiLCJjbmYiOnsieDV0IjoiOTlmN2Q3ZDQzOGMxZjViMWFiNzc4MDA1YmU3OGNkODY0NDU1YmYyYSJ9LCJleHAiOjE3NTczNTE2NzR9.c6y4ZcVxP8c8dZK8IwMPhVnKkrk7Kyf4h4cUo8GOPxrrR_AYq-59tcO9lzTkr4Kfa5-7q_HbxCV14wUnwz_N1JuehZ5N3wyuJ3wjc2jEfOnto8YwSEhY4qWbFm1TTdU8jqRZMp2KpvBpwa5BKNfjo3t0xAMqQ2til5-1JQHEZyint56OglKq13OzG265jW_RKOhmmmGuTlqDjiC4Mz2AQU-1VZY2i6LZTqKKTr7dvQVy5TKm9-akEkie8s-cXymaQ9Km54-PARdH8orezez8NuJc4LN550m46ulWJ2mNMDs4D9NnKQMr-stla2mQtovU__vNg3WDCvQ8Nrw1db5icA securitySchemes: client-id: type: apiKey name: X-IBM-Client-Id in: header x-key-type: client_id OAuth2: type: oauth2 flows: clientCredentials: tokenUrl: https://pf-fam.internal.citizensbank.com/as/token.oauth2 scopes: av:read: Access to read AV data x-ibm-oauth-provider: externalpingfederate x-ibm-configuration: cors: enabled: true type: rest phase: realized enforced: true testable: true application-authentication: certificate: false servers: - url: https://apis.citizensbank.com/v1/account-validation x-ibm-endpoints: - url: https://apis.citizensbank.com/v1/account-validation