# IMT Transfer

{% hint style="info" %}
Note: You require whitelisting to use this API. It's linked to your merchant account and does not require O**TP confirmation**.
{% endhint %}

## Initiate IMT Transfer

<mark style="color:green;">`POST`</mark> `/trans/applyForImtTransfer`

< This is to be used specifically for sending remittances to M-PESA wallets>

<table><thead><tr><th width="198.39947509765625">Fields</th><th width="82.39990234375">Type</th><th width="329.9998779296875">Description</th><th>Required</th></tr></thead><tbody><tr><td><code>orgTxId</code><br></td><td>String</td><td>Unique transaction ID generated by the partner’s system for tracking purposes.<br></td><td>Mandatory<br></td></tr><tr><td><code>payerAccountId</code></td><td>String</td><td>Identifier of the account to be debited for the transaction.</td><td>Mandatory</td></tr><tr><td><code>ImtSenderName</code></td><td>String<br></td><td><p>Full legal name of the ultimate sender (person initiating the remittance). </p><p>i.e., "Paul Kamau Kabuu". Ensure this format is followed - otherwise the transaction fails.</p></td><td>Mandatory</td></tr><tr><td><code>imtSenderPhoneNumber</code></td><td>String</td><td>Phone number of the ultimate sender, including country code.</td><td>Mandatory</td></tr><tr><td><code>imtSenderServiceProvider</code></td><td>String</td><td>Mobile network or service provider associated with the sender’s phone number.</td><td>Mandatory</td></tr><tr><td><code>imtSenderNationality</code></td><td>String</td><td>Nationality of the sender, represented in ISO 3166 Alpha-3 country code format (e.g., KEN for Kenya).<br></td><td>Mandatory</td></tr><tr><td><code>imtSenderIdType</code></td><td>String</td><td><p>Type of identification document used by the sender. Accepted values: </p><p></p><p>Passport</p><p>National ID</p><p>Driver’s License</p><p>Diplomatic Passport</p><p></p><p>Defaults to <code>NULL</code> if not provided.</p></td><td>Optional</td></tr><tr><td><code>imtSenderIdNumber</code></td><td>String</td><td>Identification document number matching the <code>senderIdType</code>. Defaults to <code>NULL</code> if not provided.</td><td>Optional<br></td></tr><tr><td><code>imtSenderBirthdate</code></td><td>String</td><td>Date of birth of the sender in <code>yyyyMMdd</code> format. Defaults to <code>NULL</code> if not provided.</td><td>Optional<br></td></tr><tr><td><code>imtFundsOriginCountryCode</code><br></td><td>String</td><td>Country from which the funds are being remitted, in ISO 3166 Alpha-3 format.<br></td><td>Mandatory</td></tr><tr><td><code>payeeAccountId</code></td><td>String</td><td>Recipient’s M-PESA wallet number where the funds will be credited.</td><td>Mandatory</td></tr><tr><td><code>payeeAccountName</code></td><td>String</td><td>Full legal name of the recipient as registered on M-PESA</td><td>Mandatory</td></tr><tr><td><code>purpose</code></td><td>String</td><td>Reason or purpose for the remittance (e.g., family support, business payment).</td><td>Mandatory</td></tr><tr><td><code>imtForeignCurrency</code></td><td>String</td><td>Details of the transaction: original currency, currency code, e.g., USD</td><td>Mandatory<br></td></tr><tr><td><code>imtConversionRate</code></td><td>String</td><td>Details of the transaction: original conversion rate</td><td>Mandatory</td></tr><tr><td><code>imtOriginalAmount</code></td><td>String</td><td>Details of the transaction: original amount,</td><td>Mandatory</td></tr><tr><td><code>amount</code></td><td>String</td><td>Transaction amount to be debited from the payer account and sent to the beneficiary.</td><td>Mandatory</td></tr><tr><td><code>currency</code></td><td>String</td><td>Currency code of the transaction. Only <code>KES</code> is supported.</td><td>Mandatory</td></tr><tr><td><code>remark</code></td><td>String</td><td>Additional transaction note or reference. Must be at least 2 characters long.</td><td>Mandatory</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="00000" %}

```json
{
  "txId": "", //unique, choice-generated transaction-id string
}
```

{% endtab %}
{% endtabs %}

## Query IMT transfer

<mark style="color:green;">`POST`</mark> `/trans/getImtTransferResult`

\<This is the API used by remittance players to send money to safaricom wallets.>

<table><thead><tr><th width="145.5999755859375">Field </th><th width="123.4000244140625">Data Type</th><th width="354.199951171875">Description</th><th>Required</th></tr></thead><tbody><tr><td>orgTxId</td><td>string</td><td>Unique transaction ID generated by the partner’s system for tracking purposes.</td><td>Optional</td></tr><tr><td>txId</td><td>string</td><td>Unique transaction ID generated by the choice's system for tracking purposes.</td><td>Optional</td></tr></tbody></table>

**Response**

{% tabs %}
{% tab title="00000" %}

```json
{
  "txId": "", //string, unique partner-generated transaction id
  "orgTxId": "", //string, unique partner-generated transaction id
  "payerAccountId": "", //string, identifier of account to be debited
  "payerAccountName": "", //string, registered name of account to be debited
  "beneficiaryAccountId": "", //string, recipient’s m-pesa wallet number where funds will be credited
  "beneficiaryAccountName": "", //string, full legal name of the recipient as registered on m-pesa
  "amount": "", //string, transaction amount to be debited
  "feeAmount": "", //string, transaction fee amount to be debited
  "externalTxId": "", //string, unique mpesa-generated transaction-id
  "txStatus": "", //int, transactions status, refer to txstatus definition
  "errorCode": "", //string, returned in case of unsuccessful transactions
  "errorMessage": "", //string, offers more context on failure result
  "reversalTxId": "", //string, refund transaction id, in case of reversal request
  "completedTime": "", //string, time of transaction completion
}
```

{% endtab %}
{% endtabs %}

```json
```


---

# 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/merchant/imt-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.
