> ## 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 self-attested wallet address

> Register a self-hosted wallet that the customer **declares** they control, without
providing a cryptographic signature. Intended for direct customers who cannot sign a
proof-of-ownership message from their custody UI (e.g. Fireblocks).

Like the signed self-hosted flow, the wallet must be registered before it can be used
in any flow — onramp, offramp, or swap — under the **Travel Rule**. This endpoint is
currently limited to customers in the **US** and **Rest of World** jurisdictions.



## OpenAPI

````yaml /spec.yaml post /addresses/crypto/attested
openapi: 3.1.0
info:
  description: The Stablecoin Payment Network
  title: Iron API - Sandbox
  version: 1.0-16374
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/attested:
    post:
      tags:
        - Addresses
      summary: Register a self-attested wallet address
      description: >-
        Register a self-hosted wallet that the customer **declares** they
        control, without

        providing a cryptographic signature. Intended for direct customers who
        cannot sign a

        proof-of-ownership message from their custody UI (e.g. Fireblocks).


        Like the signed self-hosted flow, the wallet must be registered before
        it can be used

        in any flow — onramp, offramp, or swap — under the **Travel Rule**. This
        endpoint is

        currently limited to customers in the **US** and **Rest of World**
        jurisdictions.
      operationId: registerAttestedWalletAddress
      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
      requestBody:
        content:
          application/json; charset=utf-8:
            schema:
              $ref: '#/components/schemas/RegisterSelfAttestedWalletRequest'
        description: The self-attested wallet registration request
        required: true
      responses:
        '200':
          content:
            application/json; charset=utf-8:
              schema:
                $ref: '#/components/schemas/VerifiedAddressResponse'
          description: POST Self-Attested Wallet Succeeded
        '400':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: POST Self-Attested Wallet Failed (Bad Request)
        '401':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: POST Self-Attested Wallet Failed (Unauthorized)
        '403':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: >-
            POST Self-Attested Wallet Failed (Forbidden - e.g. region not
            supported, customer suspended)
        '404':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: POST Self-Attested Wallet Failed (Not Found)
        '409':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: POST Self-Attested Wallet Failed (Conflict - Address Already Exists)
        '500':
          content:
            application/json; charset=utf-8:
              schema:
                type: string
          description: POST Self-Attested Wallet Failed (Internal Error)
      security:
        - ApiKeyAuth: []
components:
  schemas:
    RegisterSelfAttestedWalletRequest:
      description: >-
        Self-attested wallet registration request


        Register a self-hosted wallet the customer declares as their own,
        **without** a

        cryptographic signature. For direct customers who can't sign from a
        custody UI

        (e.g. Fireblocks). Scoped to US and RoW customers.
      properties:
        address:
          description: The address of the wallet
          type: string
        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
      required:
        - blockchain
        - customer_id
        - address
      title: RegisterSelfAttestedWalletRequest
      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

````