---
title: "Initiate bank transfer"
method: POST
path: "/api/v1/bila/transfers/bank-account"
tags: ["Transfers"]
---

# Initiate bank transfer

`POST /api/v1/bila/transfers/bank-account`

## Request

- Base URL: `https://api.usebila.com`
- URL: `https://api.usebila.com/api/v1/bila/transfers/bank-account`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/bilasdk/apis/bila-payment-gateway-api/docs/api/v1/bila/transfers/bank-account/post.ts> (a function with typed inputs; its response is checked against the schema)

Initiate a transfer to a bank account. Creates a transaction record in your dashboard.

## Request body

- BankTransferDto
  - `accountId` string, uuid, required: Source account UUID
  - `amount` number, required: Transfer amount
  - `reference` string, required: Unique client reference (alphanumeric, dots, underscores, hyphens)
  - `narration` string: Transfer narration
  - `transferRecipientId` string, uuid: Transfer recipient UUID (use this OR accountNumber+bankId)
  - `accountNumber` string: Bank account number (required if no transferRecipientId)
  - `bankId` string: Bank ID (required if no transferRecipientId)
  - `country` 'zm' | 'ng': Country code
  - `walletId` string: Source wallet ID to debit (optional, uses main wallet if not specified)
  - `recipientName` string: Recipient name for the transaction record

## Response `201`

Transfer initiated successfully

- object
  - `status` boolean, required: Request success status
  - `message` string, required: Response message
  - `data` TransferResponseDto
    - `id` string, required: Transfer ID
    - `reference` string, required: Client reference
    - `type` 'bank-account' | 'mobile-money', required: Transfer type
    - `status` 'pending' | 'successful' | 'failed', required: Transfer status
    - `amount` number, required: Transfer amount
    - `currency` string, required: Currency code
    - `narration` string: Transfer narration
    - `recipient` TransferRecipientDto, required
      - `accountNumber` string: Bank account number (bank-account only)
      - `accountName` string, required: Account holder / recipient name
      - `bankName` string: Bank name (bank-account only)
      - `phone` string: Phone number (mobile-money only)
      - `operator` string: Mobile money operator (mobile-money only)
    - `createdAt` string, date-time, required: Creation timestamp (from Payment)
    - `completedAt` string, date-time: Completion timestamp (from Payment.processedAt)

## Other responses

- `400`: Invalid transfer details

## Changes

- **2026-10-16** `781041632c91`: 1 info
  - added the new `ng` enum value to the request property `country`
- **2026-06-05** `60e9d9bed8eb`: 1 breaking
  - removed the enum value `ng` of the request property `country`

[Operation history](https://skmtc.dev/bilasdk/apis/bila-payment-gateway-api/changes/api/v1/bila/transfers/bank-account/post.md)

---

[API](https://skmtc.dev/bilasdk/apis/bila-payment-gateway-api.md) - [All operations](https://skmtc.dev/bilasdk/apis/bila-payment-gateway-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bilasdk/apis/bila-payment-gateway-api/revisions/781041632c91?raw)
