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

# Hypermid

> Accept crypto payments and move funds across chains.

Hypermid lets a payer settle in whatever token they already hold, on whatever
chain they hold it, while you receive one specific token on one specific chain.
The swap and the bridge are ours to worry about.

## One Payments product, three modes

<CardGroup cols={2}>
  <Card title="Payments" icon="credit-card" href="/guides/payments">
    Choose Checkout, Deposit, or Withdrawal by where the money is going.
  </Card>

  <Card title="Swap orchestration" icon="arrows-rotate" href="/guides/swap">
    Price any pair across chains and hand the user an executable transaction.
  </Card>
</CardGroup>

Payments has three modes — Checkout, Deposit, and Withdrawal — represented by
the same payment-session object. They differ by who pays whom, not by a separate
product engine. Payment links are the no-backend delivery path for a fixed-price
Checkout; they are not a fourth mode.

Swap orchestration is the odd one out: no session, no custody, no webhook. You
quote a route and your user's own wallet executes it.

## The shape of an integration

<Steps>
  <Step title="Create the session on your server">
    `POST /v1/payments/{mode}` with your **secret** key. Never from a browser —
    see [Authentication](/authentication).
  </Step>

  <Step title="Send the payer to the returned URL">
    The response carries a hosted page at `pay.hypermid.io`. Redirect to it, or
    embed it with the [SDK](/sdk/widget).
  </Step>

  <Step title="React to the result">
    Subscribe to a [webhook](/guides/webhooks). Treat the webhook as the
    trigger and a session read as the truth.
  </Step>
</Steps>

## Before you start

<CardGroup cols={3}>
  <Card title="Get an account" icon="envelope" href="/account">
    Onboarding runs through [support@hypermid.io](mailto:support@hypermid.io).
  </Card>

  <Card title="Sandbox first" icon="flask" href="/environments">
    `sk_test_` keys reach testnets only. No real money can move.
  </Card>

  <Card title="Try the API" icon="play" href="/api-reference">
    Interactive playground on every endpoint.
  </Card>
</CardGroup>

<Note>
  Amounts are **base units, as strings** — 10 USDC at 6 decimals is `"10000000"`.
  Strings because an 18-decimal amount exceeds the IEEE-754 safe integer range,
  so parsing it as a JSON number silently loses the low digits. Parse with a
  bigint, never `parseFloat`.
</Note>
