> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ach.netevia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Validate bank account and routing number ( STABLE ) 

> GrailPay provides a standalone Account and Routing Number Validation API, allowing businesses to verify bank account details before onboarding an entity or processing transactions. Using this validation helps prevent failed transactions, failed payouts, and other payment issues by ensuring that the account and routing numbers provided are legitimate.



## OpenAPI

````yaml https://api.grailpay.com/docs?api-docs.json post /3p/api/v2/bank-accounts/validate
openapi: 3.0.0
info:
  title: GrailPay ACH API
  description: API Documentation for moving funds via ACH using the GrailPay ACH API
  version: 2025.12.19.2
servers:
  - url: https://api.grailpay.com
    description: Production environment
  - url: https://api-sandbox.grailpay.com
    description: Sandbox environment
security: []
tags:
  - name: Users
    description: >-
      API Endpoints used for the onboarding and managing People, Businesses, and
      Merchants.
  - name: Transactions
    description: API Endpoints used for creating and managing transactions.
  - name: Payouts
    description: API Endpoints used for fetching payout information.
  - name: Refunds
    description: API Endpoints used for creating and retrieving refunds.
  - name: Bank Accounts
    description: API Endpoints used for adding and managing bank accounts.
  - name: Webhooks
    description: API Endpoints used for registering and de-registering webhooks.
  - name: Billing
    description: API Endpoints used for retrieving billing information.
  - name: Stable
    description: Stable, up-to-date APIs that are recommended for current integration.
  - name: Sunsetting
    description: Sunsetting APIs that are still supported but scheduled for deprecation.
  - name: Deprecated
    description: Deprecated APIs that are no longer supported and should be removed.
  - name: SUNSETTING
    description: SUNSETTING
paths:
  /3p/api/v2/bank-accounts/validate:
    post:
      tags:
        - Bank Accounts
        - Stable
      summary: 'Validate bank account and routing number ( STABLE ) '
      description: >-
        GrailPay provides a standalone Account and Routing Number Validation
        API, allowing businesses to verify bank account details before
        onboarding an entity or processing transactions. Using this validation
        helps prevent failed transactions, failed payouts, and other payment
        issues by ensuring that the account and routing numbers provided are
        legitimate.
      operationId: 90011ab04f4c7e2d262cd935907844be
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreAccountValidationRequest'
      responses:
        '200':
          description: Successful Validation
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Validation processed successfully
                  data:
                    properties:
                      uuid:
                        type: string
                      account_number:
                        type: string
                      routing_number:
                        type: string
                      version:
                        type: string
                      validity:
                        type: boolean
                      validated_at:
                        type: string
                        format: date-time
                      risk_score:
                        type: number
                        nullable: true
                      confidence_level:
                        type: string
                        nullable: true
                    type: object
                  errors:
                    type: string
                    example: null
                  error_code:
                    type: string
                    example: null
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Error401Unauthorized'
                  - $ref: '#/components/schemas/Error401InvalidTokenStructure'
                  - $ref: '#/components/schemas/Error401InvalidTokenData'
      security:
        - ApiToken: []
components:
  schemas:
    StoreAccountValidationRequest:
      required:
        - account_number
        - routing_number
        - version
      properties:
        account_number:
          type: string
          example: '1234567890123456'
        routing_number:
          type: string
          example: '123456789'
        version:
          type: integer
          enum:
            - '1'
            - '2'
        billing_merchant_user_uuid:
          description: >-
            (optional) The UUID of the merchant user to be billed for this
            account validation.
          type: string
          format: uuid
          example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        billing_processor_mid:
          description: >-
            (optional) The processor MID to be billed for this account
            validation.
          type: string
          example: '123456789'
      type: object
    Error401Unauthorized:
      properties:
        status:
          type: boolean
          example: false
        message:
          type: string
          example: Invalid Token
        data:
          type: string
          example: null
        errors:
          type: string
          example: null
        error_code:
          type: string
          example: null
      type: object
    Error401InvalidTokenStructure:
      properties:
        status:
          type: boolean
          example: false
        message:
          type: string
          example: >-
            Invalid token format. The token should be in the following format:
            ID|TOKEN_VALUE. Example: 12345|abcdefg
        data:
          type: string
          example: null
        errors:
          type: string
          example: null
        error_code:
          type: string
          example: null
      type: object
    Error401InvalidTokenData:
      properties:
        status:
          type: boolean
          example: false
        message:
          type: string
          example: >-
            Invalid token format. The ID in the token must be an integer.
            Example: 12345|abcdefg
        data:
          type: string
          example: null
        errors:
          type: string
          example: null
        error_code:
          type: string
          example: null
      type: object
  securitySchemes:
    ApiToken:
      type: http
      description: >-
        Token-based authentication using Authorization: Bearer <YOUR_API_KEY>
        provided by the GrailPay Support Team.
      bearerFormat: Token
      scheme: bearer

````