> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iron.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Register a hosted wallet address

> Register a wallet that is custodied by another VASP (e.g. Coinbase, Kraken) on behalf of the customer. This is required by the **Travel Rule** before the wallet can be used in **any** flow — onramp, offramp, or swap.

Provide the VASP's DID (Decentralized Identifier) so Iron can exchange travel-rule data with the custodian. Use the [Search VASPs](#tag/Addresses/operation/searchHostedVasps) endpoint to look up the correct DID.




## OpenAPI

````yaml /spec.yaml post /addresses/crypto/hosted
openapi: 3.1.0
info:
  description: The Stablecoin Payment Network
  title: Iron API - Sandbox
  version: 1.0-16949
servers:
  - url: https://api.sandbox.iron.xyz/api
security: []
tags:
  - description: >-
      Wallet and bank account registration


      Every wallet address that interacts with Iron must be registered (linked)
      to a customer **before** it can be used in any flow — onramp, offramp, or
      swap. This is a regulatory requirement under the **Travel Rule**, which
      obliges Virtual Asset Service Providers to exchange originator and
      beneficiary information for crypto transfers.


      Iron supports two wallet types:


      - **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.


      Similarly, fiat bank accounts must be registered before they can receive
      offramp payouts.
    name: Addresses
  - description: Operations on Autoramp
    name: Autoramp
  - description: Operations on Chronicle collateral
    name: ChronicleCollateral
  - description: Operations on Currencies
    name: Currencies
  - description: Operations on Customers
    name: Customer
  - description: Operations on Exchange Rate
    name: ExchangeRate
  - description: Operations on Fee Profiles
    name: FeeProfiles
  - description: Operations for Sandbox Testing
    name: Sandbox
  - description: Operations on SSE
    name: Sse
  - description: Operations on Terms and Conditions
    name: TermsAndConditions
  - description: Operations on Webhooks
    name: Webhooks
paths:
  /addresses/crypto/hosted:
    post:
      tags:
        - Addresses
      summary: Register a hosted wallet address
      description: >
        Register a wallet that is custodied by another VASP (e.g. Coinbase,
        Kraken) on behalf of the customer. This is required by the **Travel
        Rule** before the wallet can be used in **any** flow — onramp, offramp,
        or swap.


        Provide the VASP's DID (Decentralized Identifier) so Iron can exchange
        travel-rule data with the custodian. Use the [Search
        VASPs](#tag/Addresses/operation/searchHostedVasps) endpoint to look up
        the correct DID.
      operationId: registerHostedWallet
      parameters:
        - deprecated: false
          description: a UUID ensuring an address is only registered once
          explode: true
          in: header
          name: IDEMPOTENCY-KEY
          required: true
          schema:
            type: string
        - deprecated: false
          description: >-
            Optional sub-partner UUID, if provided, the wallet address will be
            registered for the sub-partner
          explode: true
          in: header
          name: X-SUB-PARTNER-ID
          required: false
          schema:
            type: string
        - $ref: '#/components/parameters/XApiVersion'
      requestBody:
        content:
          application/json; charset=utf-8:
            schema:
              $ref: '#/components/schemas/RegisterHostedWalletRequest'
        description: The hosted wallet registration request
        required: true
      responses:
        '200':
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/VerifiedAddressResponse'
          description: Registration successful
        '400':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: Bad request (e.g. invalid data)
        '401':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: Unauthorized (e.g. customer does not belong to partner)
        '409':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: Conflict - Address already exists
        '500':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: Failed to register the address
      security:
        - ApiKeyAuth: []
components:
  parameters:
    XApiVersion:
      description: >-
        Selects the API version for this request, as an ISO date (`YYYY-MM-DD`).
        Omit to use the default version (`2025-03-13`). Supported versions:
        2025-03-13, 2026-07-01.
      in: header
      name: X-API-Version
      required: false
      schema:
        type: string
  schemas:
    RegisterHostedWalletRequest:
      description: |
        Hosted wallet registration request

        Register a VASP-custodied wallet address for Travel Rule compliance
      properties:
        blockchain:
          $ref: '#/components/schemas/Blockchain'
        customer_id:
          description: The customer ID
          format: uuid
          type: string
        name:
          description: Optional display name for this wallet address
          type: string
        vasp_did:
          description: The VASP DID (decentraliced Identifier) that hosts the wallet
          type: string
        wallet_address:
          description: The wallet address at the institution
          type: string
      required:
        - customer_id
        - wallet_address
        - vasp_did
        - blockchain
      title: RegisterHostedWalletRequest
      type: object
    VerifiedAddressResponse:
      description: |
        Verified Address Response

        Response containing verified address details
      example:
        address_type: SelfHosted
        blockchain: Solana
        created_at: '2024-01-15T10:30:00.000Z'
        disabled: false
        id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
        is_self: true
        name: Primary Solana wallet
        proof_message: I hereby verify that I own this wallet address
        proof_signature: 5J9qvKhKqYbpjhCkqDnKXSp7QqLDBU5iT4VWshsqRdWKHjKdqZqKqYbpjhCkqDnKXSp...
        vasp_did: null
        wallet_address: 7QqLDBU5iT4VWshsqRdWKHjKdqZqKqYbpjhCkqDnKXSp
      properties:
        address_type:
          $ref: '#/components/schemas/AddressType'
        blockchain:
          $ref: '#/components/schemas/Blockchain'
        created_at:
          description: When the address was verified
          format: date-time
          type: string
        disabled:
          description: Whether the address is disabled
          type: boolean
        id:
          description: The ID of the verified address
          format: uuid
          type: string
        is_self:
          description: >-
            Whether the wallet belongs to the customer themselves (true) or a
            third party
          type: boolean
        name:
          description: Optional display name for this wallet address
          type: string
        proof_message:
          description: The proof message
          type: string
        proof_signature:
          description: The proof signature
          type: string
        vasp_did:
          description: The VASP DID (decentralized Identifier) for hosted wallets
          type: string
        wallet_address:
          description: The wallet address
          type: string
      required:
        - id
        - created_at
        - wallet_address
        - address_type
        - blockchain
        - disabled
        - is_self
      title: VerifiedAddressResponse
      type: object
    Blockchain:
      description: |
        Blockchain

        A type of blockchain
      enum:
        - Solana
        - Ethereum
        - Polygon
        - Arbitrum
        - Base
        - Stellar
        - Citrea
        - Plasma
        - Avalanche
        - Moca
        - Tempo
        - Tron
        - Bsc
      type: string
    AddressType:
      enum:
        - Hosted
        - SelfHosted
      type: string
  securitySchemes:
    ApiKeyAuth:
      description: API Key
      in: header
      name: X-API-Key
      type: apiKey

````