> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linkio.world/llms.txt
> Use this file to discover all available pages before exploring further.

# Espees Off-Ramp

> POST /transactions/v2/esp_offramp — Espees → Fiat

Initiate an Espees → fiat conversion. You provide the Espees amount, the target fiat currency, and the recipient bank account details. LINK converts at the current Espees rate and initiates disbursement.

***

#### Endpoint

```
POST /transactions/v2/esp_offramp
```

***

#### Request Body

| Field               | Type   | Required | Description                                                                                 |
| ------------------- | ------ | -------- | ------------------------------------------------------------------------------------------- |
| `currency`          | string | ✓        | Fiat currency the user wants to receive. See [Supported Currencies](#supported-currencies). |
| `amount`            | number | ✓        | Amount of Espees (ESP) to sell.                                                             |
| `bankName`          | string | ✓        | Recipient's bank name.                                                                      |
| `accountName`       | string | ✓        | Recipient's account name.                                                                   |
| `accountNumber`     | string | ✓        | Recipient's account number.                                                                 |
| `kingschatUsername` | string | —        | KingsChat username linked to the user's Espees account.                                     |
| `espeesCard`        | string | —        | Espees card number.                                                                         |
| `emailAddress`      | string | —        | Email address registered with the user's Espees account.                                    |

> **Identification:** `kingschatUsername`, `espeesCard`, and `emailAddress` are all optional — but you should provide at least one so LINK can identify which Espees account is sending the transaction.

***

#### Supported Currencies

| Currency         | Code |
| ---------------- | ---- |
| UAE Dirham       | AED  |
| Euro             | EUR  |
| Nigerian Naira   | NGN  |
| Singapore Dollar | SGD  |

***

#### Request Example

<CodeGroup>
  ```json JSON Body theme={null}
  {
    "currency": "NGN",
    "amount": 0.5,
    "bankName": "GTBank",
    "accountName": "Jane Doe",
    "accountNumber": "0987654321",
    "kingschatUsername": "jane_doe"
  }
  ```

  ```javascript JavaScript theme={null}
  const options = {
    method: 'POST',
    headers: {
      'accept': 'application/json',
      'ngnc-sec-key': 'your_secret_key',
      'content-type': 'application/json'
    },
    body: JSON.stringify({
      currency: "NGN",
      amount: 0.5,
      bankName: "GTBank",
      accountName: "Jane Doe",
      accountNumber: "0987654321",
      kingschatUsername: "jane_doe"
    })
  };

  fetch('https://api.linkio.world/transactions/v2/esp_offramp', options)
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(err => console.error(err));
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.linkio.world/transactions/v2/esp_offramp"

  payload = {
      "currency": "NGN",
      "amount": 0.5,
      "bankName": "GTBank",
      "accountName": "Jane Doe",
      "accountNumber": "0987654321",
      "kingschatUsername": "jane_doe"
  }

  headers = {
      "accept": "application/json",
      "ngnc-sec-key": "your_secret_key",
      "content-type": "application/json"
  }

  response = requests.post(url, json=payload, headers=headers)
  print(response.json())
  ```
</CodeGroup>

***

#### Response (201)

```json theme={null}
{
  "code": "TXN_SUCCESSFUL",
  "status": "Success",
  "message": "ESP Offramp Transaction Request Successful",
  "transaction": {
    "transaction_id": "6839f2a1c4e3b1000d5a9013",
    "reference": "esp-1717000000000-xyz789",
    "type": "sell_ramp",
    "stable": "ESP",
    "currency": "NGN",
    "amount": "0.5 ESP",
    "rate": 80000,
    "payout_amount": "40000 NGN",
    "transaction_status": "pending",
    "date_created": "June 19, 2026 14:45"
  }
}
```

***

#### Error Codes

| Code                   | HTTP | Description                                                                                                 |
| ---------------------- | ---- | ----------------------------------------------------------------------------------------------------------- |
| `TXN_MISSING_FIELDS`   | 400  | One or more required fields are missing (`currency`, `amount`, `bankName`, `accountName`, `accountNumber`). |
| `INVALID_AMOUNT`       | 400  | `amount` is not a positive number.                                                                          |
| `UNSUPPORTED_CURRENCY` | 400  | `currency` is not in the supported off-ramp list.                                                           |
| `INVALID_ACCOUNT`      | 400  | `accountName` or `accountNumber` is empty or not a string.                                                  |
| `INVALID_BANK`         | 400  | `bankName` is empty or not a string.                                                                        |
| `RATE_UNAVAILABLE`     | 500  | Espees rate could not be fetched for the requested currency.                                                |
| `TXN_FAILED`           | 500  | Internal server error.                                                                                      |

***

[Espees Overview](/docs/esp-service)

[Espees On-Ramp](/docs/esp-onramp)
