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

# Bank Withdrawal

> Send money from integrator wallet to customer bank account. Supports Kenya and SA.

Send money from integrator wallet to customer bank account. Supports Kenya and SA.


## OpenAPI

````yaml POST /api/v3/withdraw/bank
openapi: 3.0.0
info:
  title: KOTANI PAY API PLATFORM
  description: ''
  version: '3.0'
  contact: {}
servers:
  - url: https://preview.kotanipay.com
security: []
tags: []
paths:
  /api/v3/withdraw/bank:
    post:
      tags:
        - WITHDRAW
      summary: Withdraw Fiat to Bank Account
      description: >-
        Send money from integrator wallet to customer bank account. Supports
        Kenya and SA.
      operationId: WithdrawController_bank_api/v3
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBankWithdrawDto'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Bank withdrawal has been successfully created.
                  data:
                    $ref: '#/components/schemas/WithdrawResponseDto'
                    type: object
        '400':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Bad Request
                  data:
                    type: object
                    example: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Invalid API Key
                  data:
                    type: object
                    example: {}
      security:
        - JWT: []
components:
  schemas:
    CreateBankWithdrawDto:
      type: object
      properties:
        customer_key:
          type: string
          example: customer-key-123
          description: Customer key
        amount:
          type: number
          description: amount to withdraw
          example: 10
        walletId:
          type: string
          description: wallet id
          example: 5f9b2c7b9c9d6b0017b4e6b1
        callbackUrl:
          type: string
          description: callback url
          example: https://example.com
        referenceId:
          type: string
          description: reference id
          example: 5f9b2c7b9c9d6b0017b4e6b1
        currency:
          type: string
          description: >-
            Override transaction currency (e.g. USD for USD mobile money in
            Congo/Zambia). When provided and matches the wallet currency,
            phone-country currency validation is skipped.
          example: USD
        bankDetails:
          $ref: '#/components/schemas/WithdrawBankDto'
      required:
        - customer_key
        - amount
        - walletId
        - bankDetails
    WithdrawResponseDto:
      type: object
      properties:
        id:
          type: string
        message:
          type: string
        referenceId:
          type: string
        referenceNumber:
          type: number
      required:
        - id
        - message
        - referenceId
        - referenceNumber
    WithdrawBankDto:
      type: object
      properties:
        account_bank:
          description: Bank name
          allOf:
            - $ref: '#/components/schemas/BANK'
        account_name:
          type: string
          description: Account holder name
        account_number:
          type: string
          description: Bank account number
        branch_code:
          type: string
          description: Bank branch code (required for some Kenyan banks)
          example: '001'
        swift_code:
          type: string
          description: SWIFT/BIC code (for international transfers)
          example: KCBLKENX
        phone_number:
          type: string
          description: Phone number for SMS notification
          example: '+254712345678'
      required:
        - account_bank
        - account_name
        - account_number
    BANK:
      type: string
      enum:
        - ABSA
        - Access
        - Afribank
        - AfricanBank
        - Bidvest
        - BNY
        - Capitec
        - DiscoveryBank
        - Firstrand
        - FNB
        - Grindrod
        - HSBC
        - Imperial
        - Investec
        - Merchantile
        - Nedbank
        - OldMutualMoney
        - Sasfin
        - Standard
        - Tyme
        - Ubank
        - windhoek
        - KCB
        - Equity Bank
        - Co-operative Bank
        - ABSA Kenya
        - NCBA Bank
        - Stanbic Bank Kenya
        - Standard Chartered Kenya
        - Diamond Trust Bank
        - Family Bank
        - Sidian Bank
        - Barclays Bank Kenya
        - Prime Bank
        - Gulf African Bank
        - Ecobank Kenya
        - Choice Bank
        - Citibank Kenya
        - I&M Bank
        - Bank of Africa Kenya
        - Middle East Bank Kenya
        - Consolidated Bank
        - Victoria Commercial Bank
        - Guardian Bank
        - Habib Bank
        - UBA Kenya
        - Kingdom Bank
      description: Bank name
  securitySchemes:
    JWT:
      scheme: bearer
      bearerFormat: JWT
      type: http

````