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

# Deposit and Withdraw

> Open deposit and withdraw modals for cross-chain transfers.

## Overview

Use `openDeposit` and `openWithdraw` from `useInterwovenKit()` to launch the
built-in deposit and withdraw flows. These modals guide users through moving
assets between chains without you rebuilding the UI.

## Basic Usage

```tsx theme={null}
import { useInterwovenKit } from '@initia/interwovenkit-react'

function TransferButtons() {
  const { openDeposit, openWithdraw } = useInterwovenKit()

  return (
    <>
      <button
        onClick={() =>
          openDeposit({ denoms: ['uinit'], chainId: 'interwoven-1' })
        }
      >
        Open deposit
      </button>
      <button
        onClick={() =>
          openWithdraw({ denoms: ['uinit'], chainId: 'interwoven-1' })
        }
      >
        Open withdraw
      </button>
    </>
  )
}
```

## Defaults and Requirements

* `chainId` defaults to the current chain.
* `recipientAddress` defaults to your connected wallet address.
* `srcOptions` and `dstOptions` default to assets that match the selected symbol
  across supported chains.
* A wallet must be connected, or the call throws an error.
* `denoms` must be a non-empty array.

## Optional Asset Options

Use `srcOptions` or `dstOptions` to limit the asset list shown in the modal.

## Full Example

```tsx theme={null}
import { useInterwovenKit } from '@initia/interwovenkit-react'

function ScopedTransferButtons() {
  const { address, openDeposit, openWithdraw } = useInterwovenKit()

  const assetOptions = [
    {
      denom: 'uinit',
      chainId: 'interwoven-1',
    },
    {
      denom: 'uinit',
      chainId: 'my-rollup-1',
    },
  ]

  if (!address) return null

  return (
    <>
      <button
        onClick={() =>
          openDeposit({
            denoms: ['uinit'],
            chainId: 'interwoven-1',
            srcOptions: assetOptions,
            recipientAddress: address,
          })
        }
      >
        Deposit INIT
      </button>
      <button
        onClick={() =>
          openWithdraw({
            denoms: ['uinit'],
            chainId: 'interwoven-1',
            dstOptions: assetOptions,
            recipientAddress: address,
          })
        }
      >
        Withdraw INIT
      </button>
    </>
  )
}
```

## Related Reference

See [`useInterwovenKit`](../../references/hooks/use-interwovenkit) for parameter
signatures and types.
