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

# Domestic wire deposits at Anchorage Digital Bank

> Create a USD wallet, access wire instructions, and receive USD by domestic wire at Anchorage Digital Bank.

export const WireFlow = ({nodes = [], title, label = title || "Flow of funds"}) => {
  const isDark = () => typeof document !== "undefined" && (document.documentElement.classList.contains("dark") || document.documentElement.getAttribute("data-theme") === "dark");
  const [dark, setDark] = useState(isDark);
  useEffect(() => {
    if (typeof document === "undefined") return;
    const read = () => setDark(isDark());
    read();
    const obs = new MutationObserver(read);
    obs.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ["class", "data-theme"]
    });
    return () => obs.disconnect();
  }, []);
  const C = dark ? {
    surface: "#1B1E24",
    card: "#14161B",
    line: "#2C3038",
    ink: "#E8E9EC",
    ink2: "#9EA2AA",
    blue: "#7C9DF8",
    blueF: "#1B2742",
    track: "#3A3F48"
  } : {
    surface: "#F7F7F5",
    card: "#FFFFFF",
    line: "#E3E2DD",
    ink: "#23262D",
    ink2: "#666666",
    blue: "#5681F6",
    blueF: "#E8F2FD",
    track: "#D5D4CF"
  };
  const vars = {
    "--wf-surface": C.surface,
    "--wf-card": C.card,
    "--wf-line": C.line,
    "--wf-ink": C.ink,
    "--wf-ink2": C.ink2,
    "--wf-blue": C.blue,
    "--wf-blue-f": C.blueF,
    "--wf-track": C.track
  };
  const n = nodes.length;
  const links = Math.max(n - 1, 1);
  const cycle = 1.6 * links + 1.2;
  const slot = 100 / (links + 0.75);
  const linkKeyframes = Array.from({
    length: links
  }, (_, i) => {
    const a = (i * slot).toFixed(1), b = ((i + 0.85) * slot).toFixed(1);
    return `@keyframes wf-v${i}{0%,${a}%{top:0;opacity:0}${(+a + 1).toFixed(1)}%{opacity:1}${b}%{top:calc(100% - 22px);opacity:1}${(+b + 1).toFixed(1)}%,100%{top:calc(100% - 22px);opacity:0}}
@keyframes wf-h${i}{0%,${a}%{left:0;opacity:0}${(+a + 1).toFixed(1)}%{opacity:1}${b}%{left:calc(100% - 22px);opacity:1}${(+b + 1).toFixed(1)}%,100%{left:calc(100% - 22px);opacity:0}}`;
  }).join("\n");
  const nodeKeyframes = nodes.map((_, i) => {
    const at = i === 0 ? 0 : (i - 1 + 0.85) * slot;
    const s = Math.max(at - 0.5, 0).toFixed(1), p = (at + 2).toFixed(1), e = Math.min(at + 14, 99).toFixed(1);
    return `@keyframes wf-n${i}{0%{border-color:var(--wf-line);background:var(--wf-card)}${s}%{border-color:var(--wf-line);background:var(--wf-card)}${p}%{border-color:var(--wf-blue);background:var(--wf-blue-f)}${e}%{border-color:var(--wf-blue);background:var(--wf-blue-f)}100%{border-color:var(--wf-line);background:var(--wf-card)}}`;
  }).join("\n");
  const css = `
.wf{border:1px solid var(--wf-line);border-radius:18px;background:var(--wf-surface);color:var(--wf-ink);padding:20px;margin:16px 0}
.wf,.wf *{box-sizing:border-box}
.wf-title{margin:0 0 14px;font-size:15px;font-weight:600;line-height:1.3;color:var(--wf-ink)}
.wf-row{display:grid;grid-template-columns:1fr;gap:0;justify-items:center}
.wf-node{width:100%;max-width:280px;border:1.5px solid var(--wf-line);background:var(--wf-card);border-radius:14px;padding:12px 14px;text-align:center;animation-duration:${cycle}s;animation-iteration-count:infinite;animation-timing-function:ease-out}
.wf-node b{display:block;font-size:15px;font-weight:600;line-height:1.3}
.wf-node span{display:block;margin-top:2px;font-size:12.5px;color:var(--wf-ink2);line-height:1.35}
.wf-link{position:relative;width:2px;height:56px;background:var(--wf-track);margin:4px 0}
.wf-link::after{content:"";position:absolute;bottom:-2px;left:-5px;border:6px solid transparent;border-top:8px solid var(--wf-track);border-bottom:0}
.wf-coin{position:absolute;left:-10px;top:0;width:22px;height:22px;border-radius:50%;background:var(--wf-blue);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center;opacity:0;box-shadow:0 0 0 4px var(--wf-blue-f);animation-duration:${cycle}s;animation-iteration-count:infinite;animation-timing-function:ease-in-out}
@media (min-width:640px){
  .wf-row{grid-template-columns:${nodes.map(() => "minmax(0,1fr)").join(" 72px ")};align-items:center}
  .wf-node{max-width:none;height:100%;display:flex;flex-direction:column;justify-content:center}
  .wf-link{width:auto;height:2px;justify-self:stretch;margin:0 6px}
  .wf-link::after{bottom:auto;left:auto;right:-2px;top:-5px;border:6px solid transparent;border-left:8px solid var(--wf-track);border-right:0}
  .wf-coin{top:-10px;left:0}
}
${linkKeyframes}
${nodeKeyframes}
@media (prefers-reduced-motion:reduce){.wf *{animation:none!important}.wf-coin{display:none}}
`;
  return <div className="wf not-prose" style={vars} role="img" aria-label={`${label}: ${nodes.map(x => x.title).join(" to ")}`}>
      <style>{css}</style>
      {title && <p className="wf-title" aria-hidden="true">{title}</p>}
      <div className="wf-row">
        {nodes.flatMap((node, i) => [i > 0 && <div key={`l${i}`} className="wf-link" aria-hidden="true">
              <i className="wf-coin" style={{
    animationName: `wf-v${i - 1}`
  }}>$</i>
            </div>, <div key={`n${i}`} className="wf-node" style={{
    animationName: `wf-n${i}`
  }} aria-hidden="true">
            <b>{node.title}</b>
            {node.caption && <span>{node.caption}</span>}
          </div>].filter(Boolean))}
      </div>
      <style>{`@media (min-width:640px){${Array.from({
    length: links
  }, (_, i) => `.wf-link:nth-child(${2 * i + 2}) .wf-coin{animation-name:wf-h${i}!important}`).join("")}}`}</style>
    </div>;
};

export const ImageCarousel = ({images, perView = 3, thumbMaxWidth = 220, children}) => {
  const [page, setPage] = useState(0);
  const [imgH, setImgH] = useState(0);
  const [zoomIdx, setZoomIdx] = useState(null);
  const stripRef = useRef(null);
  const THUMB_MAX_WIDTH = thumbMaxWidth;
  const PEEK_WIDTH = 34;
  const STAGE_HEIGHT = 460;
  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 || [];
  const count = items.length;
  const columns = Math.min(perView, count) || 1;
  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 zoomTo = i => {
    const idx = (i % count + count) % count;
    setZoomIdx(idx);
    setPage(Math.floor(idx / columns));
  };
  useEffect(() => {
    if (zoomIdx === null) return;
    const item = items[zoomIdx];
    const overlay = document.createElement("div");
    overlay.setAttribute("role", "dialog");
    overlay.setAttribute("aria-modal", "true");
    overlay.setAttribute("aria-label", item.alt || "Screenshot");
    Object.assign(overlay.style, {
      position: "fixed",
      top: "0",
      left: "0",
      right: "0",
      bottom: "0",
      zIndex: "2147483000",
      background: "rgba(5, 5, 5, 0.98)",
      display: "flex",
      alignItems: "center",
      justifyContent: "center",
      padding: "24px 72px",
      cursor: "zoom-out"
    });
    const img = document.createElement("img");
    img.src = item.src;
    img.alt = item.alt || "";
    Object.assign(img.style, {
      maxWidth: "94vw",
      maxHeight: "88vh",
      width: "auto",
      height: "auto",
      borderRadius: "10px",
      boxShadow: "0 8px 40px rgba(0, 0, 0, 0.5)",
      cursor: "zoom-out"
    });
    overlay.appendChild(img);
    const makeButton = (label, text, position) => {
      const b = document.createElement("button");
      b.type = "button";
      b.setAttribute("aria-label", label);
      b.textContent = text;
      Object.assign(b.style, {
        position: "absolute",
        width: "40px",
        height: "40px",
        borderRadius: "50%",
        border: "1px solid rgba(255, 255, 255, 0.35)",
        background: "rgba(255, 255, 255, 0.16)",
        color: "#fff",
        fontSize: "20px",
        lineHeight: "38px",
        textAlign: "center",
        cursor: "pointer",
        padding: "0"
      }, position);
      overlay.appendChild(b);
      return b;
    };
    const closeButton = makeButton("Close", "×", {
      top: "18px",
      right: "18px"
    });
    let prevButton = null;
    let nextButton = null;
    if (count > 1) {
      prevButton = makeButton("Previous screenshot", "‹", {
        left: "18px",
        top: "calc(50% - 20px)"
      });
      nextButton = makeButton("Next screenshot", "›", {
        right: "18px",
        top: "calc(50% - 20px)"
      });
      const counter = document.createElement("div");
      counter.textContent = `${zoomIdx + 1} of ${count}`;
      Object.assign(counter.style, {
        position: "absolute",
        bottom: "16px",
        left: "0",
        right: "0",
        textAlign: "center",
        fontSize: "13px",
        color: "rgba(255, 255, 255, 0.85)"
      });
      overlay.appendChild(counter);
    }
    const close = () => setZoomIdx(null);
    overlay.addEventListener("click", e => {
      if (e.target === prevButton || e.target === nextButton) return;
      close();
    });
    if (prevButton) prevButton.addEventListener("click", () => zoomTo(zoomIdx - 1));
    if (nextButton) nextButton.addEventListener("click", () => zoomTo(zoomIdx + 1));
    const onKey = e => {
      if (e.key === "Escape") close(); else if (e.key === "ArrowLeft") zoomTo(zoomIdx - 1); else if (e.key === "ArrowRight") zoomTo(zoomIdx + 1);
    };
    window.addEventListener("keydown", onKey);
    const previousOverflow = document.body.style.overflow;
    document.body.style.overflow = "hidden";
    document.body.appendChild(overlay);
    closeButton.focus();
    return () => {
      window.removeEventListener("keydown", onKey);
      document.body.style.overflow = previousOverflow;
      overlay.remove();
    };
  }, [zoomIdx]);
  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();
  }, []);
  if (!items.length) return null;
  const start = page * columns;
  const visible = items.slice(start, start + columns);
  const zoomBtnStyle = {
    position: "absolute",
    zIndex: 2,
    width: "40px",
    height: "40px",
    borderRadius: "50%",
    border: "1px solid rgba(255, 255, 255, 0.3)",
    background: "rgba(255, 255, 255, 0.14)",
    color: "#fff",
    fontSize: "20px",
    lineHeight: "38px",
    textAlign: "center",
    cursor: "pointer",
    padding: 0
  };
  const pager = 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> : null;
  if (perView === 1) {
    const img = items[page];
    const overlayArrow = side => {
      const isLeft = side === "left";
      return <button type="button" onClick={isLeft ? prev : next} aria-label={isLeft ? "Previous screenshot" : "Next screenshot"} style={{
        position: "absolute",
        top: "50%",
        transform: "translateY(-50%)",
        [isLeft ? "left" : "right"]: "10px",
        zIndex: 2,
        width: "36px",
        height: "36px",
        borderRadius: "50%",
        border: "1px solid var(--ad-border, #e4e5e7)",
        background: "var(--background, #fff)",
        boxShadow: "0 1px 6px rgba(0, 0, 0, 0.25)",
        fontSize: "18px",
        lineHeight: "34px",
        textAlign: "center",
        cursor: "pointer",
        padding: 0
      }}>
          {isLeft ? "‹" : "›"}
        </button>;
    };
    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={{
      position: "relative"
    }}>
          <div style={{
      height: STAGE_HEIGHT + "px",
      display: "flex",
      alignItems: "center",
      justifyContent: "center"
    }}>
            <button type="button" onClick={() => setZoomIdx(page)} aria-label={"Enlarge: " + (img.alt || "screenshot")} style={{
      display: "block",
      maxWidth: "100%",
      maxHeight: "100%",
      border: 0,
      padding: 0,
      background: "none",
      cursor: "zoom-in"
    }}>
              <img src={img.src} alt={img.alt ?? ""} style={{
      display: "block",
      maxWidth: "100%",
      maxHeight: STAGE_HEIGHT + "px",
      width: "auto",
      height: "auto",
      margin: "0 auto",
      borderRadius: "10px",
      border: "1px solid var(--ad-border, #e4e5e7)"
    }} />
            </button>
          </div>

          {showControls && overlayArrow("left")}
          {showControls && overlayArrow("right")}
        </div>

        {img.alt && <div style={{
      marginTop: "8px",
      fontSize: "13px",
      lineHeight: 1.4,
      color: "var(--ad-muted, #6b7280)",
      textAlign: "center"
    }}>
            {img.alt}
          </div>}

        {pager}
      </div>;
  }
  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}>
                <button type="button" data-carousel-imgbox onClick={() => setZoomIdx(start + i)} aria-label={"Enlarge: " + (img.alt || "screenshot")} style={{
      display: "block",
      width: "100%",
      border: 0,
      padding: 0,
      background: "none",
      cursor: "zoom-in"
    }}>
                  <img src={img.src} alt={img.alt ?? ""} style={{
      display: "block",
      maxWidth: "100%",
      maxHeight: Math.round(THUMB_MAX_WIDTH * 1.4) + "px",
      width: "auto",
      height: "auto",
      margin: "0 auto",
      borderRadius: "10px",
      border: "1px solid var(--ad-border, #e4e5e7)"
    }} />
                </button>
                {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>

      {pager}
    </div>;
};

To receive a USD deposit, you need a USD wallet with wire instructions that you can share with the sending party. Domestic wires let senders in the United States move USD into your Anchorage Digital Bank (ADB) USD wallet over Fedwire/CHIPS. Wire transfer is the only generally available deposit rail—for where ACH and other rails stand, see [USD rails](/knowledge-base/platform/users/usd-banking#usd-rails).

<WireFlow
  title="Domestic wire deposits"
  nodes={[
{ title: "Sender's bank", caption: "Sends the wire" },
{ title: "Fedwire/CHIPS", caption: "Moves the funds" },
{ title: "Anchorage Digital Bank", caption: "Credits your USD wallet" }
]}
/>

## Creating a USD wallet

Go to the desired vault, select **Deposit**, then select **USD** as the asset type. If a USD wallet doesn't already exist, this creates one with unique wire instructions.

This operation is immediate and doesn't require quorum or Anchorage Digital approval.

<Note>
  You can only create one USD wallet per vault.
</Note>

## Accessing wire instructions

You can access wire instructions from the iOS app or web dashboard.

Go to the desired vault, select **Deposit**, and select **USD** to view the vault's wire instructions.

Anchorage Digital Bank wallets show a US account and routing number for domestic wires and a SWIFT/BIC for international wires. Share the US account and routing number with senders in the United States. For international senders, see [International wire deposits](/knowledge-base/platform/users/usd-deposits/adb/international-wire-deposits).

<Warning>
  Don't have senders push ACH deposits to your USD wallet's account details—only wire transfers are accepted.
</Warning>

<ImageCarousel>
  <img src="https://mintcdn.com/deployment-4/dnKKK5u4vRePxCW5/knowledge-base/images/screenshots/usd-deposit-asset-selection.png?fit=max&auto=format&n=dnKKK5u4vRePxCW5&q=85&s=3a5fb0f4d94c9ff844f3a70fed80ea02" alt="Deposit screen for selecting USD as the asset type" width="828" height="1792" data-path="knowledge-base/images/screenshots/usd-deposit-asset-selection.png" />

  <img src="https://mintcdn.com/deployment-4/dnKKK5u4vRePxCW5/knowledge-base/images/screenshots/usd-deposit-instructions.png?fit=max&auto=format&n=dnKKK5u4vRePxCW5&q=85&s=fcc34a3285270106e11eeaa9d45268d5" alt="USD wallet wire instructions screen" width="828" height="1792" data-path="knowledge-base/images/screenshots/usd-deposit-instructions.png" />
</ImageCarousel>

## Tracking and reconciling a deposit

An incoming Fedwire posts an IMAD reference in your activity roughly 15–30 minutes after the sending bank releases it. Use the IMAD to reconcile the deposit with the sender.


## Related topics

- [Wire deposits at Anchorage Digital Bank](/knowledge-base/platform/users/usd-deposits/adb/wire-deposits-overview.md)
- [International wire deposits at Anchorage Digital Bank](/knowledge-base/platform/users/usd-deposits/adb/international-wire-deposits.md)
- [Wire deposit FAQs for Anchorage Digital Bank](/knowledge-base/platform/users/usd-deposits/adb/wire-deposit-faqs.md)
- [Domestic wire withdrawals at Anchorage Digital Bank](/knowledge-base/platform/users/usd-withdrawals/adb/domestic-wire-withdrawals.md)
- [Wire withdrawals at Anchorage Digital Bank](/knowledge-base/platform/users/usd-withdrawals/adb/wire-withdrawals-overview.md)
