# Bulk Transfer

## Scope

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

1. M-PESA Mobile Money
2. AIRTEL Mobile Money
3. Choice Bank Account
4. Pesalink&#x20;
5. M-PESA Paybill
6. M-PESA Pay Till/BuyGoods

{% hint style="warning" %}
A maximum of 500 transactions per request to be processed
{% endhint %}

## Steps

{% stepper %}
{% step %}

### Initiate Bulk Transfer Request

Call endpoint `/trans/v2/generalBulkTransfer` to initiate a transfer request
{% endstep %}

{% step %}

### Confirm OTP

Call endpoint `/common/sendOtp` (which can also be used to resend if first delivery fails) to request for OTP, filling the value of `bulkPaymentOrderId` to `businessId` parameter. Call endpoint `/common/confirmOperation` to confirm the OTP code received.

{% hint style="info" %}
NOTE: Once a bulk transfer has been initiated, it must be verified via OTP within 30 minutes otherwise it will time-out and fail.&#x20;
{% endhint %}
{% endstep %}

{% step %}

### Transaction Processing

{% endstep %}

{% step %}

### Get Onboarding Result

* Get it from `0008 - Bulk Transfer Result Notification`
* Query transaction status by calling the endpoint `/trans/queryBatchTransactionResult`
  {% endstep %}
  {% endstepper %}


---

# 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/bulk-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.
