Skip to main content
POST
/
offramp
/
initiate
Initiate
curl --request POST \
  --url https://api.onswitch.xyz/offramp/initiate \
  --header 'Content-Type: application/json' \
  --header 'x-service-key: <api-key>' \
  --data '
{
  "amount": 100,
  "wallet": "68d4f2a91eb37c15b8e3a4f7",
  "country": "NG",
  "currency": "NGN",
  "asset": "base:usdc",
  "beneficiary": {
    "holder_type": "INDIVIDUAL",
    "holder_name": "Chinonso Adeyemi",
    "account_number": "3048915627",
    "bank_code": "058"
  },
  "narration": "Bank transfer to Chinonso Adeyemi",
  "exact_output": false,
  "callback_url": "https://your-app.com/webhook",
  "reference": "a3f9c2e1-7b4d-4a8e-9c62-1d8f4e6b2a90",
  "channel": "BANK",
  "reason": "PERSONAL_TRANSFER",
  "developer_fee": 0.5,
  "developer_recipient": "0x8F3aC91d2B741E59f064E9053a4d2E8F1c0b6D93a",
  "refund_address": "0x8F3aC91d2B741E59f064E9053a4d2E8F1c0b6D93a",
  "static": false
}
'
{
  "success": true,
  "message": "Offramp initiated successfully",
  "timestamp": "2026-04-23T14:35:04.264Z",
  "data": {
    "status": "AWAITING_DEPOSIT",
    "type": "OFFRAMP",
    "reference": "61f9a35a-e535-4f04-ba50-3058b4c856c4",
    "beneficiary": "69e8e664b9fea9f9e6dc3cbb",
    "rate": 1380.845,
    "developer_fee": {
      "amount": 0,
      "amount_usd": 0,
      "currency": "USDC",
      "network": "BASE"
    },
    "source": {
      "amount": 10,
      "amount_usd": 10,
      "network": "BASE",
      "currency": "USDC"
    },
    "destination": {
      "amount": 13808.45,
      "amount_usd": 10,
      "network": "FIAT",
      "currency": "NGN"
    },
    "deposit": {
      "amount": 10,
      "address": "0x3131b6f6a32751C9d99C1710e357A6C4297d17Bc",
      "asset": "base:usdc",
      "note": [
        "Kindly send the exact amount to the wallet address to complete the transaction.",
        "This wallet address is for one-time use only and has a 30 minutes expiry window."
      ]
    },
    "meta": {},
    "created_at": "2026-04-23T14:35:02.448Z",
    "updated_at": "2026-04-23T14:35:02.448Z"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.onswitch.xyz/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

x-service-key
string
header
required

Service key for API authentication

Body

application/json
amount
number
required
Required range: x >= 0
country
enum<string>
required
Available options:
AD,
AE,
AF,
AG,
AI,
AL,
AM,
EU,
AN,
AO,
AQ,
AR,
AS,
AT,
AU,
AW,
AZ,
BA,
BB,
BD,
BE,
BF,
BG,
BH,
BI,
BJ,
BM,
BN,
BO,
BR,
BS,
BT,
BV,
BW,
BY,
BZ,
CA,
CC,
CD,
CF,
CG,
CH,
CI,
CK,
CL,
CM,
CN,
CO,
CR,
CU,
CV,
CX,
CY,
CZ,
DE,
DJ,
DK,
DM,
DO,
DZ,
EC,
EE,
EG,
EH,
ER,
ES,
ET,
FI,
FJ,
FK,
FM,
FO,
FR,
GA,
GB,
GD,
GE,
GF,
GG,
GH,
GI,
GL,
GM,
GN,
GP,
GQ,
GR,
GS,
GT,
GU,
GW,
GY,
GZ,
HK,
HM,
HN,
HR,
HT,
HU,
ID,
IE,
IL,
IM,
IN,
IO,
IQ,
IR,
IS,
IT,
JE,
JM,
JO,
JP,
KE,
KG,
KH,
KI,
KM,
KN,
KP,
KR,
KW,
KY,
KZ,
LA,
LB,
LC,
LI,
LK,
LR,
LS,
LT,
LU,
LV,
LY,
MA,
MC,
MD,
ME,
MG,
MH,
MK,
ML,
MM,
MN,
MO,
MP,
MQ,
MR,
MS,
MT,
MU,
MV,
MW,
MX,
MY,
MZ,
NA,
NC,
NE,
NF,
NG,
NI,
NL,
NO,
NP,
NR,
NU,
NZ,
OM,
PA,
PE,
PF,
PG,
PH,
PK,
PL,
PM,
PN,
PR,
PS,
PT,
PW,
PY,
QA,
RE,
RO,
RS,
RU,
RW,
SA,
SB,
SC,
SD,
SE,
SG,
SH,
SI,
SJ,
SK,
SL,
SM,
SN,
SO,
SR,
SS,
ST,
SV,
SY,
SZ,
TC,
TD,
TF,
TG,
TH,
TJ,
TK,
TL,
TM,
TN,
TO,
TR,
TT,
TV,
TW,
TZ,
UA,
UG,
UM,
US,
UY,
UZ,
VA,
VC,
VE,
VG,
VI,
VN,
VU,
WF,
WS,
XK,
YE,
YT,
ZA,
ZM,
ZW
asset
enum<string>
required
Available options:
base:usdc,
solana:usdc,
solana:usdt,
ethereum:usdc,
ethereum:usdt,
polygon:usdc,
polygon:usdt,
bsc:usdc,
bsc:usdt,
arbitrum:usdc,
optimism:usdc,
gnosis:usdc,
gnosis:usdt,
arbitrum:usdt,
avalanche:usdc,
monad:usdc,
optimism:usdt,
monad:usdt,
plasma:usdt,
avalanche:usdt,
tron:usdt,
linea:usdt,
mantle:usdt,
hyperevm:usdt,
berachain:usdt,
linea:usdc,
berachain:usdc,
sonic:usdc,
base:cngn,
bsc:cngn
beneficiary
Receive to saved beneficiary · object
required

The recipient of the offramp transaction.

wallet
string

Wallet to send the offramp amount from

currency
enum<string>

Currency code (optional).

Available options:
AED,
AFN,
ALL,
AMD,
ANG,
AOA,
ARS,
AUD,
AWG,
AZN,
BAM,
BBD,
BDT,
BGN,
BHD,
BIF,
BMD,
BND,
BOB,
BRL,
BSD,
BTN,
BWP,
BYN,
BZD,
CAD,
CDF,
CHF,
CLP,
CNY,
COP,
CRC,
CUP,
CVE,
CZK,
DJF,
DKK,
DOP,
DZD,
EGP,
ERN,
ETB,
EUR,
FJD,
FKP,
FOK,
GBP,
GEL,
GGP,
GHS,
GIP,
GMD,
GNF,
GTQ,
GYD,
HKD,
HNL,
HRK,
HTG,
HUF,
IDR,
ILS,
IMP,
INR,
IQD,
IRR,
ISK,
JEP,
JMD,
JOD,
JPY,
KES,
KGS,
KHR,
KID,
KMF,
KRW,
KWD,
KYD,
KZT,
LAK,
LBP,
LKR,
LRD,
LSL,
LYD,
MAD,
MDL,
MGA,
MKD,
MMK,
MNT,
MOP,
MRU,
MUR,
MVR,
MWK,
MXN,
MYR,
MZN,
NAD,
NGN,
NIO,
NOK,
NPR,
NZD,
OMR,
PAB,
PEN,
PGK,
PHP,
PKR,
PLN,
PYG,
QAR,
RON,
RSD,
RUB,
RWF,
SAR,
SBD,
SCR,
SDG,
SEK,
SGD,
SHP,
SLL,
SOS,
SRD,
SSP,
STN,
SYP,
SZL,
THB,
TJS,
TMT,
TND,
TOP,
TRY,
TTD,
TVD,
TWD,
TZS,
UAH,
UGX,
USD,
UYU,
UZS,
VES,
VND,
VUV,
WST,
XAF,
XCD,
XDR,
XOF,
XPF,
YER,
ZAR,
ZMW,
ZWL
sender_name
string

Bank transfer sender name. Only applicable for Nigeria bank transfers.

narration
string

Transfer narration or memo; appears on the recipient's statement.

exact_output
boolean
default:false
callback_url
string<uri>

Webhook URL to receive transaction status updates.

reference
string<uuid>
channel
enum<string>

Optional transfer channel. If not specified, defaults to the country's default channel.

Available options:
BANK,
BLOCKCHAIN,
SWIFT,
SEPA,
SEPA_EUR,
WIRE,
ACH,
DOMESTIC_GBP,
MOBILEMONEY,
ALIPAY,
WECHATPAY
reason
enum<string>

Purpose of the payment.

Available options:
ADVERTISING_EXPENSES,
ADVISORY_FEES,
BUSINESS_INSURANCE,
COMPUTER_SERVICES,
CONSTRUCTION_EXPENSES,
DELIVERY_FEES,
EDUCATION,
EXPORTED_GOODS,
FAMILY_SUPPORT,
FUND_INVESTMENT,
GIFT_AND_DONATION,
HOTEL_ACCOMMODATION,
INFLUENCER_PAYMENT,
INSURANCE_CLAIMS,
LIBERALIZED_REMITTANCE,
LOAN_PAYMENT,
MAINTENANCE_EXPENSES,
MEDICAL_TREATMENT,
OFFICE_EXPENSES,
OTHER,
OTHER_FEES,
PERSONAL_TRANSFER,
PROPERTY_PURCHASE,
PROPERTY_RENTAL,
REWARD_PAYMENT,
ROYALTY_FEES,
SALARY_PAYMENT,
SERVICE_CHARGES,
SHARES_INVESTMENT,
SMALL_VALUE_REMITTANCE,
TAX_PAYMENT,
TRAVEL,
TRANSPORTATION_FEES,
UTILITY_BILLS
developer_fee
number

Optional developer fee percentage (0-100)

Required range: 0 <= x <= 100
developer_recipient
string

Optional wallet address to receive developer fee.

refund_address
string

Optional wallet address to receive refunds for failed/expired deposits.

static
boolean

Optional. When true, deposit address will always be the same for the same beneficiary.

Response

Successfully initiated offramp transaction

success
boolean
required
message
string
required
timestamp
string<date-time>
required
data
object
required