> ## 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.

# Sending assets

> Withdraw assets from vaults, use the gas station, and batch endorsements.

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>;
};

## Withdrawals

Withdrawals fall under the vault default policy or withdrawal policy (if configured). Both administrators and vault members included in the policy's quorum can initiate and approve withdrawals.

You may initiate withdrawals in the iOS app or the web dashboard. If initiated from the web dashboard, biometric approval must be submitted in the iOS app.

<Warning>
  Anchorage Digital does not currently support sending SOL to non-curve address types (such as PDAs). Ensure your Solana destination is a standard on-curve wallet address.
</Warning>

### Withdrawing from iOS

<Steps>
  <Step title="Navigate to the vault">
    Go to the desired vault and tap **Withdraw**.
  </Step>

  <Step title="Select asset and wallet">
    Search for and tap the asset you would like to withdraw, then select the wallet from which you would like to withdraw.
  </Step>

  <Step title="Enter amount and destination">
    Enter the withdrawal amount, enable the gas station if applicable, and tap **Continue**. Enter the destination address and follow the prompts.
  </Step>

  <Step title="Submit for quorum approval">
    Reply to any questions or confirm the destination details. Add a comment (optional) and follow the prompts to submit biometric approval.
  </Step>
</Steps>

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

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

  <img src="https://mintcdn.com/deployment-4/dnKKK5u4vRePxCW5/knowledge-base/images/screenshots/withdraw-amount.png?fit=max&auto=format&n=dnKKK5u4vRePxCW5&q=85&s=987823689b3d0ecce79a2989922bc9e3" alt="Withdrawal amount screen with the gas station toggle" width="828" height="1792" data-path="knowledge-base/images/screenshots/withdraw-amount.png" />

  <img src="https://mintcdn.com/deployment-4/dnKKK5u4vRePxCW5/knowledge-base/images/screenshots/withdraw-destination.png?fit=max&auto=format&n=dnKKK5u4vRePxCW5&q=85&s=3bd4c592aaba6e21c7c2f9048c9697be" alt="Destination address screen for the withdrawal" width="828" height="1792" data-path="knowledge-base/images/screenshots/withdraw-destination.png" />

  <img src="https://mintcdn.com/deployment-4/dnKKK5u4vRePxCW5/knowledge-base/images/screenshots/withdraw-comment.png?fit=max&auto=format&n=dnKKK5u4vRePxCW5&q=85&s=ec87d8b05493ce02083c0f5c0523c704" alt="Optional comment screen before submitting the withdrawal" width="828" height="1792" data-path="knowledge-base/images/screenshots/withdraw-comment.png" />

  <img src="https://mintcdn.com/deployment-4/dnKKK5u4vRePxCW5/knowledge-base/images/screenshots/withdraw-review.png?fit=max&auto=format&n=dnKKK5u4vRePxCW5&q=85&s=e7560f0860fa456456ff63be36c1a34c" alt="Review screen for the withdrawal before biometric approval" width="828" height="1792" data-path="knowledge-base/images/screenshots/withdraw-review.png" />
</ImageCarousel>

### Withdrawing from the web dashboard

<Steps>
  <Step title="Navigate to the vault">
    Go to the desired vault and click **Withdraw** in the top-right corner.
  </Step>

  <Step title="Select asset, wallet, and amount">
    Select the asset and wallet from which you would like to withdraw. Enter the amount, and enable the gas station if applicable.
  </Step>

  <Step title="Enter destination">
    Enter the destination address to which you would like to send the funds.
  </Step>

  <Step title="Review and submit">
    Review and confirm the information, then submit. Go to the iOS app to endorse the withdrawal with biometric approval.
  </Step>
</Steps>

### Quorum approvals

Members of the default vault policy or the withdrawal policy (if applicable) will receive a notification to approve the withdrawal. Once the required quorum and sub-quorum approvals are submitted, Anchorage Digital will review the withdrawal for approval.

## Withdrawing tagged assets

Some assets require a destination tag or memo alongside the address—XRP is the most common example. The tag identifies the recipient at the destination, so the funds must arrive with the correct tag attached.

Withdraw tagged assets only to a saved [trusted destination](/knowledge-base/platform/users/web-dashboard/trusted-destinations) that carries the correct tag. A one-time address entered at withdrawal can drop the tag; a trusted destination stores the tag with the address, so every withdrawal includes it.

<Warning>
  A wrong or missing tag can misroute funds, and misrouted tagged-asset withdrawals are hard to reverse. Confirm the tag with the recipient before adding the trusted destination.
</Warning>

## Gas station

Most blockchains charge a network fee — "gas" — paid in the network's native asset (ETH on Ethereum, SOL on Solana). To move an ERC-20 token, for example, the wallet sending it also needs ETH on hand to pay the fee. That creates an operational chore: you'd have to keep every wallet topped up with the right native asset just in case you want to transact.

The Anchorage Digital gas station removes that chore by automating gas top-ups, so wallets have the native asset needed to pay network fees without manual funding and rebalancing.

The gas station is available for:

* ETH withdrawals and transfers
* ERC-20 withdrawals and transfers
* SOL withdrawals and transfers
* ETH staking

The gas station is enabled at the organization level. Once a withdrawal or transfer is approved, the gas station—an address controlled by Anchorage Digital—deposits the estimated network fee into your wallet to cover gas for that transaction. Any unused funds remain in your wallet.

<Info>
  If you don't see the gas station toggle for a transaction and would like to activate it, contact your client experience manager.
</Info>

### Using the gas station

When initiating a withdrawal from iOS or the web dashboard, toggle on the **gas station** option after entering the withdrawal amount. Continue following the prompts to submit the withdrawal for quorum approval.

## Batched endorsements

Multiple operations can be approved simultaneously in the Anchorage Digital iOS app, allowing for secure and efficient approval of your operations. This feature helps streamline your workflow by letting you manage several pending activities at once.

<Steps>
  <Step title="Open pending activity">
    Go to **Pending activity** (bell icon) to see the list of operations awaiting approval.
  </Step>

  <Step title="Select operations">
    Tap **Select** in the top right corner. Select the operations you wish to approve and tap **Confirm and review**.
  </Step>

  <Step title="Review each operation">
    Review each operation's details and select **Approve**, **Reject**, or **Review later** as appropriate.
  </Step>

  <Step title="Submit biometric approval">
    Once finished, review the selection for each operation and follow the prompts to submit biometric approval.
  </Step>
</Steps>

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-activity-screen.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=f145fbb87af0de4edd378f93a4f91fb4" alt="Pending activity screen with the Select link in the top-right corner" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-activity-screen.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-1.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=a8eefd2767be236e98f144d707399381" alt="Select operations screen with all three operations checked" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-1.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-2.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=0a34762ae1e172fa9ec50cc7f13ea3b4" alt="Select operations screen with Confirm and review highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-2.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-3.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=5ef0d64ed35458f9379adec6717619bd" alt="Review operation 1 of 3 showing withdrawal details" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-3.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-4.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=d4000e579d9f1ede0199b50a0a224326" alt="Review operation 1 of 3 with Approve, Reject, and Review later options" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-4.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-5.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=83b6709b4db19677a2ba11aa03d2da66" alt="Review operation 2 of 3 showing withdrawal details" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-5.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-6.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=cbf76791c199c70e13d121254e748dfb" alt="Review operation 2 of 3 with Reject selected" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-6.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-7.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=d4363e6bee79c1a5957494956b2b8542" alt="Review operation 3 of 3 showing a trusted destination addition" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-7.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-8.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=f6cfa5fe48048789948856b9fb4a6cd0" alt="Review operation 3 of 3 with Review later selected" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-8.png" />

  <img src="https://mintcdn.com/deployment-4/Q6VrRBiEEXtXFQnt/knowledge-base/images/screenshots/batch-endorsement-flow-9.png?fit=max&auto=format&n=Q6VrRBiEEXtXFQnt&q=85&s=7cf0bd66fb90986083293584d3aea57c" alt="Summary screen showing the decision for each operation, with Continue and endorse highlighted" width="828" height="1792" data-path="knowledge-base/images/screenshots/batch-endorsement-flow-9.png" />
</ImageCarousel>

Batched endorsements are processed once the required quorum is met.
