Skip to main content

Prerequisites

Before you begin, make sure you have:
  1. A source User with USDC balance on Ethereum
  2. A destination User with wallet on Solana (can be the same user)

Step 1: Check Source Wallet Balance

First, verify that the source wallet has sufficient USDC balance: GET /v2/users/{userId}/wallets/balance
curl -X GET "https://production.hifibridge.com/v2/users/{userId}/wallets/balance?chain=ETHEREUM&currency=usdc" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response:
{
  "balances": [
    {
      "currency": "usdc",
      "chain": "ETHEREUM",
      "balance": "1000.00",
      "availableBalance": "1000.00"
    }
  ]
}

Step 2: Create Bridging Request

Create a bridge from Ethereum to Solana: POST /v2/wallets/bridges
curl --request POST \
     --url https://production.hifibridge.com/v2/wallets/bridges \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{
  "source": {
    "chain": "ETHEREUM",
    "currency": "usdc"
  },
  "destination": {
    "chain": "SOLANA",
    "currency": "usdc"
  },
  "amount": "100.00"
}'
Response:
{
  "transferType": "WALLET.BRIDGE",
  "transferDetails": {
    "id": "9ccafd0f-e47f-43c2-8693-13741b67d638",
    "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
    "createdAt": "2025-02-24T17:44:54.781519+00:00",
    "updatedAt": "2025-02-24T17:57:01.185+00:00",
    "amount": 100.0,
    "status": "PENDING",
    "source": {
      "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde",
      "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34",
      "chain": "ETHEREUM",
      "currency": "usdc"
    },
    "destination": {
      "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde",
      "walletAddress": "0x17f043FB0a39334641beD627551AC095941157B0",
      "chain": "SOLANA",
      "currency": "usdc"
    },
    "receipt": {
      "transactionHash": null,
      "operations": {
        "mint": null,
        "burn": null,
        "approve": null
      }
    },
    "failedReason": null,
    "fee": null,
    "quoteInformation": {
      "sendGross": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "sendNet": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "railFee": {
        "amount": "0",
        "currency": "usdc"
      },
      "receiveGross": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "receiveNet": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "rate": "1",
      "expiresAt": "2025-02-25T17:44:54.781Z"
    }
  }
}

Step 3: Monitor Bridge Status

Check the status of your bridge: GET /v2/wallets/bridges/{bridgeId}
curl -X GET "https://production.hifibridge.com/v2/wallets/bridges/9ccafd0f-e47f-43c2-8693-13741b67d638" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response:
{
  "transferType": "WALLET.BRIDGE",
  "transferDetails": {
    "id": "9ccafd0f-e47f-43c2-8693-13741b67d638",
    "requestId": "1d860428-1d0b-47c5-9e65-98961ff59215",
    "createdAt": "2025-02-24T17:44:54.781519+00:00",
    "updatedAt": "2025-02-24T17:57:01.185+00:00",
    "amount": 100.0,
    "status": "COMPLETED",
    "source": {
      "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde",
      "walletAddress": "0xE9cfBf1D690565579D823264170eE357f80e9A34",
      "chain": "ETHEREUM",
      "currency": "usdc"
    },
    "destination": {
      "userId": "a804f891-b63c-4b36-99ee-0aa83e6facde",
      "walletAddress": "0x17f043FB0a39334641beD627551AC095941157B0",
      "chain": "SOLANA",
      "currency": "usdc"
    },
    "receipt": {
      "transactionHash": "0x17f043FB0a39334641beD627551AC095941157B0",
      "operations": {
        "mint": {
          "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53",
          "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac",
          "chain": "SOLANA"
        },
        "burn": {
          "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53",
          "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac",
          "chain": "ETHEREUM"
        },
        "approve": {
          "transactionHash": "0x5784890f9efd0160e9401439a5cf2aa5350580ecf48f9ca2af617338ae089e53",
          "userOpHash": "0xef7bdb071b1fcfb5df629bd4d27ffa6dc32d0a5df676f26fb8c25311df1185ac",
          "chain": "ETHEREUM"
        }
      }
    },
    "failedReason": null,
    "fee": null,
    "quoteInformation": {
      "sendGross": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "sendNet": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "railFee": {
        "amount": "0",
        "currency": "usdc"
      },
      "receiveGross": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "receiveNet": {
        "amount": "100.00",
        "currency": "usdc"
      },
      "rate": "1",
      "expiresAt": "2025-02-25T17:44:54.781Z"
    }
  }
}

Bridge Statuses

Bridges progress through several statuses:
  • PENDING: Bridge has been created and is awaiting processing
  • PROCESSING: Bridge is being executed on the blockchain
  • COMPLETED: Bridge has been successfully completed
  • FAILED: Bridge failed (check failedReason for details)

Step 4: Confirm Transaction

Check Destination Wallet

Verify the USDC has been received in your Solana wallet: GET /v2/users/{userId}/wallets/balance
curl -X GET "https://production.hifibridge.com/v2/users/{userId}/wallets/balance?chain=SOLANA&currency=usdc" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response:
{
  "balances": [
    {
      "currency": "usdc",
      "chain": "SOLANA",
      "balance": "100.00",
      "availableBalance": "100.00"
    }
  ]
}
I