- Self-hosted wallets — the customer controls the private key. Registration requires a signed proof-of-ownership message.
- Hosted wallets — the wallet is custodied by another VASP (e.g. Coinbase, Kraken). Registration requires the VASP’s DID so Iron can exchange travel-rule data with the custodian.
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.Format the proof message:
{customer_id}with your customer ID{wallet_address}with your wallet address{date}with today’s date in DD/MM/YYYY format using UTC timezone
The date must be today in DD/MM/YYYY using the UTC timezone (not your local timezone, not a stale year from a template). If you sign before UTC midnight and submit after, re-sign.
The message must be byte-identical between sign-time and POST-time (no rewording, no trailing newline, no whitespace edits), and the
customer_id inside the message must equal the customer_id in the request body. EVM signatures use standard EIP-191 personal_sign (the default for cast wallet sign, ethers signMessage, viem signMessage); smart-contract wallets verify via EIP-1271. You can add additional text before or after the required message and verification still succeeds.Register a hosted wallet
When the recipient wallet is custodied by another institution (VASP) — for example Coinbase, Kraken, or Binance — you need to register the wallet address along with the institution’s DID so Iron can exchange travel-rule data with the custodian.Search for the VASP (wallet provider):
First, find the DID (Decentralized Identifier) of the institution that hosts the wallet:Response:
customer_id: The customer’s UUIDwallet_address: The wallet address at the institutionvasp_did: The DID (Decentralized Identifier) of the institution hosting the wallet (obtained from the VASP search)blockchain: The blockchain the address is on (e.g.Ethereum,Solana,Polygon,Base,Arbitrum)
The wallet must be registered in your name at the hosting institution. Iron will use the VASP DID to exchange travel rule information with the institution.
List verified addresses
Retrieve all verified cryptocurrency addresses for a customer:filter query parameter:
?filter=Hosted: Only hosted wallet addresses?filter=SelfHosted: Only self-hosted wallet addresses?filter=Allor no filter: All addresses (default)
id: Address IDwallet_address: The wallet addressaddress_type: “Hosted” or “SelfHosted”blockchain: The blockchain (e.g. “Ethereum”, “Solana”)created_at: Registration timestampdisabled: Whether the address is disabledvasp_did: (For hosted wallets only) The VASP’s DIDproof_message: (For self-hosted wallets only) The verification messageproof_signature: (For self-hosted wallets only) The signature
- Invalid proof message format
- Incorrect date in proof message (must be today’s date in DD/MM/YYYY format)
- Invalid signature
- Wallet address already registered
- Invalid blockchain/address format mismatch
- Customer ID does not belong to your partner
Disable or enable an address
You can disable or enable a verified crypto address. Disabled addresses cannot be used for transactions.Addresses that were automatically disabled due to high risk (e.g., flagged by Chainalysis) cannot be re-enabled.

