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

# private/register_withdraw_address

> Returns the Ethereum withdraw address that forwards a withdrawal of a forwarded token to a recipient on its home chain, and records it so the forwarder watches it. Takes the wallet, the destination chain id (a key of the route file's withdraw_forwarding section; Solana is 101, devnet 103) and the recipient. On an EVM chain the recipient must be the account wallet; on Solana it must be a base58 wallet address, which is screened. Repeated calls return the same address; new registrations are rate limited per rolling window. Withdraw to the returned address with private/withdraw. Session keys without unbounded Admin scope must first add it with private/update_whitelisted_recipients.



## OpenAPI

````yaml /openapi.json post /private/register_withdraw_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: Liquidations
    description: >-
      Open a Dutch auction against a breaching subaccount, quote the auctions
      running right now, bid on them, and review past ones.
  - 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: Onchain Actions
    description: >-
      L1 onchain actions submitted via OnchainActionManager: register deposit
      addresses, list pending deposits, and inspect onchain action history.
  - name: System
    description: Rate limits, transaction lookups, and live incidents.
  - name: Market Data
    description: Instruments, currencies, tickers, and market-wide feeds.
  - name: Maker Scoring
    description: Maker programs, score breakdowns, and detailed scoring snapshots.
  - name: Referrals
    description: Referral codes and program performance.
  - name: Other
    description: Uncategorized.
paths:
  /private/register_withdraw_address:
    post:
      tags:
        - Onchain Actions
      summary: private/register_withdraw_address
      description: >-
        Returns the Ethereum withdraw address that forwards a withdrawal of a
        forwarded token to a recipient on its home chain, and records it so the
        forwarder watches it. Takes the wallet, the destination chain id (a key
        of the route file's withdraw_forwarding section; Solana is 101, devnet
        103) and the recipient. On an EVM chain the recipient must be the
        account wallet; on Solana it must be a base58 wallet address, which is
        screened. Repeated calls return the same address; new registrations are
        rate limited per rolling window. Withdraw to the returned address with
        private/withdraw. Session keys without unbounded Admin scope must first
        add it with private/update_whitelisted_recipients.
      operationId: private_register_withdraw_address
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterWithdrawAddressParams'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterWithdrawAddressResult'
        default:
          description: JSON-RPC error (see Error Codes)
components:
  schemas:
    RegisterWithdrawAddressParams:
      type: object
      required:
        - chain_id
        - recipient
        - wallet
      properties:
        chain_id:
          description: >-
            Destination chain: a key of the route file's `withdraw_forwarding`
            section. Solana is 101 (devnet 103); every other chain is EVM.
          type: integer
          format: uint64
          minimum: 0
        recipient:
          description: >-
            Destination address. On an EVM chain it must be `wallet`. On Solana,
            a base58 wallet address (not a token or program-derived account).
          type: string
        wallet:
          description: The account wallet.
          type: string
    RegisterWithdrawAddressResult:
      type: object
      required:
        - chain_id
        - recipient
        - recipient_display
        - routes
        - withdraw_address
      properties:
        chain_id:
          type: integer
          format: uint64
          minimum: 0
        recipient:
          description: '`0x` bytes32 the factory forwards to.'
          type: string
        recipient_display:
          description: '`recipient` normalised: checksummed on EVM, base58 on Solana.'
          type: string
        routes:
          description: The tokens this address forwards.
          type: array
          items:
            $ref: '#/components/schemas/ForwardedToken'
        withdraw_address:
          description: >-
            Withdraw a forwarded token to this Ethereum address to send it on to
            `recipient` on `chain_id`.
          type: string
    ForwardedToken:
      type: object
      required:
        - bridge_type
        - symbol
        - token
      properties:
        bridge_type:
          description: '`native-oft`, `oft` or `ccip`.'
          type: string
        symbol:
          type: string
        token:
          description: Ethereum token to withdraw.
          type: string

````

## Related topics

- [private/get_withdraw_addresses](/api-reference/onchain-actions/privateget_withdraw_addresses.md)
- [Changelog](/changelog.md)
- [Contracts](/getting-started/contracts.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.