Transfer flow

Complete guide to executing transfers across traditional banking, mobile money, and cryptocurrency networks. This overview covers the universal steps required for all transfer types, with specific handling for crypto transactions that require blockchain signing.

Overview

All transfers follow the same foundational steps regardless of transfer type. The process branches only when cryptocurrency networks are involved, requiring additional transaction signing steps for blockchain security.

Universal Steps (All Transfers):

  1. Discover available channels - Get supported rails and currencies
  2. Create payment recipients - Set up destination account details for outbound transfers
  3. Generate pricing quotes - Get real-time fees and exchange rates
  4. Create transfers - Initialize the payment with quote and recipient
  5. Complete transfer - Follow payment instructions or sign crypto transactions

Transfer Types:

  • Fiat → Fiat: Traditional banking and mobile money transfers
  • Crypto → Fiat: Cryptocurrency off-ramp to bank accounts
  • Fiat → Crypto: Bank account funding to cryptocurrency wallets

Step-by-Step Flow

1. Get Available Channels

Discover which payment rails and currencies are available for your transfers.

GET /channels

Purpose: Understand supported combinations of rails (ACH, SEPA, Ethereum, etc.) and currencies (USD, EUR, USDC, etc.) with their current fees and processing speeds.

See: Payment Channels Documentation

2. Create Recipients (Outbound Transfers Only)

Set up payment destinations with the required account details for your chosen rails.

POST /recipients

Purpose: Create reusable payment destinations with properly formatted account details (bank accounts, crypto addresses, mobile money accounts). Only required for outbound transfers where you're sending money to external accounts.

See: Recipients Documentation

3. Generate Quote

Get real-time pricing for your specific transfer amount and rail combination.

POST /transfers/quote

Purpose: Calculate exact fees, exchange rates, and amounts. Quotes are valid for 2 minutes and required for transfer creation.

See: Quotes Documentation

4. Create Transfer

Initialize the transfer using your quote token and recipient details.

POST /transfers

Request:

{
  "quote": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "sender": "wallet_1234567890abcdef",
  "recipient": "recipient_1234567890abcdef", 
  "memo": "Invoice #12345"
}

Purpose: Create the transfer record with TransferStatusAwaitingFunds status. Transfer expires in 5 minutes.

5. Transfer Completion (Branches by Type)

The final step depends on whether your transfer involves cryptocurrency networks:

For Fiat-to-Fiat Transfers

Follow deposit instructions provided in the transfer response to fund your transfer through banking or mobile money networks.

For Crypto Transfers

Create transfer intent to generate blockchain transaction data for signing:

POST /transfers/{transfer_id}/intent

Then sign and submit the blockchain transaction using your wallet infrastructure.


Transfer Flow Diagram

Payout flow (crypto-fiat)

Payin flow (crypto - fiat)


Transfer Types Explained

Fiat-to-Fiat Transfers

Examples: USD ACH → EUR SEPA, mobile money transfers, domestic bank transfers

Completion: Follow the deposit instructions provided in the transfer response. This typically involves:

  • Bank wire transfers with provided routing details
  • Mobile money deposits to specified accounts
  • ACH transfers using provided account information

Crypto-to-Fiat Transfers

Examples: USDC → USD bank account, ETH → EUR SEPA transfer

Completion: Create a transfer intent to generate blockchain transaction data, then:

  • Sign the transaction with your crypto wallet
  • Submit the signed transaction to the blockchain network
  • Monitor transaction confirmation

Fiat-to-Crypto Transfers

Examples: USD bank → USDC wallet, EUR → ETH address

Completion: Similar to crypto-to-fiat, requiring transfer intent creation and blockchain transaction signing for the destination crypto network.


Important Timing Considerations

ComponentValidity PeriodPurpose
Quotes2 minutesEnsure rate accuracy for volatile markets
Transfers5 minutesAllow reasonable time for funding completion
Transfer IntentsVariesBlockchain-specific expiration times

Best Practices:

  • Generate quotes immediately before transfer creation
  • Complete crypto transaction signing promptly after intent creation
  • Monitor transfer status for successful completion confirmation