---
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`

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' — 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 recipient 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

---

[API](https://skmtc.net/bilasdk/apis/bila-payment-gateway-api.md) · [All operations](https://skmtc.net/bilasdk/apis/bila-payment-gateway-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bilasdk/bila-payment-gateway-api/revisions/1e6976632889/schema)
