Stablecoin to Stablecoin (Wallet Transfer)

Understanding a Wallet Transfer

UnblockPay’s API enables blockchain-native transfers of stablecoins on the same network (e.g., USDC to USDC on Solana, or USDT to USDT on Polygon). These transfers can occur between wallets managed by UnblockPay or from a UnblockPay-managed wallet to an external blockchain wallet.

This process is useful for partners looking to automate stablecoin payouts, rebalance treasury positions, or facilitate crypto-native disbursements without touching fiat rails.

To initiate a stablecoin to stablecoin (wallet transfer) transaction, first you need to create a Customer and a Wallet. The wallet must have sufficient balance to complete the transaction.

All stablecoin-to-stablecoin transactions must occur within the same blockchain network. Cross-chain swaps are not supported at this time.


How to create a Wallet Transfer

POST v1/wallet-transfer

This endpoint initiates a wallet transfer by moving stablecoins from one blockchain wallet to another on the same network. You'll need to specify the customer_id, the sender wallet_id, the receiver destination, the amount, currency, and payment_rail to be transferred.

The receiver can be either:

  • A wallet_id — for another wallet managed by UnblockPay

  • An address — for an external blockchain wallet not managed by UnblockPay

No quote is required for this type of transaction, and once created, the transaction cannot be cancelled.

Example request for initiating a stablecoin transfer from an UnblockPay wallet to an external wallet address.

{
    "amount": 10,
    "customer_id": "{{customer_id}}",
    "sender": {
        "currency": "USDC",
        "payment_rail": "solana",
        "wallet_id": "{{wallet_id}}"
    },
    "receiver": {
        "currency": "USDC",
        "payment_rail": "solana",
        "address": "0196efed-3bfa-71ea-ae05-d9a4b33e361a"
    }
}

Below is an example request for transferring stablecoins between two wallets managed by UnblockPay.

{
    "amount": 10,
    "customer_id": "{{customer_id}}",
    "sender": {
        "currency": "USDC",
        "payment_rail": "solana",
        "wallet_id": "{{wallet_id}}"
    },
    "receiver": {
        "currency": "USDC",
        "payment_rail": "solana",
        "wallet_id": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
    }
}

Here is a response example:

{
    "id": "0197e6bd-b74b-72ee-94d8-58291cc30987",
    "status": "processing",
    "type": "wallet_transfer",
    "partner_id": "b30578dc-20a4-4332-9eac-4643dc4ebbf0",
    "customer_id": "0196efed-3bfa-71ea-ae05-d9a4b33e361a",
    "sender": {
        "amount": 10,
        "currency": "USDC",
        "payment_rail": "solana",
        "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
        "wallet_id": "0197e6b8-9ffd-75c5-a782-52875b8acb7f",
        "transaction_hash": null
    },
    "receiver": {
        "amount": 10,
        "currency": "USDC",
        "payment_rail": "solana",
        "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
    },
    "receipt": {
        "initial_crypto_amount": 10,
        "final_crypto_amount": 10,
        "unblockpay_fee": 0,
        "flat_fee": 0
    },
    "created_at": "2025-07-07T21:14:42.379Z",
    "updated_at": "2025-07-07T21:14:42.379Z",
    "finished_at": null
}

Note: All transactions of this type are created with the status processing, indicating that the transfer is being validated and broadcasted to the blockchain. Once confirmed on-chain, the status will be updated accordingly.


Wallet Transfer API endpoints

Here are the endpoints you'll need to create or list a wallet transfer:

  • POST v1/wallet-transfer: Initiate stablecoin to stablecoin transaction

  • GET v1/transactions/{id}: View details of a specific transaction

Note: This type of transaction does not require a call to the quote endpoint, and cannot be cancelled once created.

For the full schema and request/response details, see the API Reference.