# /service/account/verify

Verifies the validity and status of a bank account number.
## Purpose
Validates that a bank account is open, active, and in good standing before initiating a payment or transaction.
## When to use
- Before creating a transaction that involves a direct bank deposit
- To confirm the account details provided by a sender or beneficiary
- To reduce payment returns caused by invalid or closed accounts

## How it works
1. Validates the routing number structure (ABA checksum)
2. Verifies the account against the bank verification provider
3. Returns the verification result with risk assessment and bank details

## Authentication
Requires either `x-api-key` header OR `x-client-id` + `x-secret-key` headers.
## Notes
- The routing number must pass ABA checksum validation before the account is verified.
- Account types accepted: `C` (Checking), `S` (Savings).
- The response includes a risk level (LOW, MEDIUM, HIGH) to help determine next steps.

## Common errors
- `400` Missing required fields or invalid routing number
- `401` Invalid API key
- `500` Verification service temporarily unavailable

Endpoint: POST /service/account/verify
Version: 1.0.0

## Header parameters:

  - `x-api-key` (string)
    API key for authentication. Use this OR x-client-id/x-secret-key pair.

Error codes: type=400002, minLength=400003, maxLength=400004

  - `x-client-id` (string)
    Partner client identifier. Must be sent together with x-secret-key.

Error codes: type=400002, minLength=400003, maxLength=400004

  - `x-secret-key` (string)
    Partner secret key. Must be sent together with x-client-id.

Error codes: type=400002, minLength=400003, maxLength=400004

## Request fields (application/json):

  - `accountNumber` (string, required)
    The bank account number to verify.
Error codes: required=400001, type=400002, minLength=400003, maxLength=400004

  - `routingNumber` (string, required)
    The 9-digit ABA routing number of the financial institution.
Error codes: required=400001, type=400002, minLength=400003, maxLength=400004, pattern=400009

  - `accountType` (string, required)
    Type of bank account. C = Checking, S = Savings.
Error codes: required=400001, type=400002, minLength=400003, maxLength=400004, allowedValues=400010
    Enum: "C", "S"

## Response 200 fields (application/json):

  - `status` (string)
    Response status indicator.

  - `message` (string)
    Human-readable description of the result.

  - `data` (object)
    Account verification result data.

  - `data.verificationValue` (string)
    Human-readable name of the verification result (e.g., Pass, Declined, NoData).

  - `data.verificationRisk` (string)
    Risk level associated with the verification result: LOW, MEDIUM, or HIGH.

  - `data.verificationDescription` (string)
    Detailed explanation of the verification result and suggested action.

  - `data.bankName` (string)
    Name of the financial institution associated with the routing number.

## Response 400 fields (application/json):

  - `errors` (array)
    List of validation errorsError catalog for 400 (click to expand)CodeDescription400001Required field is missing (accountNumber, routingNumber, or accountType).400009Routing number failed ABA checksum validation.400010Account type value is not in the allowed list.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

  - `errors.details` (string)

## Response 401 fields (application/json):

  - `errors` (array)
    List of authentication errorsError catalog for 401 (click to expand)CodeDescription401000Invalid API key.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

## Response 500 fields (application/json):

  - `errors` (array)
    List of server errorsError catalog for 500 (click to expand)CodeDescription500000Internal server error.500002Account verification service unavailable.

  - `errors.status` (string)

  - `errors.code` (number)

  - `errors.message` (string)

  - `errors.details` (string)

