Transfer from balance

You can pay for a transfer directly from your organisation's balance. Funds are taken from your balance once the transfer is created.


Requirements

  • The quote's source is a supported balance asset: USDC or USDT on Ethereum, Polygon or Solana, or USDT on Tron.
  • You hold an active deposit address on that network.
  • Your balance of that asset on that network covers the source amount. Assets and networks are not pooled.

Create in the dashboard

  1. Start a New transfer, from the dashboard home or from a customer's page, and choose the customer.
  2. On Get a quote, pick the stablecoin and network you want to send from, and the currency to pay out in.
  3. If you hold a balance in that asset on that network, a switch appears above the amount. Select Use balance instead of Fund transfer. It shows your balance of that asset, and is disabled if the balance is zero.
  4. Enter the amount. It cannot exceed your balance, and the dashboard shows how much will be left after the transfer.
  5. Enter the Destination details and create the transfer.

No deposit address is shown. Funds are taken from your balance once the transfer is created.


Create via the API

Request a quote exactly as you would normally, then pass funding_source when creating the transfer.

Request

POST /api/v1/transfer
Idempotency-Key: <unique-idempotency-key>
{
  "quote_id": "550e8400-e29b-41d4-a716-446655440000",
  "customer_id": "550e8400-e29b-41d4-a716-446655440001",
  "funding_source": "prefund_balance",
  "destination": {
    "type": "bank",
    "account_holder_name": "Nikos Papadopoulos",
    "iban": "GR1601101250000000012300695",
    "bank_name": "National Bank of Greece",
    "bank_country": "GR",
    "currency": "EUR",
    "swift_code": "ETHNGRAA"
  }
}

Response

{
  "id": "550e8400-e29b-41d4-a716-446655440002",
  "tenant_id": "550e8400-e29b-41d4-a716-446655440003",
  "customer_id": "550e8400-e29b-41d4-a716-446655440001",
  "quote_id": "550e8400-e29b-41d4-a716-446655440000",
  "type": "offramp",
  "status": "created",
  "origin": "api",
  "created_at": "2026-09-16T04:12:08Z",
  "updated_at": "2026-09-16T04:12:08Z",
  "source": {
    "amount": "1000.000000",
    "currency": "usdt",
    "network": "polygon",
    "funding_source": "prefund_balance"
  },
  "source_deposit_instructions": null,
  "destination": {
    "account_holder_name": "Nikos Papadopoulos",
    "iban": "GR1601101250000000012300695",
    "bank_name": "National Bank of Greece",
    "bank_country": "GR",
    "currency": "EUR"
  },
  "exchange_rate": 0.922
}

Two things to note in the response:

  • source.funding_source is prefund_balance. This marks the transfer as paid from your balance.
  • source_deposit_instructions is null. There is nothing to collect, so there is no address to show anyone. Do not present a deposit target for these transfers. The source object is where the amount and asset taken from your balance are reported.

Once the transfer is created, your balance is debited and the transfer proceeds to conversion and payout.


Errors

Balance funding is checked before the transfer is created. Each of these failures returns 422, with the code as a prefix of message:

{
  "statusCode": 422,
  "error": "Unprocessable Entity",
  "message": "PREFUND_INSUFFICIENT_BALANCE: polygon prefund balance is lower than the transfer source amount"
}
CodeMeaning
PREFUND_INSUFFICIENT_BALANCEYour balance of the source asset on the source network is below the source amount. Top up, or send a smaller amount.
PREFUND_UNSUPPORTED_ASSETThe quote's source is not a supported balance asset.
PREFUND_WALLET_NOT_ACTIVEYou have no active deposit address on the source network.
PREFUND_TRANSFERS_NOT_ENABLEDPaying transfers from your balance is not enabled for your organisation.
PREFUND_NOT_ENABLEDBalances are not enabled for your organisation.
PREFUND_UNSUPPORTED_ROUTEThis corridor cannot be paid from a balance.

On this page