Skip to main content

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.

Initiate a stablecoin → fiat payout via LINK’s OTC desk. 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 (e.g., solana, polygon).
paymentDetailsobjectYour settlement banking details — the account you want to receive fiat into. Required fields depend on your currency’s payment method (see table below).

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
**NIP **NGNaccountNumber, accountName, bankName
GIPGHSaccountNumber, accountName, bankName
ACHUSDaccountNumber, routingNumber, accountName
SEPAEURiban, beneficiaryName, bankName
PIXBRLpixKey, accountHolder
CNAPSCNYaccountNumber, accountName, bankName, cnapsCode
PESONetPHPaccountNumber, accountName, bankName
Mobile MoneyEGP, SLE, SSP, TZS, UGX, XAF, XOFprovider, phoneNumber, accountName
SWIFTAED, AOA, CAD, CDF, DZD, GBP, HKD, IDR, LYD, MAD, MWK, MZN, SGD, TRYaccountName, bankName, accountNumber, swiftCode

JSON Request Examples

{
  "customer_id": "cut93498342",
  "currency": "NGN",
  "amount": "25000",
  "stables": "USDC",
  "wallet_address": "YourSolanaWallet",
  "network": "solana",
  "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": "NIP",
    "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

OTC Onramp Webhooks