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

# Register a deterministic deposit address for a wallet

> Returns the deterministic on-chain deposit address for a wallet and records it so incoming deposits are watched and credited. Pass the wallet and optionally an existing subaccount id; when creating a new subaccount (subaccount omitted or 0) a non-zero manager_id is required. Repeated calls return the same cached address and keep it alive, while new registrations are rate limited per rolling window; unused addresses are dropped after 7 days.



## OpenAPI

````yaml /openapi.json post /public/register_deposit_address
openapi: 3.1.0
info:
  title: Derive v3 API
  version: 0.2.0
  description: JSON-RPC 2.0 methods, served over WebSocket and HTTP POST.
servers:
  - url: https://api.derive.xyz/v3
    description: Production (HTTP POST base)
  - url: https://testnet.api.derive.xyz/v3
    description: Testnet (HTTP POST base)
security: []
tags:
  - name: Subaccounts
    description: >-
      List, inspect, and label subaccounts, portfolios, positions, and
      collateral.
  - name: Session Keys
    description: Register, edit, and list delegated signing keys.
  - name: Account
    description: Wallet-level account information and settings.
  - name: Orderbook
    description: Place, replace, cancel, and query orders, trigger orders, and algos.
  - name: RFQ
    description: 'Request-for-quote: send RFQs, quote, and execute block trades.'
  - name: Vault Shareholders
    description: >-
      Deposit into and withdraw from vaults, and track shares, requests, and
      performance.
  - name: Vault Curators
    description: >-
      Create and operate curated vaults: settle deposit and withdrawal requests,
      and manage vault metadata.
  - name: History
    description: >-
      Per-account historical records: orders, trades, transfers, and
      settlements.
  - name: Market Maker Protection
    description: Configure, read, and reset market-maker protection.
  - name: Transfers & Withdrawals
    description: Move collateral between subaccounts, to other wallets, and on-chain.
  - name: System
    description: Rate limits and transaction lookups.
  - name: Market Data
    description: Instruments, currencies, tickers, and market-wide feeds.
  - name: Referrals
    description: Referral codes and program performance.
  - name: Other
    description: Uncategorized.
paths:
  /public/register_deposit_address:
    post:
      tags:
        - Transfers & Withdrawals
      summary: Register a deterministic deposit address for a wallet
      description: >-
        Returns the deterministic on-chain deposit address for a wallet and
        records it so incoming deposits are watched and credited. Pass the
        wallet and optionally an existing subaccount id; when creating a new
        subaccount (subaccount omitted or 0) a non-zero manager_id is required.
        Repeated calls return the same cached address and keep it alive, while
        new registrations are rate limited per rolling window; unused addresses
        are dropped after 7 days.
      operationId: public_register_deposit_address
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterDepositAddressParams'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterDepositAddressResult'
        default:
          description: JSON-RPC error (see Error Codes)
components:
  schemas:
    RegisterDepositAddressParams:
      type: object
      required:
        - deposit_type
        - wallet
      properties:
        deposit_type:
          $ref: '#/components/schemas/DepositType'
          description: >-
            Which factory to register against. Required: the same `(wallet,
            subaccount, manager)` has a distinct escrow address per factory, so
            callers must always be explicit about which flow they want.
        manager_id:
          description: >-
            Manager the deposit routes under. Required (non-zero) when creating
            a new subaccount (`subaccount_id` omitted or 0); must be 0 or
            omitted for an existing subaccount — it salts the deposit address,
            so a nonzero value would mint a distinct escrow for the same
            destination.
          default: null
          type:
            - integer
            - 'null'
          format: uint32
          minimum: 0
        subaccount_id:
          default: 0
          type: integer
          format: int64
        wallet:
          description: Wallet address to watch for deposits.
          type: string
    RegisterDepositAddressResult:
      type: object
      required:
        - deposit_address
        - deposit_type
        - wallet
      properties:
        deposit_address:
          type: string
        deposit_type:
          $ref: '#/components/schemas/DepositType'
        manager_id:
          type:
            - integer
            - 'null'
          format: uint32
          minimum: 0
        subaccount_id:
          type:
            - integer
            - 'null'
          format: int64
        wallet:
          type: string
    DepositType:
      description: >-
        Which cex-style deposit factory an address/deposit belongs to. `Slow`
        credits the depositor's own subaccount on-chain; `Fast` pools every
        deposit into an admin-set subaccount and the real owner is credited
        off-chain from the factory's `DepositProcessed` events.
      type: string
      enum:
        - slow
        - fast

````

## Related topics

- [Programmatic Onboarding](/getting-started/depositing.md)
- [Register a scoped session key](/api-reference/session-keys/register-a-scoped-session-key.md)
- [Create a new curated vault](/api-reference/vault-curators/create-a-new-curated-vault.md)
