# General Transfer

## Scope

This applies to scenarios where end users are making a transfer to:

1. M-PESA Mobile Money
2. AIRTEL Mobile Money
3. Choice Bank Account
4. Pesalink

{% hint style="info" %}
Pesalink Transfer has following limitations:

1. Dometic banks only
2. KES currency only
3. Maximum KES 999,999 per transaction
4. Some counter banks restrict Pesalink service to business hours

<mark style="background-color:blue;">**Recommendations for Alternative Use Cases**</mark>

1. Large/Urgent Transfers → Prioritize RTGS for immediate, high-value settlements.
2. ​Cross-Border Payments → Utilize SWIFT or mobile money corridors (e.g., M-PESA Global).
3. ​After-Hours Transactions → Leverage M-PESA for 24/7 liquidity.
4. ​Bulk Corporate Payments → Integrate with bank APIs or dedicated bulk payment platforms.
   {% endhint %}

## Steps

{% stepper %}
{% step %}

### Initiate Transfer Request

Call endpoint `/trans/v2/applyForTransfer` to initiate a transfer request

Status: `1-SUBMITTED`
{% endstep %}

{% step %}

### Confirm OTP

Call endpoint `/common/sendOtp` to request for OTP, filling the value of `txId` to `businessId` parameter. Call endpoint `/common/confirmOperation` to confirm the OTP code received.

Status: `2-PROCESSING`

{% hint style="info" %}
The endpoint `/common/sendOtp` can also be used to resend OTP.
{% endhint %}
{% endstep %}

{% step %}

### Transaction Processing

Status: `2-PROCESSING`&#x20;
{% endstep %}

{% step %}

### Get Onboarding Result

* Get it from `0002 - Transaction Result Notification`
* Query transaction status by calling the endpoint `/query/getTransResult`
  {% endstep %}
  {% endstepper %}

## Status

<figure><img src="/files/rfGTu4e5N3lHb1pI1VUu" alt=""><figcaption></figcaption></figure>

## Transaction Types

<table><thead><tr><th width="218">Transaction Type (txType)</th><th>Description</th></tr></thead><tbody><tr><td>TTID0001</td><td>Withdraw to M-PESA</td></tr><tr><td>TTID0002</td><td>Transfer Out</td></tr><tr><td>TTID0003</td><td>Transfer In</td></tr><tr><td>TTID0004</td><td>Interest Income</td></tr><tr><td>TTID0005</td><td>M-PESA Paybill / Till</td></tr><tr><td>TTID0006</td><td>Utility Payment</td></tr><tr><td>TTID0007</td><td>Refund</td></tr><tr><td>TTID0008</td><td>FCY Deposit</td></tr><tr><td>TTID0009</td><td>FCY Transfer Out</td></tr><tr><td>TTID0010</td><td>FCY Exchange</td></tr><tr><td>TTID0011</td><td>Reversal</td></tr><tr><td>TTID0023</td><td>Cash Deposit</td></tr><tr><td>TTID0024</td><td>Cash Withdrawal</td></tr></tbody></table>

## Transaction Status

<table><thead><tr><th width="217.199951171875">Transaction Status</th><th>Definition</th></tr></thead><tbody><tr><td>-1</td><td>Time-out  (Transaction initiated but failed to validate in time)</td></tr><tr><td>1</td><td>Pending</td></tr><tr><td>2</td><td>Processing</td></tr><tr><td>4</td><td>Failed</td></tr><tr><td>8</td><td>Success</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://choice-bank.gitbook.io/choice-bank/transfer/general-transfer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
