> For the complete documentation index, see [llms.txt](https://padiwise.gitbook.io/padiwise/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://padiwise.gitbook.io/padiwise/disbursement/single-transfer.md).

# Single Transfer

{% hint style="warning" %}
**Before you begin!**

To send money on Padiwise, you need API keys to authenticate your transfers. You can find your keys on the Padiwise Dashboard under [Settings → API Keys & Webhooks](https://padiwise.com/login).
{% endhint %}

### Create a transfer recipient <a href="#create-a-transfer-recipient" id="create-a-transfer-recipient"></a>

A transfer recipient is a beneficiary on your integration that you can send money to. Before sending money to your customer, you need to collect their details first, then use their details to [create a transfer recipient](#create-a-transfer-recipient). We support different recipients in different countries:

The `recipient_code` from the data object is the unique identifier for a user and would be used to make transfers to that customer This code should be saved with the customer's records in your database.

### Initiate a Transfer

When you send this request, if there are no errors, the response comes back with a pending status, while the transfer is being processed.

&#x20;<mark style="color:green;">`POST`</mark>  `{{ BASE }}/transfer`&#x20;

```
--header 'Accept: application/json'
--header 'Authorization: Bearer {{  access_token }}'
```

Below are the request body parameters :tada:

**Request Body**

| Name             | Type   | Description                                                                   |
| ---------------- | ------ | ----------------------------------------------------------------------------- |
| recipient\_code  | String | [Code](#create-a-transfer-recipient) for transfer recipient                   |
| account\_name    | String | Account Name on bank                                                          |
| account\_number  | Number | Nigerian Uniform Bank Account Number. It represents bank accounts in Nigeria. |
| bank\_name       | String | Bank Name                                                                     |
| bank\_code       | String | Unique Bank Code                                                              |
| amount           | Number | Amount to transfer                                                            |
| transaction\_pin | String | Your Padiwise account pin                                                     |

Response Body

```
{
    "statuscode": 200,
    "status": true,
    "message": "Transfer initiated successfully",
    "event_type": "transfer_money",
    "reference": "CUS_7ieiebfwy09k6qo",
    "data": {
        "amount": 2000,
        "charges": 12,
        "account_name": "Oluwaseun Olajuwon",
        "account_number": 1234567890,
        "bank_name": Wema Bank
        }
}
```

{% hint style="warning" %}
**Retrying a transfer**

If there is an error with the transfer request, **kindly retry the transaction with the same `reference` in order to avoid double crediting**. If a new `reference` is used, the transfer would be treated as a new request.
{% endhint %}

Test transfers always return success, because there is no processing involved. The live transfers processing usually take between a few seconds and a few minutes. When it's done processing, a notification is sent to your webhook URL.

Once a transfer is processed, we send the final status of the transfer as a `POST` request to your webhook URL.

| Event               | Description                                                                                       |
| ------------------- | ------------------------------------------------------------------------------------------------- |
| `transfer.success`  | This is sent when the transfer is successful                                                      |
| `transfer.failed`   | This is sent when the transfer fails                                                              |
| `transfer.reversed` | This is sent when we refund a previously debited amount for a transfer that couldn’t be completed |

The response for a transfer also contains a **unique transfer code** to identify this transfer. You can use this code to call the Fetch Transfer<sup>API</sup> endpoint to get the status and details of the transfer.
