<!--
Sitemap:
- [Stridge](/index): Stridge is a crypto payment infrastructure platform — multi-chain wallets, automated deposit detection, secure payouts, and the Stridge Gateway Kit for any-to-any payments.
- [API Reference](/api-reference/): Stridge REST API reference — complete endpoint documentation for wallets, deposits, transfers, vaults, gas stations, networks, and transactions.
- [Changelog](/changelog): Release notes for Stridge SDKs and developer tools.
- [Example Page](/example): Example page demonstrating MDX features available in Stridge docs.
- [Stridge Gateway Kit](/gateway/): Stridge Gateway Kit — an integration kit for embedding any-to-any crypto payments in DeFi protocols and apps.
- [Getting Started](/getting-started): Get started with Stridge — create an API key, authenticate against the REST API, and make your first call.
- [Supported Networks](/networks): Blockchain networks and tokens supported by the Stridge payment infrastructure — network_id (SLIP-44), EIP-155 chain IDs, and the available native and stablecoin assets per chain.
- [Developer Tools](/sdk/): Headless Stridge SDKs for Node.js, Go, and React — wrap the Stridge REST API with fully-typed clients and ready-made flows.
- [Security](/security/): Stridge Security — how the Stridge KMS protects wallet keys and signs transactions without ever exposing private keys.
- [Universal Deposit Addresses](/uda/): Universal Deposit Addresses (UDA) — persistent, multi-chain deposit addresses with automatic cross-chain settlement to a fixed destination.
- [Webhooks](/webhooks/): Stridge webhooks — real-time HTTP notifications for deposits, wallet assignments, transactions, and balance changes with signed HMAC SHA-256 deliveries.
- [Go SDK](/sdk/go): Build on Stridge from Go with the official Stridge Go SDK.
- [Node.js SDK](/sdk/node): Build on Stridge from any Node.js runtime with the official Node SDK.
- [React SDK](/sdk/react): Embed Stridge payment flows in your React app with hooks and ready-made components.
- [Get a single deposit transaction by ID](/api-reference/deposits/get-a-single-deposit-transaction-by-id): Get details of a specific deposit transaction by its unique ID
- [Get a single deposit transaction by transaction id](/api-reference/deposits/get-a-single-deposit-transaction-by-transaction-id): Get details of a specific deposit transaction by on-chain transaction id (tx_id)
- [List deposit transactions](/api-reference/deposits/list-deposit-transactions): Get a paginated list of deposit transactions for the authenticated tenant with filtering support
- [Get gas station details by address](/api-reference/gas-stations/get-gas-station-details-by-address): Get detailed gas station information including all asset balances for a specific address
- [Get gas station details by wallet ID](/api-reference/gas-stations/get-gas-station-details-by-wallet-id): Get detailed gas station information including all asset balances for a specific wallet ID
- [List gas station wallets](/api-reference/gas-stations/list-gas-station-wallets): Get a paginated list of gas station wallets with filtering and sorting support
- [Get blockchain assets](/api-reference/networks/get-blockchain-assets): Get a list of all supported blockchain assets (tokens and native assets).
- [Get blockchain networks](/api-reference/networks/get-blockchain-networks): Get a list of all supported blockchain networks.
- [Get network list](/api-reference/networks/get-network-list): Get a public list of all networks with category grouping.
- [Get tenant network](/api-reference/networks/get-tenant-network): Get a specific network for the authenticated tenant by network ID and contract address
- [Get tenant networks](/api-reference/networks/get-tenant-networks): Get a list of networks available to the authenticated tenant with their enabled status
- [Update tenant network status](/api-reference/networks/update-tenant-network-status): Update the enabled status of a network for the authenticated tenant
- [Get a transaction by ID](/api-reference/transactions/get-a-transaction-by-id): Get details of a specific transaction by its ID
- [List unified transactions](/api-reference/transactions/list-unified-transactions): Get a paginated list of all transactions (deposits, payouts, refills, etc.) for the authenticated tenant
- [External transfer by address](/api-reference/transfers/external-transfer-by-address): Transfer assets from user wallet to an external address using wallet address.
- [External transfer by wallet ID](/api-reference/transfers/external-transfer-by-wallet-id): Transfer assets from user wallet to an external address using wallet ID.
- [Internal transfer between wallets by address](/api-reference/transfers/internal-transfer-between-wallets-by-address): Transfer assets from user wallet to hot wallet or gas station using addresses.
- [Internal transfer between wallets by ID](/api-reference/transfers/internal-transfer-between-wallets-by-id): Transfer assets from user wallet to hot wallet or gas station using wallet IDs.
- [Create payout](/api-reference/vault-transfers/create-payout): Creates a new payout from the tenant's vault wallet to an external address
- [Create payout with USD amount](/api-reference/vault-transfers/create-payout-with-usd-amount): Creates a new payout converting a USD amount to crypto at current rate
- [Get payout by ID](/api-reference/vault-transfers/get-payout-by-id): Retrieves a payout by its ID
- [List payouts](/api-reference/vault-transfers/list-payouts): Lists payouts for a vault with filtering and pagination
- [Transfer from vault to external address](/api-reference/vault-transfers/transfer-from-vault-to-external-address): Transfer assets from the tenant's vault wallet to an external address.
- [Get vault address by network](/api-reference/vaults/get-vault-address-by-network): Get the vault address for a specific network
- [Get vault balances](/api-reference/vaults/get-vault-balances): Get balances for all vault addresses with optional filtering
- [Get vault total value](/api-reference/vaults/get-vault-total-value): Get the total USD value across all vault assets
- [List vault addresses](/api-reference/vaults/list-vault-addresses): Get all vault addresses for the authenticated tenant
- [List vaults](/api-reference/vaults/list-vaults): List all vault accounts for the authenticated tenant
- [Create/assign a new wallet](/api-reference/wallets/create-assign-a-new-wallet): Assign a blockchain wallet to a user with the specified network and owner ID.
- [Get wallet details by address](/api-reference/wallets/get-wallet-details-by-address): Get detailed wallet information including all asset balances for a specific address
- [Get wallet details by ID](/api-reference/wallets/get-wallet-details-by-id): Get detailed wallet information including all asset balances for a specific wallet ID
- [Get wallets by owner](/api-reference/wallets/get-wallets-by-owner): Get all wallets assigned to a specific owner with optional filtering
- [List assigned wallets](/api-reference/wallets/list-assigned-wallets): Get a paginated list of assigned wallets for the authenticated tenant with filtering and sorting support
-->

# Universal Deposit Addresses \[One address, every EVM chain, automatic settlement]

**Universal Deposit Addresses (UDA)** are persistent, multi-chain deposit
addresses with automatic cross-chain settlement. One API call returns a
deposit address that works across every supported chain — any deposit is
detected, routed, swapped or bridged as needed, and settled to a fixed
destination you pick up front.

In one sentence: **set it up once, deposit forever, from any chain.**

:::info
Phase 1 covers EVM chains only — Ethereum, Arbitrum, Base, Polygon, and
BNB Smart Chain. Non-EVM chains (Tron, Solana, Bitcoin) and fiat
on-ramps are on the roadmap.
:::

## Why UDA

Cross-chain deposits are painful for end users and for integrators:

* Users must manually bridge, swap, and pick the right network before they
  can deposit.
* Integrators end up building per-chain deposit logic, address management,
  and settlement themselves.
* Ephemeral per-checkout addresses can't be reused, can't be displayed in
  a profile, and force re-configuration on every new flow.

The result is high friction, lost deposits, and engineering overhead on
every integration.

UDA replaces all of that with a single persistent address per user or
account. The integrator calls the API once, and every subsequent deposit —
on any chain, in any supported token — lands in the configured
destination automatically.

## How it works

:::::steps

### Create a UDA

You call [`POST /v1/uda`](#api-surface) once per user or account. Stridge
provisions deposit addresses across every supported chain and returns
them as a single UDA record.

### User deposits from any chain

The user sends any supported token on any supported EVM chain to the
address. They don't need to pick the right network in your UI — every
chain is already wired up.

### Stridge detects the deposit

The Observer service watches the registered addresses and emits a
`deposit.new` event when the transaction is detected and confirmed.

### UDA creates a settlement

The UDA service opens a settlement and hands it to the Routing Engine.

### Routing Engine picks a route

The Routing Engine quotes across bridge and swap providers (LI.FI,
Relay), selects the best route, and executes it — swap, bridge, or
both — through the Executer.

### Settlement webhook fires

You receive a webhook when the settlement completes on the destination
chain in the destination token. The same UDA address keeps working for
future deposits — no re-creation needed.

:::::

```text
Integrator ── POST /v1/uda ──▶ UDA Service ──▶ returns deposit addresses
                                     │
User deposits on any chain ──▶ Observer ──▶ deposit.new
                                     │
                                     ▼
                             UDA Service opens settlement
                                     │
                                     ▼
                             Routing Engine quotes & executes
                                     │
                                     ▼
                             Webhook: settlement complete
```

## Target use cases

| Segment               | Use case                                              |
| --------------------- | ----------------------------------------------------- |
| Prediction markets    | Accept deposits from any chain into a single vault    |
| Exchanges / Trading   | Multi-chain deposit for trading accounts              |
| Gaming / Casino       | Fund player accounts from any wallet or chain         |
| DeFi protocols        | Cross-chain deposits into vaults, pools, or lenders   |
| Payment processors    | Accept crypto payments settled to a single chain      |
| B2B SaaS              | Programmatic deposit infrastructure via API           |

## Supported chains (Phase 1)

EVM-only for the first release. All chains are available on every UDA by
default.

| Network          | `chain_id` (EIP-155) |
| ---------------- | -------------------- |
| Ethereum         | `1`                  |
| BNB Smart Chain  | `56`                 |
| Arbitrum One     | `42161`              |
| Polygon PoS      | `137`                |
| Base             | `8453`               |

See the full [Supported Networks](/networks) page for identifiers, native
assets, and icon assets.

## Supported tokens (Phase 1)

* **Stablecoins** — USDC, USDT
* **Native coins** — ETH, BNB, MATIC
* **Major tokens** — rolling out in the same release

## Routing scenarios

Every combination of source and destination is handled in Phase 1:

| Scenario                          | Example                            | How it routes                    |
| --------------------------------- | ---------------------------------- | -------------------------------- |
| Same chain, same token            | USDC on Polygon → USDC on Polygon  | Direct transfer from vault       |
| Same chain, different token       | USDT on Arbitrum → USDC on Arbitrum | DEX swap via LI.FI              |
| Cross chain, same token           | USDC on Ethereum → USDC on Polygon | Bridge via LI.FI or Relay        |
| Cross chain, different token      | USDT on BSC → USDC on Polygon      | Swap + bridge via LI.FI          |

## API surface

Phase 1 endpoints. Full request and response schemas land in the
[API Reference](/api-reference) alongside the rest of the platform.

| Endpoint                       | Purpose                                             |
| ------------------------------ | --------------------------------------------------- |
| `POST /v1/uda`                 | Create a UDA with multi-chain deposit addresses     |
| `GET /v1/uda/:id`              | Get UDA details and settlement stats                |
| `GET /v1/uda`                  | List UDAs, filter by owner or status                |
| `PATCH /v1/uda/:id`            | Update UDA config (pause, change tokens, etc.)      |
| `GET /v1/supported-chains`     | All supported chains with tokens                    |
| `GET /v1/quote`                | Settlement estimate (fees, time, route)             |
| `GET /v1/uda/:id/settlements`  | Settlement history for a UDA                        |
| `GET /v1/settlements/:id`      | Settlement detail                                   |
| Webhooks                       | Real-time settlement event notifications            |

Retiring a UDA (`DELETE /v1/uda/:id`) ships in Phase 2.

## Webhooks

UDA settlements emit real-time notifications through the standard
[Stridge webhooks](/webhooks) pipeline — same envelope, same HMAC
SHA-256 signature, same retry semantics. Subscribe to settlement events
to know the moment funds land on the destination chain.

## What's not in Phase 1

* Non-EVM chains (Bitcoin, Tron, Solana)
* Fiat on-ramp integration
* Smart contract actions on the destination (e.g. auto-stake, auto-lend)
* KYT / AML screening
* Tenant billing and fee collection
* Public-facing dashboard views for UDA

## Success targets

| Metric                                    | Target          |
| ----------------------------------------- | --------------- |
| Settlement success rate                   | 99.5%           |
| Settlement time — same chain              | \< 15 seconds    |
| Settlement time — cross chain (L2 → L2)   | \< 60 seconds    |
| API uptime                                | 99.9%           |
| Time to first integration                 | \< 1 day         |

## Long-term vision

Any-to-any payment infrastructure — **any chain, any token, any source
→ any destination**. UDA is the foundational primitive. Later phases
extend it to Tron, Solana, Bitcoin, fiat on-ramps, and programmable
actions on the destination chain.

## Next

* Start with [Getting Started](/getting-started) to provision an API key.
* Browse [Supported Networks](/networks) for chain and token identifiers.
* Wire up [Webhooks](/webhooks) to receive settlement events.
