# Wallet to Wallet Transfer

### Endpoint

```
POST /transaction/transfer-local
```

***

### Request

#### **Headers**

* **`Content-Type`**<mark style="color:red;">**\***</mark> — Must be `application/json`&#x20;
* **`x-account-id`**<mark style="color:red;">**\***</mark> — Your unique TemboPlus account identifier
* **`x-secret-key`**<mark style="color:red;">**\***</mark> — Your TemboPlus API secret key
* **`x-request-id`**<mark style="color:red;">**\***</mark> — Unique UUID per request for tracing

#### **Body Parameters**

* **`amount`**<mark style="color:red;">**\***</mark> *(number)* — Amount to transfer. Must be a positive integer.
* **`from`**<mark style="color:red;">**\***</mark> *(string)* — Account number of the source disbursement wallet.
* **`to`**<mark style="color:red;">**\***</mark> *(string)* — Account number of the destination disbursement wallet.
* **`description`**<mark style="color:red;">**\***</mark> *(string)* — A short description of the transfer. Appears in both wallet statements.

#### Example Request Payload

```json
{
    "amount": 50000,
    "from": "9000123456",
    "to": "8000654321",
    "description": "Move funds to payout wallet"
}
```

***

### Responses

<details>

<summary><code>200</code> OK</summary>

Transfer completed successfully.

#### Response Format

```json
{
    "transactionId": "hnZDA7QSQ8qS", // Unique identifier for this transfer, generated by TemboPlus
    "from": "9000123456",
    "to": "8000654321",
    "transactionDate": "2026-03-23T09:31:52+03:00",
    "narration": "Move funds to payout wallet", // Echo of your description
    "amount": 50000,
    "transactionRef": "HFsoXk2llnfE" // Reference generated by TemboPlus for this transfer
}
```

</details>

<details>

<summary><code>400</code> BAD REQUEST</summary>

Returned when the request payload is missing required fields or contains invalid data.

#### Response Format

```json
{
    "statusCode": 400,
    "reason": "VALIDATION_ERROR",
    "details": {
        "from": "\"from\" must be a string",
        "to": "\"to\" must be a string"
    }
}
```

*Fields inside `details` are optional and vary depending on the specific validation failure.*

***

**Common Validation Errors to Avoid**

* Ensure all **required fields** are included in the request body in the right format.
* **`x-request-id`** must be included in the request headers.

</details>

<details>

<summary><code>401</code> UNAUTHORIZED</summary>

Returned when authentication headers are missing or invalid.

#### Response Format:

```json
{
    "statusCode": 401,
    "reason": "INVALID_CREDENTIALS",
    "details": {}
}
```

</details>

<details>

<summary><code>404</code> NOT FOUND</summary>

Returned when the source or destination wallet account number does not exist or is not accessible with your credentials.

#### Response Format

```json
{
    "statusCode": 404,
    "reason": "NOT_FOUND",
    "details": {}
}
```

***

**Common Validation Errors to Avoid**

* Ensure the account number passed in the request payload is a valid account

</details>

<details>

<summary><code>500</code> INTERNAL SERVER ERROR</summary>

Indicates a temporary issue within TemboPlus. Retry later or contact TemboPlus Support with your `x-request-id`.

#### Response Format:

```json
{
    "statusCode": 500,
    "reason": "SERVER_ERROR"
}
```

</details>
