What Are Blockchain Addresses?

Blockchain addresses are on-chain deposit addresses that allow external parties to send crypto assets to an OpenFX account. They are sub-resources of crypto accounts, managed under /accounts/{accountId}/blockchain-addresses. When you create a blockchain address, the system generates the on-chain address automatically. You cannot specify a custom address. Share the generated address with senders to receive deposits. All blockchain address IDs use the ba_ prefix (e.g., ba_01953e1a5f4b7201).

Supported Chains and Assets

ChainAssetsAddress Format
ethereumUSDC, USDT, EURC, PYUSD0x prefixed hex (42 characters)
solanaUSDC, USDTBase58 encoded (32-44 characters)
tronUSDC, USDTBase58 T prefixed (34 characters)
baseUSDC, EURC0x prefixed hex (42 characters)
polygonUSDC, USDT0x prefixed hex (42 characters)
inkUSDC0x prefixed hex (42 characters)
suiUSDC0x prefixed hex (66 characters)
The chain and asset specified when creating a blockchain address must match the chain and asset of the parent account. You cannot create an Ethereum USDC address on a Solana USDT account.

Creating a Blockchain Address

Ethereum USDC Address

curl -X POST https://sandbox.api.openfx.com/v1/accounts/acc_01953e1a5f4b7010/blockchain-addresses \
  -H "Authorization: Bearer $API_KEY" \
  -H "X-Signature: $SIGNATURE" \
  -H "X-Timestamp: $TIMESTAMP" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "chain": "ethereum",
    "asset": "USDC"
  }'
Response:
{
  "id": "ba_01953e1a5f4b7201",
  "accountId": "acc_01953e1a5f4b7010",
  "chain": "ethereum",
  "asset": "USDC",
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD38",
  "status": "active",
  "createdAt": "2026-02-23T12:00:00Z"
}

Solana USDT Address

curl -X POST https://sandbox.api.openfx.com/v1/accounts/acc_01953e1a5f4b7020/blockchain-addresses \
  -H "Authorization: Bearer $API_KEY" \
  -H "X-Signature: $SIGNATURE" \
  -H "X-Timestamp: $TIMESTAMP" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "chain": "solana",
    "asset": "USDT"
  }'
Response:
{
  "id": "ba_01953e1a5f4b7202",
  "accountId": "acc_01953e1a5f4b7020",
  "chain": "solana",
  "asset": "USDT",
  "address": "7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj",
  "status": "active",
  "createdAt": "2026-02-23T12:00:00Z"
}

Status Lifecycle

Blockchain addresses follow a two-state lifecycle:
StatusDescription
activeAddress is live and can receive deposits. On-chain transactions to this address will be credited to the account.
suspendedAddress is temporarily disabled. Deposits sent to a suspended address may not be credited until the address is reactivated.
Unlike account numbers, blockchain addresses do not have a closed terminal state. Once generated, the on-chain address exists permanently on the blockchain. Suspension only affects the platform’s processing of incoming deposits.

Listing Blockchain Addresses

Retrieve all blockchain addresses for a crypto account:
curl -X GET https://sandbox.api.openfx.com/v1/accounts/acc_01953e1a5f4b7010/blockchain-addresses \
  -H "Authorization: Bearer $API_KEY" \
  -H "X-Signature: $SIGNATURE" \
  -H "X-Timestamp: $TIMESTAMP"

Receiving Crypto Deposits

The end-to-end flow for receiving crypto deposits:
  1. Create a crypto account with POST /accounts (type wallet, specifying asset and chain).
  2. Create a blockchain address with POST /accounts/{accountId}/blockchain-addresses.
  3. Share the address field with the sender. This is the on-chain address to which they should send funds.
  4. The sender initiates an on-chain transfer to the address.
  5. After sufficient block confirmations, OpenFX detects the deposit and creates an inbound payment record.
  6. An inbound_payment.received webhook fires.
  7. The account balance is credited with the deposited amount.
For crypto deposits that cannot be automatically attributed to a customer (e.g., deposits from unknown addresses), the inbound payment enters a requires_attribution status. Use the crypto inbound attribution endpoint (POST /payments/crypto/inbound/{id}/attribute) to manually assign the deposit.

Deposit Instructions

For a unified view of all deposit methods on an account, including blockchain addresses, use:
curl -X GET https://sandbox.api.openfx.com/v1/accounts/acc_01953e1a5f4b7010/deposit-instructions \
  -H "Authorization: Bearer $API_KEY" \
  -H "X-Signature: $SIGNATURE" \
  -H "X-Timestamp: $TIMESTAMP"
Each blockchain address appears as a deposit instruction with kind: "blockchain_address" and the full address details in the details field.

API Reference