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

# Get started with the Uphold Enterprise API Suite

> Build enterprise-grade crypto products with the Uphold Enterprise API Suite — onboard users and move value across banks, cards, and crypto.

export const PlatformTabs = () => {
  const _PaymentStepCarousel = PaymentStepCarousel;
  const [activeTab, setActiveTab] = useState(0);
  const [hoveredIndex, setHoveredIndex] = useState(null);
  const [frozenHeight, setFrozenHeight] = useState(null);
  const panelRef = useRef(null);
  const TABS = buildTabs();
  const tab = TABS[activeTab];
  const activeIndex = hoveredIndex ?? 0;
  useEffect(() => {
    setFrozenHeight(null);
  }, [activeTab]);
  useEffect(() => {
    if (frozenHeight !== null || !panelRef.current) return;
    const naturalHeight = panelRef.current.offsetHeight;
    const minHeight = panelRef.current.offsetWidth * (447 / 1122);
    setFrozenHeight(Math.max(naturalHeight, minHeight));
  });
  useEffect(() => {
    const onResize = () => setFrozenHeight(null);
    window.addEventListener('resize', onResize);
    return () => window.removeEventListener('resize', onResize);
  }, []);
  return <div className="not-prose">
      <div className="flex flex-wrap items-center gap-1 mb-8">
        {TABS.map((t, i) => <button key={t.key} onClick={() => {
    setActiveTab(i);
    setHoveredIndex(null);
  }} className={`text-sm font-semibold px-3 py-1.5 rounded-full border-0 cursor-pointer transition-colors ${i === activeTab ? 'bg-[#49CC68] dark:bg-[#84FB7F] text-[#0a1f2e] dark:text-[#090d14]' : 'bg-transparent text-[#35B13D] dark:text-[#84FB7F] hover:opacity-70'}`}>
            {t.label}
          </button>)}
      </div>

      <div ref={panelRef} className="relative w-full rounded-2xl overflow-hidden" style={{
    height: frozenHeight ? `${frozenHeight}px` : 'auto'
  }}>
        <img src={tab.wideImg} alt="" className="absolute inset-0 w-full h-full object-cover" />

        <div className="relative flex flex-col justify-between w-full md:w-[46.5%]" style={{
    marginLeft: '1.4%',
    paddingTop: '3.6%',
    paddingBottom: '3.6%',
    height: '100%',
    boxSizing: 'border-box'
  }}>
          {tab.items.map((item, i) => {
    const Icon = item.icon;
    const active = i === activeIndex;
    return <a key={item.title} href={item.href} onMouseEnter={() => setHoveredIndex(i)} onMouseLeave={() => setHoveredIndex(null)} className="flex items-start gap-4 rounded-lg px-4 py-3 no-underline! transition-colors min-w-0" style={{
      backgroundColor: active ? '#273149' : 'transparent'
    }}>
                <span className="w-6 h-6 mt-0.5 shrink-0" style={{
      color: '#d1d4e5'
    }}>
                  <Icon />
                </span>
                <span className="flex flex-col min-w-0">
                  <span className="text-[16px] font-bold" style={{
      color: '#d1d4e5',
      lineHeight: '20px'
    }}>{item.title}</span>
                  <span className="text-[14px] font-normal" style={{
      color: '#8494bd',
      lineHeight: '20px'
    }}>{item.desc}</span>
                </span>
              </a>;
  })}
        </div>

        <div className="absolute overflow-hidden hidden md:block" style={{
    left: '49.5%',
    top: 0,
    width: '50.5%',
    height: '100%'
  }}>
          {tab.animateNoBg ? <_PaymentStepCarousel /> : <img src={tab.noBgImg} alt="" className="w-full h-full object-contain" />}
        </div>
      </div>
    </div>;
};

export const buildTabs = () => [{
  key: 'payments',
  label: 'Payments',
  wideImg: '/_media/get-started/image-wide-01.png',
  noBgImg: '/_media/get-started/image-01-no-bg.png',
  animateNoBg: true,
  items: [{
    icon: IcoBank,
    title: 'Bank transfers',
    desc: 'ACH, Wire, FedNow/RTP, FPS and SEPA across the US, UK and EU',
    href: '/developer-guides/bank-transfers/overview'
  }, {
    icon: IcoCard,
    title: 'Global card payments',
    desc: 'Debit & credit deposits and payouts — EUR, GBP, USD',
    href: '/developer-guides/card-transfers/overview'
  }, {
    icon: IcoWallet,
    title: 'Digital wallets',
    desc: 'Apple Pay, Google Pay, PayPal and Venmo',
    href: '/developer-guides/apm-transfers/overview'
  }, {
    icon: IcoGlobe,
    title: 'Crypto on/off-ramps',
    desc: 'Fund or cash out across 50+ blockchain networks',
    href: '/developer-guides/crypto-transfers/overview'
  }, {
    icon: IcoCoin,
    title: 'Stablecoin payouts',
    desc: 'Pay out globally in USDC or USDT, settled in seconds',
    href: '/developer-guides/crypto-transfers/overview'
  }]
}, {
  key: 'trade-treasury',
  label: 'Trade & Treasury',
  wideImg: '/_media/get-started/image-wide-02.png',
  noBgImg: '/_media/get-started/image-02-no-bg.png',
  items: [{
    icon: IcoUpDown,
    title: 'Buy & Sell',
    desc: 'Convert between fiat and crypto in a single quoted call',
    href: '/developer-guides/buy-and-sell/overview'
  }, {
    icon: IcoRepeat,
    title: 'Trade & Send',
    desc: 'Swap any asset to any asset and send to different clients',
    href: '/developer-guides/trade-and-send/overview'
  }, {
    icon: IcoBarChart,
    title: 'Live & historical rates',
    desc: 'Real-time and point-in-time pricing for 300+ assets in GBP, EUR and USD',
    href: '/rest-apis/core-api/assets/get-asset-rates'
  }, {
    icon: IcoClock,
    title: 'Portfolio & performance',
    desc: "A complete view of every user's holdings, gains and returns over time",
    href: '/rest-apis/core-api/portfolio/introduction'
  }, {
    icon: IcoRefresh,
    title: 'Automated transactions',
    desc: 'Programmatically trigger trades and transfers via API, no manual steps required',
    href: '/developer-guides/trade-and-send/overview'
  }]
}, {
  key: 'custody-wallet',
  label: 'Custody & Wallet',
  wideImg: '/_media/get-started/image-wide-03.png',
  noBgImg: '/_media/get-started/image-03-no-bg.png',
  items: [{
    icon: IcoUser,
    title: 'Omnibus account',
    desc: "Hold every user's funds in one pooled account — segregation and ledgering handled for you",
    href: '/developer-guides/bank-transfers/overview'
  }, {
    icon: IcoCoin,
    title: 'Crypto & fiat holding',
    desc: 'Keep 300+ cryptos and USD, EUR and GBP together in a single balance',
    href: '/rest-apis/core-api/portfolio/introduction'
  }, {
    icon: IcoBank,
    title: 'Individual bank accounts',
    desc: 'Give every user their own account number to fund directly',
    href: '/developer-guides/bank-transfers/overview'
  }, {
    icon: IcoGlobe,
    title: 'Crypto wallets',
    desc: 'Generate a unique deposit address for any user, on any of 50+ networks',
    href: '/developer-guides/crypto-transfers/overview'
  }, {
    icon: IcoBarChart,
    title: 'Reconciliation & ledger',
    desc: 'A real-time, fully auditable ledger your finance and audit teams can trust',
    href: '/developer-guides/statements/overview'
  }]
}, {
  key: 'onboarding',
  label: 'Onboarding',
  wideImg: '/_media/get-started/image-wide-04.png',
  noBgImg: '/_media/get-started/image-04-no-bg.png',
  items: [{
    icon: IcoUserCheck,
    title: 'Identity verification',
    desc: 'Run complete individual KYC across the UK & US',
    href: '/developer-guides/user-onboarding/individual/overview'
  }, {
    icon: IcoFingerprint,
    title: 'Bring your own KYC',
    desc: 'Ingest verified users from Sumsub or Veriff — no bespoke build',
    href: '/developer-guides/user-onboarding/individual/via-kyc-connector'
  }, {
    icon: IcoMobile,
    title: 'Embedded verification',
    desc: 'Drop-in hosted KYC flow, live in minutes',
    href: '/widgets/kyc/introduction'
  }, {
    icon: IcoBriefcase,
    title: 'Business verification',
    desc: 'Onboard and verify companies with full KYB',
    href: '/developer-guides/user-onboarding/business/overview'
  }, {
    icon: IcoShuffle,
    title: 'Embedded Travel Rule',
    desc: 'Drop-in widget that collects originator & beneficiary data to clear crypto transfers',
    href: '/widgets/travel-rule/introduction'
  }]
}];

export const PaymentStepCarousel = () => {
  const [activeIndex, setActiveIndex] = useState(0);
  const [paused, setPaused] = useState(false);
  const [uiScale, setUiScale] = useState(1);
  const containerRef = useRef(null);
  const items = PAYMENT_CAROUSEL_ITEMS;
  const n = items.length;
  const half = Math.floor(n / 2);
  useEffect(() => {
    if (paused) return;
    const id = setInterval(() => setActiveIndex(i => i + 1), 1000);
    return () => clearInterval(id);
  }, [paused]);
  useEffect(() => {
    const measure = () => {
      if (containerRef.current) setUiScale(containerRef.current.offsetWidth / 300);
    };
    measure();
    window.addEventListener('resize', measure);
    return () => window.removeEventListener('resize', measure);
  }, []);
  return <div ref={containerRef} className="relative w-full h-full overflow-hidden" onMouseEnter={() => setPaused(true)} onMouseLeave={() => setPaused(false)}>
      {items.map((item, i) => {
    let distance = activeIndex - i;
    distance = (distance % n + n) % n;
    if (distance > half) distance -= n;
    const absDist = Math.abs(distance);
    const isActive = absDist === 0;
    const itemScale = Math.pow(0.7, absDist);
    const opacity = isActive ? 1 : absDist === 1 ? 0.7 : 0.45;
    const y = distance * 42 * uiScale;
    const badgeSize = 32 * uiScale;
    return <div key={item.label} className="absolute left-0 flex items-center justify-between rounded-full" style={{
      top: '50%',
      width: '92%',
      height: 44 * uiScale,
      padding: `0 ${16 * uiScale}px`,
      transform: `translateY(calc(-50% + ${y}px)) scale(${itemScale})`,
      opacity,
      background: isActive ? '#090d14' : 'rgba(9,13,20,0.65)',
      border: isActive ? '2px solid rgba(255,255,255,0.18)' : '2px solid transparent',
      boxShadow: isActive ? '0 4px 16px rgba(0,0,0,0.35)' : 'none',
      transition: 'transform 0.75s cubic-bezier(0.4,0,0.2,1), opacity 0.75s ease, background-color 0.75s ease, border-color 0.75s ease',
      zIndex: 100 - absDist
    }}>
            <span style={{
      fontSize: (isActive ? 16 : 14) * uiScale,
      fontWeight: 700,
      color: '#d1d4e5',
      whiteSpace: 'nowrap'
    }}>
              {item.label}
            </span>
            <span className="flex items-center" style={{
      marginRight: item.bareBadge ? 0 : -8 * uiScale
    }}>
              {item.bareBadge ? <img src={item.badges[0][0]} alt="" style={{
      height: badgeSize,
      width: 'auto',
      display: 'block'
    }} /> : item.badges.map((layers, bi) => <span key={bi} className="relative rounded-full shrink-0" style={{
      width: badgeSize,
      height: badgeSize,
      marginLeft: bi > 0 ? -8 * uiScale : 0,
      border: '2px solid rgba(63,63,63,0.5)',
      background: '#1a1a1a'
    }}>
                    {layers.map((src, li) => <img key={li} src={src} alt="" className="absolute inset-0 w-full h-full rounded-full" />)}
                  </span>)}
            </span>
          </div>;
  })}
    </div>;
};

export const PAYMENT_CAROUSEL_ITEMS = [{
  label: 'Credit and debit card',
  badges: [['/_media/get-started/icon-visa.svg'], ['/_media/get-started/icon-mastercard.svg']]
}, {
  label: 'Apple Pay',
  badges: [['/_media/get-started/icon-apple-pay.svg']],
  bareBadge: true
}, {
  label: 'Google Pay',
  badges: [['/_media/get-started/icon-google-pay.svg']],
  bareBadge: true
}, {
  label: 'Bank transfer',
  badges: [['/_media/get-started/icon-euro.svg', '/_media/get-started/icon-euro-overlay.svg'], ['/_media/get-started/icon-pound.svg'], ['/_media/get-started/icon-dollar.svg']]
}, {
  label: 'Stablecoin',
  badges: [['/_media/get-started/icon-usdc.svg'], ['/_media/get-started/icon-usdt-base.svg', '/_media/get-started/icon-usdt-overlay.svg', '/_media/get-started/icon-usdt-mark.svg']]
}, {
  label: 'PayPal',
  badges: [['/_media/get-started/icon-paypal.svg']],
  bareBadge: true
}, {
  label: 'Venmo',
  badges: [['/_media/get-started/icon-venmo.svg']],
  bareBadge: true
}];

export const IcoShuffle = () => {
  const _Ico = Ico;
  return <_Ico><polyline points="16 3 21 3 21 8" /><line x1="4" y1="20" x2="21" y2="3" /><polyline points="21 16 21 21 16 21" /><line x1="15" y1="15" x2="21" y2="21" /><line x1="4" y1="4" x2="9" y2="9" /></_Ico>;
};

export const IcoBriefcase = () => {
  const _Ico = Ico;
  return <_Ico><rect x="2" y="7" width="20" height="14" rx="2" /><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16" /><line x1="2" y1="13" x2="22" y2="13" /></_Ico>;
};

export const IcoMobile = () => {
  const _Ico = Ico;
  return <_Ico><rect x="7" y="2" width="10" height="20" rx="2" /><line x1="11" y1="18" x2="13" y2="18" /></_Ico>;
};

export const IcoFingerprint = () => {
  const _Ico = Ico;
  return <_Ico><path d="M12 2a7 7 0 0 1 7 7v2.5" /><path d="M5 11.5V9a7 7 0 0 1 3-5.75" /><path d="M8 21c-1.6-2.1-2-4-2-6V9a6 6 0 0 1 11.5-2.5" /><path d="M12 9a3 3 0 0 0-3 3v2c0 2 .4 3.6 1.3 5" /><path d="M15 9.2c.5.8.8 1.8.8 2.8v2c0 1.6-.3 3-1 4.3" /></_Ico>;
};

export const IcoUserCheck = () => {
  const _Ico = Ico;
  return <_Ico><circle cx="10" cy="8" r="4" /><path d="M2 21v-1a6 6 0 0 1 6-6h2a6 6 0 0 1 6 6v1" /><polyline points="16 11 18 13 22 9" /></_Ico>;
};

export const IcoUser = () => {
  const _Ico = Ico;
  return <_Ico><circle cx="12" cy="8" r="4" /><path d="M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1" /></_Ico>;
};

export const IcoRefresh = () => {
  const _Ico = Ico;
  return <_Ico><polyline points="23 4 23 10 17 10" /><polyline points="1 20 1 14 7 14" /><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15" /></_Ico>;
};

export const IcoClock = () => {
  const _Ico = Ico;
  return <_Ico><circle cx="12" cy="13" r="8" /><line x1="12" y1="13" x2="12" y2="9" /><line x1="12" y1="13" x2="15" y2="15" /><line x1="9" y1="2" x2="15" y2="2" /></_Ico>;
};

export const IcoBarChart = () => {
  const _Ico = Ico;
  return <_Ico><line x1="4" y1="20" x2="20" y2="20" /><rect x="6" y="12" width="3" height="8" /><rect x="10.5" y="7" width="3" height="13" /><rect x="15" y="14" width="3" height="6" /></_Ico>;
};

export const IcoRepeat = () => {
  const _Ico = Ico;
  return <_Ico><polyline points="17 1 21 5 17 9" /><path d="M3 11V9a4 4 0 0 1 4-4h14" /><polyline points="7 23 3 19 7 15" /><path d="M21 13v2a4 4 0 0 1-4 4H3" /></_Ico>;
};

export const IcoUpDown = () => {
  const _Ico = Ico;
  return <_Ico><line x1="7" y1="21" x2="7" y2="3" /><polyline points="3 7 7 3 11 7" /><line x1="17" y1="3" x2="17" y2="21" /><polyline points="13 17 17 21 21 17" /></_Ico>;
};

export const IcoCoin = () => {
  const _Ico = Ico;
  return <_Ico><circle cx="12" cy="12" r="9" /><path d="M12 6.5v11M9.3 9.3a2.8 2.2 0 0 1 2.7-1.5c1.5 0 2.8.9 2.8 2.1 0 1.2-1.3 1.8-2.8 2.2-1.5.4-2.8 1-2.8 2.2 0 1.2 1.3 2.1 2.8 2.1a2.8 2.2 0 0 0 2.7-1.5" /></_Ico>;
};

export const IcoGlobe = () => {
  const _Ico = Ico;
  return <_Ico><circle cx="12" cy="12" r="9" /><ellipse cx="12" cy="12" rx="4" ry="9" /><line x1="3" y1="12" x2="21" y2="12" /></_Ico>;
};

export const IcoWallet = () => {
  const _Ico = Ico;
  return <_Ico><path d="M21 7H5a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2z" /><path d="M16 7V5a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v2" /><circle cx="18" cy="13" r="1.1" fill="currentColor" stroke="none" /></_Ico>;
};

export const IcoCard = () => {
  const _Ico = Ico;
  return <_Ico><rect x="2" y="5" width="20" height="14" rx="2" /><line x1="2" y1="10" x2="22" y2="10" /></_Ico>;
};

export const IcoBank = () => {
  const _Ico = Ico;
  return <_Ico><polygon points="12 2 21 8 3 8" /><line x1="5" y1="10" x2="5" y2="21" /><line x1="9" y1="10" x2="9" y2="21" /><line x1="15" y1="10" x2="15" y2="21" /><line x1="19" y1="10" x2="19" y2="21" /><line x1="3" y1="21" x2="21" y2="21" /></_Ico>;
};

export const Ico = ({children}) => <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" strokeLinejoin="round" className="w-full h-full">
    {children}
  </svg>;

<div className="hero-onchain-row">
  <div className="hero-onchain-content">
    <p className="hero-onchain-eyebrow">Uphold Developer Docs</p>

    <div className="hero-onchain">Build with <span className="grad">Uphold</span></div>

    <p className="hero-onchain-sub">Build enterprise-grade crypto products on the Uphold Enterprise API Suite — onboard users and move value across banks, cards, and crypto.</p>

    <div className="hero-cta-row">
      <a className="ov-btn-primary" href="/get-started/set-up-your-account">Start building</a>

      <a className="ov-btn-secondary" href="/get-started/build-with-ai">
        <span className="ov-btn-icon" />

        Build with AI
      </a>
    </div>
  </div>

  <div className="hero-onchain-image">
    <img src="https://mintcdn.com/uphold-d4756e17/LD_f66WB1ah1PpXF/_media/get-started/uphold-3d-logo.png?fit=max&auto=format&n=LD_f66WB1ah1PpXF&q=85&s=946bef152e3aa43d044647ef57eb796e" alt="" width="1092" height="838" data-path="_media/get-started/uphold-3d-logo.png" />
  </div>
</div>

<div className="hero-below-image-line" />

<p className="section-heading">One platform. Everything you need</p>
<p className="section-subtitle">Each guide walks you through a full integration, end-to-end.</p>

<PlatformTabs />

<p className="section-heading section-heading-gap-lg">Start building</p>
<p className="section-subtitle">Full control, embedded flows, or institutional trading.</p>

<div className="start-building-grid not-prose">
  <a className="start-building-card" href="/rest-apis/introduction">
    <img src="https://mintcdn.com/uphold-d4756e17/LD_f66WB1ah1PpXF/_media/get-started/asset-1.png?fit=max&auto=format&n=LD_f66WB1ah1PpXF&q=85&s=2d75b0b23ce7159aec1d867e5b0f8fec" alt="" width="724" height="498" data-path="_media/get-started/asset-1.png" />

    <div className="start-building-card-content">
      <div>
        <p className="start-building-card-title">Direct API Access</p>
        <p className="start-building-card-desc">Buy, sell, exchange, or transfer stablecoins and crypto straight from your backend</p>
      </div>

      <span className="start-building-card-btn">Uphold APIs</span>
    </div>
  </a>

  <a className="start-building-card" href="/widgets/introduction">
    <img src="https://mintcdn.com/uphold-d4756e17/LD_f66WB1ah1PpXF/_media/get-started/asset-2.png?fit=max&auto=format&n=LD_f66WB1ah1PpXF&q=85&s=8dfd101e65de90be1c27e0c734da03ae" alt="" width="724" height="498" data-path="_media/get-started/asset-2.png" />

    <div className="start-building-card-content">
      <div>
        <p className="start-building-card-title">Drop-In Widgets</p>
        <p className="start-building-card-desc">Get started fast: Payments, KYC, compliance and more in simple to integrate widgets</p>
      </div>

      <span className="start-building-card-btn">Uphold Widgets</span>
    </div>
  </a>

  <a className="start-building-card" href="/fix-apis/introduction">
    <img src="https://mintcdn.com/uphold-d4756e17/LD_f66WB1ah1PpXF/_media/get-started/asset-3.png?fit=max&auto=format&n=LD_f66WB1ah1PpXF&q=85&s=c3551a4770a032f582040f4c34857be9" alt="" width="724" height="498" data-path="_media/get-started/asset-3.png" />

    <div className="start-building-card-content">
      <div>
        <p className="start-building-card-title">High Volume Trading</p>
        <p className="start-building-card-desc">Real-time APIs for banks, brokers, and exchanges</p>
      </div>

      <span className="start-building-card-btn">FIX APIs</span>
    </div>
  </a>
</div>

<p className="section-heading section-heading-gap-lg">Ready to start?</p>
<p className="section-subtitle">Check how to set up your account to start building.</p>

<div className="ready-steps not-prose">
  <div className="ready-step">
    <span className="ready-step-badge">01</span>
    <p className="ready-step-title">Register your organization</p>
    <p className="ready-step-desc">Navigate to the <a className="ready-step-portal-link" href="https://portal.enterprise.uphold.com/">Enterprise Portal</a>. Fill in your company details and set your administrator credentials.</p>
  </div>

  <div className="ready-step">
    <span className="ready-step-badge">02</span>
    <p className="ready-step-title">Access the Sandbox</p>
    <p className="ready-step-desc">A fully isolated testing ground that mirrors Production but uses test funds and data.</p>
  </div>

  <div className="ready-step">
    <span className="ready-step-badge">03</span>
    <p className="ready-step-title">Create an API Client</p>
    <p className="ready-step-desc">Navigate to Clients in the <a className="ready-step-portal-link" href="https://portal.enterprise.uphold.com/">Portal</a>, create a new client, and select the scopes your application needs.</p>
  </div>

  <div className="ready-step">
    <span className="ready-step-badge">04</span>
    <p className="ready-step-title">Test your integration</p>
    <p className="ready-step-desc">Use your generated credentials to make your first API call via <a className="ready-step-portal-link" href="https://developer.uphold.com/get-started/make-your-first-api-call">Postman</a> or cURL.</p>
  </div>
</div>
