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

# Create VBA

> Create a Virtual Bank Account for the authenticated merchant.



## OpenAPI

````yaml POST /pg/vba/
openapi: 3.0.0
info:
  title: Eximpe Payment Gateway API
  description: >-
    API for payment processing and order management through Eximpe payment
    gateway. This specification includes v1, v2, and v3 API versions.
  license:
    name: Proprietary
  version: 2.0.0
servers:
  - url: https://api-pacb-uat.eximpe.com
    description: Payment Gateway Sandbox URL
security:
  - clientAuth: []
    clientSecretAuth: []
    apiVersionHeader: []
tags:
  - name: Card Tokens
  - name: Merchants
  - name: Orders
  - name: Payment Links
  - name: Payments
  - name: Refunds
  - name: Settlements
  - name: Subscriptions
paths:
  /pg/vba/:
    post:
      tags:
        - Virtual Bank Accounts
      summary: Create VBA
      description: >-
        Create a Virtual Bank Account for the authenticated merchant. VBA
        details (email, name, phone, virtual_account_id) are derived from the
        merchant account. From v2.0.0 onwards, a merchant can have multiple
        ACTIVE VBAs simultaneously. The request body is optional — both
        `remitter_lock_details` and `amount_lock_details` are independently
        optional and can be omitted, sent individually, or sent together. When
        omitted, the corresponding field is returned as `null` and the VBA
        accepts transfers from any remitter / for any amount.
      operationId: v2_post_pg_vba_
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                remitter_lock_details:
                  type: object
                  nullable: true
                  description: >-
                    Optional. Omit to allow transfers from any remitter. When
                    supplied, restricts the VBA to accept transfers only from
                    the listed remitter accounts. Persisted on the VBA and
                    echoed back on every read.
                  properties:
                    allowed_remitters:
                      type: array
                      items:
                        type: object
                        required:
                          - account_number
                          - ifsc
                        properties:
                          account_number:
                            type: string
                            minLength: 9
                            maxLength: 30
                            description: Remitter bank account number (9–30 chars).
                            example: '26291800001191'
                          ifsc:
                            type: string
                            description: Remitter bank IFSC.
                            example: YESB0000262
                amount_lock_details:
                  type: object
                  nullable: true
                  description: >-
                    Optional. Omit to allow transfers of any amount. When
                    supplied, restricts the VBA to accept transfers within the
                    given range.
                  properties:
                    min_amount:
                      type: number
                      description: Minimum allowed transfer amount.
                      example: 1000
                    max_amount:
                      type: number
                      description: Maximum allowed transfer amount.
                      example: 5000
            example:
              remitter_lock_details:
                allowed_remitters:
                  - account_number: '26291800001191'
                    ifsc: YESB0000262
              amount_lock_details:
                min_amount: 1000
                max_amount: 5000
      responses:
        '200':
          description: VBA created successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: VBA created successfully
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        virtual_account_id:
                          type: string
                          example: '24586202'
                        vba_account_name:
                          type: string
                          example: Acme Imports
                        vba_bank_code:
                          type: string
                          example: UTIB
                        vba_account_number:
                          type: string
                          example: '9461257424586202'
                        vba_ifsc:
                          type: string
                          example: UTIB0CCH274
                        vba_status:
                          type: string
                          example: ACTIVE
                        remitter_lock_details:
                          type: object
                          nullable: true
                          description: >-
                            The remitter lock applied at creation time,
                            persisted from the gateway response. `null` when no
                            lock was supplied.
                          properties:
                            allowed_remitters:
                              type: array
                              items:
                                type: object
                                properties:
                                  account_number:
                                    type: string
                                    example: '1234567891'
                                  ifsc:
                                    type: string
                                    example: SBIN0005943
                        amount_lock_details:
                          type: object
                          nullable: true
                          description: >-
                            The amount lock applied at creation time. `null`
                            when no lock was supplied.
                          properties:
                            min_amount:
                              type: number
                              example: 100
                            max_amount:
                              type: number
                              example: 10000
              example:
                success: true
                message: VBA created successfully
                data:
                  - virtual_account_id: '24586202'
                    vba_account_name: Acme Imports
                    vba_bank_code: UTIB
                    vba_account_number: '9461257424586202'
                    vba_ifsc: UTIB0CCH274
                    vba_status: ACTIVE
                    remitter_lock_details:
                      allowed_remitters:
                        - account_number: '1234567891'
                          ifsc: SBIN0005943
                    amount_lock_details:
                      min_amount: 100
                      max_amount: 10000
        '400':
          description: >-
            Validation error — invalid lock details, merchant account not
            identified, email required, or notification group error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1_ErrorResponse'
        '403':
          description: VBA feature not enabled for merchant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1_ErrorResponse'
        '500':
          description: Failed to generate unique virtual_account_id or configuration error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1_ErrorResponse'
        '502':
          description: Payment gateway API error (PAYMENT_GATEWAY_API_ERROR)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v1_ErrorResponse'
      security:
        - clientAuth: []
          clientSecretAuth: []
          merchantAuth: []
          apiVersionHeader: []
components:
  schemas:
    v1_ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          enum:
            - false
          description: >-
            Indicates if the request was successful. Always false for error
            responses.
        error:
          $ref: '#/components/schemas/v1_ErrorDetails'
    v1_ErrorDetails:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Error code (e.g., ERR_ORDER_002)
        message:
          type: string
          description: Error message
        details:
          type: object
          description: Detailed validation error information with field-specific errors
          additionalProperties:
            type: string
            description: Error message for the specific field
  securitySchemes:
    clientAuth:
      type: apiKey
      name: X-Client-ID
      in: header
      description: >-
        **Client Application ID** - Your unique application identifier used to
        authenticate API requests. You can find your Client ID in the Developer
        Settings section of the merchant dashboard.
      x-displayName: Client ID
      x-example: your-client-id
    clientSecretAuth:
      type: apiKey
      name: X-Client-Secret
      in: header
      description: >-
        **Client Secret Key** - Your secret key used alongside the Client ID for
        secure authentication. Keep this confidential and never expose it in
        client-side code. Available in the Developer Settings section of the
        merchant dashboard.
      x-displayName: Client Secret
      x-example: your-client-secret
    apiVersionHeader:
      type: apiKey
      name: X-API-Version
      in: header
      description: >-
        **API Version** - Specifies which version of the API to use (e.g.,
        '1.X.X', '2.X.X', or '3.X.X'). This header allows you to control which
        API version your integration uses. Default version information is
        available in the Developer Settings.
      x-displayName: API Version
      x-example: 3.0.0
    merchantAuth:
      type: apiKey
      name: X-Merchant-ID
      in: header
      description: >-
        **Merchant Identifier** - The unique ID for the merchant account. This
        is required for PSP (Payment Service Provider) merchants who manage
        multiple merchant accounts. You can find merchant IDs in the Merchant
        Management section of the dashboard.
      x-displayName: Merchant ID
      x-example: your-merchant-id

````