Skip to main content
Developer fees let you charge a share of offramp volume and route it to a beneficiary wallet. Switch calculates the fee from the stablecoin side of the transaction when you include developer_fee and developer_recipient on offramp calls.
Developer fees apply to offramp flows (stablecoin to local currency). To see how a fee changes pricing before you initiate, use Get quote with the same developer_fee value.

How developer fees work

1

Set percentage and recipient

On POST /offramp/quote and POST /offramp/initiate (see Stablecoin to NGN for a full example), pass developer_fee (optional) and developer_recipient (the wallet that should receive the fee). Omit them or set developer_fee to 0 if you are not charging a fee.
2

Quote and initiate

The quote and initiation responses include a breakdown of fees (platform vs developer) where applicable, so you can show totals in your product and reconcile payouts.
3

Settlement

After the user deposits stablecoin and the offramp completes, the developer portion is handled according to Switch settlement rules for your integration. Monitor webhooks and the beneficiary wallet for confirmation.

Coverage

Developer fees follow offramp availability. Corridors, channels, and currencies depend on country configuration—use Get currencies and Countries to confirm support for your markets.

Fee model

Switch supports a percentage developer fee on the stablecoin amount:
  • developer_fee — Number from 0 to 100: the percentage of the payment amount taken as your fee (for example, 0.5 for 0.5%, 2 for 2%).
  • developer_recipient — Blockchain address that should receive the developer fee (must be compatible with settlement for the chosen asset and network).
There is one recipient per transaction. There is no separate flat-fee field; combine pricing logic in your product if you need fixed charges on top of the percentage.

Calculation example

Offramp with 100 USDC sent and developer_fee: 0.2 (0.2%, i.e. 20 bps):
  • Your fee: 100 × 0.002 = 0.2 USDC to developer_recipient.
  • The user still sends the quoted stablecoin total for the corridor; platform and developer splits appear in the fee object on success responses (see below).
With developer_fee: 0.5:
  • Your fee: 0.5 USDC on a 100 USDC leg (0.5% of 100).

Applying developer fees

Include developer_fee and developer_recipient in the JSON body when you call POST /offramp/initiate. Use the same developer_fee on POST /offramp/quote if you want the quote to reflect your fee.

Request

curl -L --request POST 'https://api.onswitch.xyz/offramp/initiate' \
  --header 'x-service-key: YOUR_SERVICE_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "amount": 100,
    "country": "NG",
    "currency": "NGN",
    "asset": "base:usdc",
    "beneficiary": {
      "holder_type": "INDIVIDUAL",
      "holder_name": "Jane Doe",
      "account_number": "0123456789",
      "bank_code": "058"
    },
    "channel": "BANK",
    "developer_fee": 0.5,
    "developer_recipient": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7"
  }'
developer_fee
number
Optional. Percentage of the stablecoin payment amount taken as your fee, from 0 to 100 (for example 0.5 for 0.5%).
developer_recipient
string
Optional. Wallet address that should receive the developer fee. Required when you charge a non-zero developer_fee.

Response

Successful initiation returns a envelope with data that can include a fee object (shape may vary slightly by product version):
{
  "success": true,
  "message": "Offramp transaction initiated successfully",
  "timestamp": "2024-01-01T00:00:00.000Z",
  "data": {
    "status": "AWAITING_DEPOSIT",
    "type": "OFFRAMP",
    "reference": "550e8400-e29b-41d4-a716-446655440000",
    "rate": 1500.5,
    "fee": {
      "total": 5,
      "platform": 4.5,
      "developer": 0.5,
      "currency": "USDC"
    },
    "source": {
      "amount": 100,
      "currency": "USDC"
    },
    "destination": {
      "amount": 150050,
      "currency": "NGN"
    },
    "deposit": {
      "amount": 100,
      "address": "0x1234567890123456789012345678901234567890",
      "asset": "base:usdc",
      "note": [
        "Kindly send the exact amount to the wallet address to complete the transaction.",
        "This dynamic wallet address has a 30 minutes expiry window and can only be used once."
      ]
    }
  }
}
data.fee.developer
number
Portion of the fee allocated to your developer_recipient for this transaction (alongside platform and total).
data.fee.total
number
Combined fee amount in stablecoin (currency) before the user completes the deposit.
For every request field, open the API reference tab in these docs and inspect OfframpInitiate and OfframpGet quote.

Key concepts

developer_fee is always a percentage of the stablecoin leg, between 0 and 100. Examples: 0.2 → 0.2%, 1 → 1%, 50 → 50%. Use 0 or omit the field when you do not charge.
Pass the same developer_fee (and plan for the same developer_recipient) on quote and initiate so displayed amounts match what the user must send and what you earn on completion.
Each offramp supports one developer_recipient. To split revenue across wallets, implement splits in your own backend or treasury flows.
Use reference, webhooks, and your dashboard to reconcile each offramp. The fee object summarizes platform vs developer amounts for that payment.

Need help?

Email support

Send us a message and we will get back to you shortly.

Book a demo

Hop on a call with our team.

Get quote

Price an offramp including developer_fee.

Offramp guides

Country-specific initiate examples and optional fields.

Webhooks

Status updates for offramp payments.

Initiate offramp

Step-by-step initiate body, including developer fee fields.