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

# Receiving assets

> Receive crypto deposits with deposit attribution and address poisoning protection.

export const ImageCarousel = ({images, perView = 3, children}) => {
  const [page, setPage] = useState(0);
  const [imgH, setImgH] = useState(0);
  const stripRef = useRef(null);
  const THUMB_MAX_WIDTH = 220;
  const PEEK_WIDTH = 34;
  useEffect(() => {
    const strip = stripRef.current;
    if (!strip) return;
    const measure = () => {
      const box = strip.querySelector("[data-carousel-imgbox]");
      if (box && box.clientHeight) setImgH(box.clientHeight);
    };
    measure();
    const ro = new ResizeObserver(measure);
    ro.observe(strip);
    return () => ro.disconnect();
  }, []);
  const fromChildren = React.Children.toArray(children).map(c => c && c.props && c.props.src ? {
    src: c.props.src,
    alt: c.props.alt
  } : null).filter(Boolean);
  const items = fromChildren.length ? fromChildren : images || [];
  if (!items.length) return null;
  const count = items.length;
  const columns = Math.min(perView, count);
  const totalPages = Math.ceil(count / columns);
  const showControls = totalPages > 1;
  const goTo = p => setPage((p % totalPages + totalPages) % totalPages);
  const prev = () => goTo(page - 1);
  const next = () => goTo(page + 1);
  const start = page * columns;
  const visible = items.slice(start, start + columns);
  const prevPeek = start > 0 ? items[start - 1] : null;
  const nextPeek = start + columns < count ? items[start + columns] : null;
  const renderPeek = (img, side) => {
    if (!img) return null;
    const isLeft = side === "left";
    return <button type="button" onClick={isLeft ? prev : next} aria-hidden="true" tabIndex={-1} style={{
      flex: `0 0 ${PEEK_WIDTH}px`,
      width: PEEK_WIDTH + "px",
      alignSelf: imgH ? "flex-start" : "stretch",
      height: imgH ? imgH + "px" : undefined,
      border: 0,
      padding: 0,
      cursor: "pointer",
      opacity: 0.5,
      borderRadius: isLeft ? "10px 0 0 10px" : "0 10px 10px 0",
      backgroundImage: `url("${img.src}")`,
      backgroundRepeat: "no-repeat",
      backgroundSize: "auto 100%",
      backgroundPosition: isLeft ? "right center" : "left center",
      WebkitMaskImage: `linear-gradient(to ${isLeft ? "left" : "right"}, #000 15%, transparent 100%)`,
      maskImage: `linear-gradient(to ${isLeft ? "left" : "right"}, #000 15%, transparent 100%)`
    }} />;
  };
  const arrowStyle = {
    flex: "0 0 auto",
    width: "30px",
    height: "30px",
    borderRadius: "50%",
    border: "1px solid var(--ad-border, #e4e5e7)",
    background: "var(--background, #fff)",
    fontSize: "16px",
    lineHeight: "28px",
    textAlign: "center",
    cursor: "pointer",
    padding: 0
  };
  return <div style={{
    outline: "none",
    margin: "1.5rem 0"
  }} role={showControls ? "group" : undefined} aria-label={showControls ? "Screenshot carousel" : undefined} aria-roledescription={showControls ? "carousel" : undefined}>
      <div style={{
    display: "flex",
    alignItems: "center",
    gap: "10px"
  }}>
        {showControls && <button type="button" onClick={prev} aria-label="Previous screenshots" style={arrowStyle}>
            ‹
          </button>}

        <div ref={stripRef} style={{
    display: "flex",
    flexWrap: "nowrap",
    alignItems: "flex-start",
    gap: "14px",
    justifyContent: "center",
    flex: 1
  }}>
          {renderPeek(prevPeek, "left")}
          {}
          {Array.from({
    length: columns
  }).map((_, i) => {
    const img = visible[i];
    const slotStyle = {
      margin: 0,
      flex: "1 1 0",
      maxWidth: THUMB_MAX_WIDTH + "px",
      minWidth: 0
    };
    if (!img) {
      return <div key={start + i} aria-hidden="true" style={{
        ...slotStyle,
        visibility: "hidden"
      }} />;
    }
    return <div key={start + i} style={slotStyle}>
                <span data-carousel-imgbox style={{
      display: "block"
    }}>
                  <img src={img.src} alt={img.alt ?? ""} style={{
      display: "block",
      width: "100%",
      height: "auto",
      margin: 0,
      borderRadius: "10px",
      border: "1px solid var(--ad-border, #e4e5e7)"
    }} />
                </span>
                {img.alt && <div style={{
      marginTop: "6px",
      fontSize: "12px",
      lineHeight: 1.4,
      color: "var(--ad-muted, #6b7280)",
      textAlign: "center"
    }}>
                    {img.alt}
                  </div>}
              </div>;
  })}
          {renderPeek(nextPeek, "right")}
        </div>

        {showControls && <button type="button" onClick={next} aria-label="Next screenshots" style={arrowStyle}>
            ›
          </button>}
      </div>

      {showControls && <div style={{
    textAlign: "center",
    marginTop: "8px",
    fontSize: "12px",
    color: "var(--ad-muted, #6b7280)"
  }}>
          {start + 1}
          {visible.length > 1 ? "–" + (start + visible.length) : ""} of {count}
        </div>}
    </div>;
};

export const Check = () => <Icon icon="check" color="#049159" />;
export const Cross = () => <Icon icon="x" color="#dd0000" />;

## Creating a deposit address

To receive a deposit of a given asset, vault members need a deposit address for that asset. Creating a deposit address is immediate and requires neither quorum nor Anchorage Digital approval.

<Steps>
  <Step title="Navigate to the vault">
    Go to the desired vault and tap **Deposit**, then select the asset.
  </Step>

  <Step title="Select or create a wallet">
    Tap **Create new wallet** or tap on an existing wallet. To create a new address, tap the icon in the top right corner and follow the prompts.
  </Step>

  <Step title="Share the address">
    Copy and share the address or QR code with the sending party.
  </Step>
</Steps>

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/deposit-asset-selection.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=469113d93930704ed7992e5a3c9c139c" alt="Vault page for selecting the asset to deposit" width="828" height="1792" data-path="knowledge-base/images/screenshots/deposit-asset-selection.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/deposit-destination.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=6cbdb051b4928155d151ae85a1191a56" alt="Deposit destination screen for choosing or creating a wallet" width="828" height="1792" data-path="knowledge-base/images/screenshots/deposit-destination.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/deposit-wallet-selection.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=a1592aa15d3d29cca4a8bd8f4bc92dab" alt="Wallet selection screen for the deposit" width="828" height="1792" data-path="knowledge-base/images/screenshots/deposit-wallet-selection.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/deposit-address-detail.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=72d64a772f66e042f215bb87841b250e" alt="Deposit address detail screen with the address and QR code" width="828" height="1792" data-path="knowledge-base/images/screenshots/deposit-address-detail.png" />
</ImageCarousel>

<Note>
  It is also possible to create deposit addresses in the web dashboard. Members of the vault will receive a notification every time a deposit is made.
</Note>

## Deposit attribution

In compliance with US federal regulations, Singapore regulations, and global anti-money laundering (AML) requirements, Anchorage Digital requires additional information related to deposit activities to fulfill "Know Your Transaction" (KYT) obligations.

If Anchorage Digital is unable to automatically attribute a pending deposit, one or more of your authorized users will be notified via email. Click **Review and attribute deposits** or use the link provided to begin attributing pending deposits in the web dashboard.

Until you attribute the originator and screening clears, an unattributed deposit appears in your total balance but isn't available to withdraw. A received or "complete" deposit isn't the same as available funds—attribution is what releases them.

<Warning>
  Prompt action on deposit attribution requests will help avoid withdrawal delays for deposits that cannot be automatically attributed.
</Warning>

Anchorage Digital has built industry-first technology to automate this process and minimize inconvenience. For questions, reach out to your relationship manager or client experience manager.

## Address poisoning protection

Address poisoning is a social engineering tactic where attackers generate look-alike addresses to trick clients into sending funds to the wrong wallet.

Anchorage Digital proactively monitors incoming deposits for patterns consistent with address poisoning. When a potentially malicious deposit is detected, it is flagged in the platform so you are alerted before reusing or trusting that address elsewhere.

### Deposits from a flagged address

When a suspicious incoming deposit is detected, the address is flagged in the deposit details. You will not be able to copy the address until you review the warning and additional details about why it was flagged. This protection is available on both web and iOS.

### Withdrawals to a flagged address

If you attempt to withdraw to a flagged address, an alert appears before you can continue. Review the details carefully before deciding whether to proceed or cancel the operation. The alert also appears on the review page and remains visible in the operation details after submission.

### Trusted destinations with a flagged address

If you attempt to add a flagged address as a trusted destination, an alert appears before you can continue. Review the details carefully before deciding whether to proceed or cancel. The alert also appears on the review page and remains visible in the operation details after submission.

## Supported assets

Anchorage Digital regularly adds new digital asset support to help clients stay ahead of fast-evolving crypto markets.

To search for supported assets in the iOS app, go to **Settings**, then tap **Supported assets**. If an asset is not yet supported, you may submit an asset support request.

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/dnKKK5u4vRePxCW5/knowledge-base/images/screenshots/supported-assets-list.png?fit=max&auto=format&n=dnKKK5u4vRePxCW5&q=85&s=a2019b934650d4530dcd935acb18b9c2" alt="Supported assets screen with a search field and asset list" width="828" height="1792" data-path="knowledge-base/images/screenshots/supported-assets-list.png" />
</ImageCarousel>

### Finding a token's contract address

Block explorers allow you to view and search the blockchain for transactions, addresses, tokens, and other activity.

1. Visit the explorer for the token's network:
   * Aptos: [explorer.aptoslabs.com](https://explorer.aptoslabs.com/?network=mainnet)
   * Arbitrum: [arbiscan.io](https://arbiscan.io/)
   * Base: [basescan.org](https://basescan.org/)
   * Ethereum: [etherscan.io](https://etherscan.io/)
   * Optimism: [optimistic.etherscan.io](https://optimistic.etherscan.io/)
   * Plume: [explorer.plumenetwork.xyz](https://explorer.plumenetwork.xyz/)
   * Polygon: [polygonscan.com](https://polygonscan.com/)
   * Solana: [solscan.io](https://solscan.io/)
   * ZKSync: [explorer.zksync.io](https://explorer.zksync.io/)
2. Search for the token using its name or symbol.
3. The contract address will be clearly indicated on the token page.

### Assets supported (Anchorage Digital Bank — US)

| Asset    | Symbol | Custody   | Trading (Chat) | Trading (Web) | Trading (API) | API Operations | API Transfers | Staking   |
| -------- | ------ | --------- | -------------- | ------------- | ------------- | -------------- | ------------- | --------- |
| Aptos    | APT    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Check /> |
| Arweave  | AR     | <Check /> | <Check />      | <Check />     | <Check />     | <Cross />      | <Cross />     | <Cross /> |
| Bitcoin  | BTC    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Cross /> |
| Dogecoin | DOGE   | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Cross /> |
| Ethereum | ETH    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Check /> |
| Flow     | FLOW   | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Cross /> |
| Filecoin | FIL    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Cross /> |
| Litecoin | LTC    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Cross /> |
| Ripple   | XRP    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Cross /> |
| Solana   | SOL    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Check /> |
| Stacks   | STX    | <Check /> | <Check />      | <Check />     | <Cross />     | <Cross />      | <Cross />     | <Cross /> |
| Sui      | SUI    | <Check /> | <Check />      | <Check />     | <Check />     | <Check />      | <Check />     | <Cross /> |

For a complete list of trading pairs available via web and API, contact your relationship manager or account executive.

## Stellar asset allowlisting

On the Stellar network, your wallet must first allowlist any asset other than the native currency, XLM. This is a protocol-enforced permission system required for receiving non-native assets. Assets that require allowlisting appear in the **Allowed assets** section of your wallet; assets that don't require it need no additional setup.

When you create a new Stellar wallet, Anchorage Digital automatically sponsors the required XLM reserve and allowlists every currently supported Stellar asset that requires it, so no setup is needed. You only need to allowlist manually to add newer assets to an existing wallet.

**Reserve requirements:**

* Minimum wallet balance: 1 XLM
* Each allowlisted asset increases your wallet's reserve balance by 0.5 XLM
* A nominal amount of XLM is also needed to cover transaction fees

Ensure your Stellar wallet has sufficient XLM to cover the reserve requirements before allowlisting.

<Warning>
  Always allowlist your wallet before receiving an asset that requires it. Incoming transfers of non-allowlisted assets may fail on-chain.
</Warning>

### Allowlisting a Stellar asset

From the web dashboard, navigate to the desired wallet, then select the **Settings** tab. Select the **Status** toggle beside any of the supported assets to initiate the on-chain action to allowlist your wallet to receive that asset.

Removing an allowlisted asset can be done similarly, and doing so will return the 0.5 XLM reserve to your available balance.
