Skip to main content

Verify a self-hosted crypto address

Submit a signature proving ownership of your cryptocurrency wallet. The verification process requires signing a specific message with your wallet’s private key.
1

Format the proof message:

I am verifying ownership of the wallet address {wallet_address}  as customer {customer_id} for UAB Iron Network. This message was signed on {date} to confirm my control over this wallet.
Replace:
  • {customer_id} with your customer ID
  • {today's_date} with today’s date in DD/MM/YYYY format using UTC timezone
Example:
I am verifying ownership of the wallet address 0x742d35Cc6634C0532925a3b844Bc454e4438f44e as customer 4b85d15e-f343-41c0-809c-85314cae2fa6 for UAB Iron Network. This message was signed on 23/05/2025 to confirm my control over this wallet.
2

Sign this message using your wallet's private key

3

Submit the proof:

curl -X POST https://api.sandbox.iron.xyz/api/addresses/crypto/selfhosted \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 123e4567-e89b-12d3-a456-426614174000" \
-H "X-API-Key: $API_KEY" \
-d '{
  "customer_id": "4b85d15e-f343-41c0-809c-85314cae2fa6",
  "message": "I am verifying ownership of the wallet address 0x742d35Cc6634C0532925a3b844Bc454e4438f44e as customer 4b85d15e-f343-41c0-809c-85314cae2fa6 for UAB Iron Network. This message was signed on 03/01/2024 to confirm my control over this wallet.",
  "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  "signature": "0x1234567890abcdef1234567890abcdef12345678900xa5f1751b75a28c12694f02590d29b8cdd68b4f5c783273a75823fc6cfeaa702f1a65fa7c1838ae799fe755c92443cb51631d000922329cdd2ce799eee75f42531babcdef1234567890abcdef",
  "blockchain": "ethereum"
}'
NoteThe message must use today’s date in UTC timezone. Messages with incorrect dates will be rejected.

Register a hosted wallet

When sending funds from an Autoramp to a wallet at another institution, you need to register the wallet’s travel rule address. No minimum amount threshold applies. Please make sure we have this institution registered in our travel rule system by talking to us. Submit the wallet’s travel rule address and institution details:
curl -X POST https://api.sandbox.iron.xyz/api/addresses/crypto/hosted \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 123e4567-e89b-12d3-a456-426614174000" \
-H "X-API-Key: $API_KEY" \
-d '{
  "customer_id": "4b85d15e-f343-41c0-809c-85314cae2fa6",
  "wallet_address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  "travel_address": "traddr_123abc",
  "first_name": "John",
  "last_name": "Doe",
  "blockchain": "ethereum"
}'
The registration requires:
  • Wallet address at the institution
  • Travel rule address for information exchange
  • Institution’s name and identifier
  • The wallet must be registered in your name at the institution
  • First and last name matching your verified identity
  • The blockchain the address is on (ethereum or solana)
NoteThe name associated with the wallet at the other institution must exactly match your verified identity in our system.

List verified addresses

Retrieve all verified cryptocurrency addresses for a customer:
GET https://api.sandbox.iron.xyz/api/addresses/crypto/signatures/{customer_id}
Optionally filter by address type using the filter query parameter:
  • ?filter=hosted: Only hosted wallet addresses
  • ?filter=self_hosted: Only self-hosted wallet addresses
  • No filter (or ?filter=all): All addresses
The response includes details about each verified address:
  • Address ID
  • Wallet address
  • Address type (hosted or self-hosted)
  • Blockchain
  • Creation timestamp
  • For hosted wallets: travel rule address and name details
  • For self-hosted wallets: proof message and signature
Common error scenarios:
  • Invalid proof message format
  • Incorrect date in proof message
  • Invalid signature
  • Name mismatch with verified identity
  • Invalid travel rule address format
  • Wallet address already registered