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

# Initiate mobile money transfer

`POST /api/v1/bila/transfers/mobile-money`

## Request

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

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

## Request body

- MobileMoneyTransferDto
  - `amount` number, required: Transfer amount
  - `reference` string, required: Unique client reference
  - `phone` string, required: Recipient phone number
  - `operator` 'airtel' | 'mtn' | 'zamtel' | 'vodacom', required: Mobile money operator
  - `country` 'zm' | 'ng', required: Country code
  - `narration` string: Transfer narration
  - `walletId` string, uuid: Source wallet ID to debit (defaults to main wallet if omitted)
  - `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`: 2 info
  - added the new `ng` enum value to the request property `country`
  - added the new `vodacom` enum value to the request property `operator`
- **2026-06-05** `60e9d9bed8eb`: 2 breaking
  - removed the enum value `ng` of the request property `country`
  - removed the enum value `vodacom` of the request property `operator`

[Operation history](https://skmtc.dev/bilasdk/apis/bila-payment-gateway-api/changes/api/v1/bila/transfers/mobile-money/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)
