> ## 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.

# Add a new bank account for a user ( SUNSETTING )

> **This Endpoint is Sunsetting and you should use the stable endpoint. Sunsetting APIs that are still supported but scheduled for deprecation.**



## OpenAPI

````yaml https://api.grailpay.com/docs?api-docs.json post /3p/api/v2/users/{uuid}/bank-accounts
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/users/{uuid}/bank-accounts:
    post:
      tags:
        - Bank Accounts
        - Sunsetting
      summary: Add a new bank account for a user ( SUNSETTING )
      description: >-
        **This Endpoint is Sunsetting and you should use the stable endpoint.
        Sunsetting APIs that are still supported but scheduled for
        deprecation.**
      operationId: 3c7f3c98a31812120bf7b1f038974204
      parameters:
        - name: uuid
          in: path
          description: UUID of the user
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2AddBankAccountRequest'
      responses:
        '200':
          description: Bank account added successfully
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Bank account added successfully
                  data:
                    $ref: '#/components/schemas/V2BankAccountResponse'
                  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'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: User delete in progress
                  data:
                    type: string
                    example: null
                  errors:
                    type: string
                    example: null
                  error_code:
                    type: string
                    example: null
                type: object
        '404':
          description: User not found
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: User not found
                  data:
                    type: string
                    example: null
                  statusCode:
                    type: integer
                    example: 404
                  errorCode:
                    properties:
                      type:
                        type: string
                        example: client_error
                      subType:
                        type: string
                        example: uuid_not_found
                    type: object
                type: object
      security:
        - ApiToken: []
components:
  schemas:
    V2AddBankAccountRequest:
      properties:
        plaid:
          properties:
            access_token:
              type: string
              example: access-token
            account_id:
              type: string
              example: account-id
          type: object
        custom:
          properties:
            account_number:
              type: string
              example: '12345678901234567'
            routing_number:
              type: integer
              example: 123456789
            account_name:
              type: string
              example: John Doe
            account_type:
              type: string
              example: checking
            validate_account_routing:
              type: boolean
              example: true
          type: object
        account_details:
          type: object
        billing_merchant_user_uuid:
          type: string
          example: a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6
        billing_processor_mid:
          type: string
          example: '1213121313'
      type: object
    V2BankAccountResponse:
      properties:
        uuid:
          type: string
          example: 12345678-1234-1234-1234-123456789012
        user_uuid:
          type: string
          example: 12345678-1234-1234-1234-123456789012
        account_number:
          type: string
          example: '12345678901234567'
        routing_number:
          type: string
          example: '123456789'
        account_name:
          type: string
          example: John Doe
        account_type:
          type: string
          example: checking
        aggregator_type:
          type: string
          example: manual
        created_at:
          type: string
          example: '2021-09-01 00:00:00'
        is_default:
          type: boolean
          example: true
      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

````