Skip to main content
Initiate a stablecoin → fiat payout via LINK’s B2b API. You provide the core transaction details plus your settlement banking details (the account you want to receive fiat into).

Endpoint

POST /otc/offramp

Request Body

FieldTypeRequiredDescription
customer_idstringYour platform’s customer ID for this transaction.
currencystringFiat currency to receive (e.g., NGN, USD, EUR). See Supported Currencies.
amountstringStablecoin amount being sent.
stablesstringStablecoin being sent: USDC or USDT.
wallet_addressstringWallet address sending the stablecoin.
networkstringBlockchain network. USDT: TRON, POLYGON, SOLANA. USDC: ETHEREUM, BSC, POLYGON, BASE, SOLANA, STELLAR.
paymentDetailsobjectYour settlement banking details — the account you want to receive fiat into. Required fields depend on your currency’s payment method (see table below).

Stablecoin & Network Compatibility

StablecoinSupported Networks
USDTTRON, POLYGON, SOLANA
USDCETHEREUM, BSC, POLYGON, BASE, SOLANA, STELLAR

Payment Method & paymentDetails Fields

Call GET /otc/rate_quote?currency={currency}&amount={amount}&trx_type=offramp first — the response includes a paymentMethod field that tells you which method applies to your currency.
Payment MethodCurrenciesRequired fields in paymentDetails
ACHUSDaccountNumber, routingNumber, accountName
Local Bank TransferNGN, BIF, CDF, DZD, ETB, GBP, GHS, LYD, MUR, MWK, MZN, SGD, SLE, SSP, TZS, UGXaccountNumber, accountName, bankName
IBANAED, AOA, EGP, EUR, TRYiban, accountName, bankName
RIBMAD, XAF, XOFrib, accountName, bankName
GBP also accepts IBAN format — use Local Bank Transfer (accountNumber) or IBAN (iban) depending on your bank.

JSON Request Examples

{
  "customer_id": "cut93498342",
  "currency": "NGN",
  "amount": "25000",
  "stables": "USDC",
  "wallet_address": "0xYourEthWallet",
  "network": "ETHEREUM",
  "paymentDetails": {
    "accountNumber": "0123456789",
    "accountName": "Acme Corp",
    "bankName": "GTBank"
  }
}

Response (201)

{
  "code": "TXN_SUCCESSFUL",
  "status": "Success",
  "message": "Transaction request submitted. Partners have been notified.",
  "data": {
    "transaction_id": "6839f2a1c4e3b1000d5a9012",
    "reference": "link-otc-87654321",
    "type": "offramp",
    "stables": "USDC",
    "amount": "25000 USDC",
    "currency": "NGN",
    "payout_amount": "50000000 NGN",
    "rate": 2000,
    "transaction_status": "pending",
    "payment_method": "LOCAL_BANK_TRANSFER",
    "date_created": "28/05/2026: 14:30"
  }
}

What Happens Next

  1. Send stablecoin — Transfer the stablecoin from wallet_address to the LINK-provided address.
  2. Status updates — LINK fires a transaction_status_updated webhook as we process the payout:
{
  "event": "transaction_status_updated",
  "reference": "link-otc-87654321",
  "data": {
    "transaction_ref": "link-otc-87654321",
    "currency": "NGN",
    "transaction_type": "offramp",
    "transaction_status": "completed"
  }
}
transaction_status values:
ValueMeaningInternal status
pendingAwaiting partner actionpending
processingPartner is processing the payoutprocessing
rfiPartner needs additional informationprocessing
completedFiat payout delivered to your accountcompleted
failedPayout could not be completedfailed

B2B Onramp Cross-Border FX