---
title: "Deposit instructions for both legs"
method: GET
path: "/v1/funding"
tags: ["Partner API"]
---

# Deposit instructions for both legs

`GET /v1/funding`

## Request

- Base URL: `https://sandbox.onlink.africa`
- URL: `https://sandbox.onlink.africa/v1/funding`
- Auth: API key in header `X-OnLink-Key`

The KES rails that top up your KES balance, and your USDT deposit address. A KES deposit is credited to your balance, not to any one order — a buy order debits that balance directly. Every reference is an explicit field — the KES accountReference is the exact value to put in the M-PESA account-number field, or the beneficiary account number on a bank transfer. Your USDT deposit address is permanent; USDT sent to it tops up your USDT balance, which a sell order is paid from.

## Response `200`

Deposit instructions

- FundingResponseDto
  - `kes` KesFundingRailDto[], required: The KES rails that top up your KES balance. **May be an empty array** — a partner with no activated KES account gets `[]` rather than a placeholder reference, because publishing a reference nothing is watching is money arriving nowhere.
    - `rail` 'mpesa_paybill' | 'bank_transfer', required: Which KES rail these instructions are for.
    - `paybill` string: The M-PESA shortcode. Present on the `mpesa_paybill` rail only — absent, not null, on the bank rail.
    - `accountReference` string, required: **The exact value the payer must quote**, verbatim. On the paybill rail this goes in M-PESA’s "Account Number" field; on the bank rail it is the beneficiary account number. This is your own KES balance account at OnLink — funding it tops up your balance generally, and is not tied to any single order.
    - `beneficiaryName` string: The beneficiary name a bank transfer must be addressed to. Included ONLY when the account carries a name our bank has confirmed back to us. If it is absent, ask OnLink rather than composing one — the receiving bank matches on this string.
    - `currency` 'KES', required: Always KES on this leg.
    - `instructions` string, required: Human-readable instructions, consistent with the explicit fields above rather than a substitute for them. Integrate against the fields; show this to a person.
  - `usdt` UsdtFundingRailDto, required
    - `chain` 'tron', required: Deposit network. Tron (TRC-20) only.
    - `asset` 'USDT', required: Deposit asset. USDT only.
    - `address` string, required: Your permanent Tron deposit address, **in full**. USDT sent to it tops up your USDT balance; it is not tied to any one order. Compare the whole string when you verify it: a lookalike differing only in the middle is an irrecoverable burn.
    - `memo` string, nullable, required: Always `null`. Stated rather than omitted, because an integrator who sees no `memo` field cannot tell whether we forgot it or Tron has none — and a deposit sent without a REQUIRED memo is lost.
    - `instructions` string, required: Human-readable instructions for the USDT send.

## Other responses

- `401`: Signature missing or invalid
- `503`: No USDT deposit address is allocated for your account yet. This is not self-serve — contact OnLink.

---

[API](https://skmtc.dev/onlink/apis/onlink-partner-api.md) - [All operations](https://skmtc.dev/onlink/apis/onlink-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/onlink/apis/onlink-partner-api/revisions/1d1c6a3671f2?raw)
