---
title: "Perform wallet transfer from a sub account"
method: POST
path: "/v2/transfers/wallet/{subAccountId}"
tags: ["Transfers"]
---

# Perform wallet transfer from a sub account

`POST /v2/transfers/wallet/{subAccountId}`

You can use this endpoint to perform a wallet transfer from a sub account

## Path parameters

- `subAccountId` string, required

## Headers

- `accountId` string, uuid, required

## Request body

- WalletTransferRequest — A structure representing an object required to post a wallet transfer.
  - `amount` number, double, required — The amount to be transferred.
  - `receiverAccountId` string, uuid, required — The receiver's accountId.
  - `merchantTxRef` string, required — Unique reference used to track a transaction from an external process. This is an idempotency key and must be unique per transaction.
  - `narration` string — The payment narration

## Response `200`

OK - your request was successful.

- object
  - `code` string, required — Response Code
  - `description` string, required — Response description
  - `data` WalletTransferResult, required — Transfer data
    - `amount` number, double, required — Transfer amount
    - `meta` WalletTransferMetaObject, required — Transaction meta data
      - `merchantTxRef` string — Merchant transaction reference
      - `api_client_id` string — API client ID
      - `api_account_id` string — API account ID
      - `rrn` string — RRN (Retrieval Reference Number)
    - `fee` number, double, required — Transfer fee
    - `timeCreated` string, date-time, required — Creation timestamp
    - `id` string, required — Transfer ID
    - `type` 'withdrawal' | 'purchase' | 'transfer' | 'p2p' | 'online_checkout' | 'qrt_credit' | 'qrt_debit', required — Transaction type
    - `status` 'SUCCESS' | 'PENDING_BILLING' | 'REFUND' | 'CANCELLED' | 'PAYMENT_FAILED' | 'REVERSED_BY_VENDOR', required — Transaction status

## Other responses

- `201` — Transfer is being processed — the final status will be delivered via webhook. Mark the transaction as pending and do not retry with a new reference.
- `400` — The request body sent by merchant did not pass the validation checks
- `401` — The access_token provided to access the resource is missing or invalid.
- `403` — The client does not have the permissions to access this resource
- `404` — The record that the client is trying to access does not exist.
- `429` — The client has maxed out the number of calls within a time period on this resource.
- `500` — Downstream system error.

---

[API](https://skmtc.net/nomba/apis/vendor-api.md) · [All operations](https://skmtc.net/nomba/apis/vendor-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nomba/vendor-api/versions/41727ac9be5f/schema)
