0Bit Documentation

Supported assets and pool types

How to present approved 0Pools assets, pairs, networks, sides, limits, and pool types safely.

Supported assets are not a static website list. They are a function of partner entitlement, pool capabilities, environment, product approval, and runtime liquidity.

Decision flow

Pool pair

A pool id expresses the pair. The quote request must match it.

Pool idfiatCurrencycryptoCurrencyExample use
EUR-USDTEURUSDTEUR-funded stablecoin delivery.
EUR-USDCEURUSDCEUR-to-USDC treasury or wallet flow.

If poolId is EUR-USDT, do not send fiatCurrency: "GBP" or cryptoCurrency: "USDC".

Sides

SideDisplay if
on_rampCapabilities and product approval allow buy flow.
off_rampExplicitly enabled; do not infer from API shape.

Networks

cryptoNetwork is the network selected for the quote. The canonical vocabulary includes tron, ethereum, bsc, polygon, and solana. The server default is tron when omitted, but a production UI should make the selected network explicit.

Delivery networks can be narrower. For a buy, the destination address and delivery network are locked on the quote. Always display them back to the user.

Limits and economics

Capabilities and quote responses expose:

  • Minimum order in USDT-equivalent.
  • Maximum order when configured.
  • Draw fee bps.
  • Spread cap bps.
  • Supported sides.
  • Supported networks.

Use these to validate before quote and explain quote terms after quote.

UI examples

Bad UIBetter UI
Hard-coded "USDT on all chains".Network list from capabilities.
Sell tab visible for everyone.Sell tab only when off_ramp is enabled.
Amount accepted then rejected late.Amount validated before firm quote.
Destination address entered after quote.Address captured before firm quote.

API details

Use List entitled pools and Read pool capabilities for exact fields.

What "supported" means

An asset can be conceptually supported by the platform but unavailable for a specific partner, environment, side, network, amount, or runtime condition. Product UI should always follow the account's discovery and capability data.

Pool types

Pool typeDescriptionProduct caution
Fiat to stablecoinFiat-funded stablecoin delivery.Primary on-ramp shape; destination network/address must be clear.
Stablecoin to fiatStablecoin-funded fiat payout or settlement.Gated; do not infer from pair support.
Stablecoin conversionStablecoin asset/network conversion where approved.Network handling and settlement records matter.
Configured 0Asset laneProgram-specific asset movement or mint/burn-adjacent flow.Requires asset, reserve, settlement, and compliance review.
Partner-funded programPartner prefunds balance and draws from approved pools.Balance ledger and funding references are required.

UI rendering pattern

{
  "pool_id": "EUR-USDT",
  "display": "EUR to USDT",
  "side": "on_ramp",
  "network_options": ["tron", "ethereum"],
  "amount_min": "10.00",
  "amount_max": "5000.00",
  "can_quote_now": true
}

Use this kind of normalized view inside your own product. It lets frontend code render choices without learning private pool internals.

Before and after

Static support tableEntitled pool model
Users see assets that may not work for their account.Users see only pools and networks their account can use.
Engineering updates code for every new network.UI is driven by capabilities.
Off-ramp appears because on-ramp exists.Each side is enabled independently.
Amount validation happens after user accepts.Amount and network are validated before firm quote.

Common mistakes

  • Showing all networks for a stablecoin because the stablecoin exists.
  • Showing off_ramp because on_ramp is available.
  • Treating sandbox support as live support.
  • Treating examples as entitlement.
  • Allowing destination address entry after quote lock.
  • Rounding decimal strings before reconciliation.

Asset support matrix

Supported does not only mean "listed in a dropdown." It means the asset, network, side, limits, precision, settlement behavior, and disclosure language are approved for the partner account.

FieldExampleProduct behavior
assetUSDTDisplay asset symbol and stablecoin disclaimer where required.
networkpolygonValidate address format and chain selection.
decimals6Store amounts as strings or minor units; avoid floats.
sidebuyRender only enabled actions.
min_amount / max_amount50.00 / 25000.00Pre-validate before firm quote.
statusactive, paused, deprecatedHide, disable, or migrate UX.

Rendering rule

function canRenderPoolAction(pool: PoolCapability, action: 'buy' | 'sell') {
  return pool.status === 'active'
    && pool.sides.includes(action)
    && pool.networks.some((network) => network.status === 'active');
}

Versioning and deprecation

ChangeRequired partner behavior
Network paused.Stop new quotes on that network; keep existing trade history visible.
Limit reduced.Apply new limits before creating quotes.
Asset deprecated.Hide new actions and provide migration/support copy.
New network added.Show only after discovery returns it for the partner.

Implementation depth

This page is about presenting assets, pairs, sides, networks, and pool types accurately. For developers, the durable boundary is simple: your product should depend on the account-specific supported set returned by discovery and capabilities; it should not depend on unlisted assets, future pairs, source depth, and route preference. That boundary is what lets 0Pools improve liquidity operations without forcing every partner to rebuild product code.

Product scenario

A developer builds an asset selector. Instead of shipping a hard-coded list, the selector reads pools, sides, networks, and limits at runtime and caches only for short UX windows.

Before and after in practice

Before 0PoolsWith 0Pools
Docs examples become product configuration, so unsupported pools appear in production.The product treats examples as examples and runtime capabilities as the contract.
Product teams infer liquidity behavior from provider-specific screens or manual notes.Product teams branch on 0Pools objects: pool, quote, trade, balance, webhook, and ledger.
Support asks engineering to reconstruct state from logs.Support starts from request id, quote id, trade id, event id, and ledger id.

System flow

Records to keep

RecordWhy it mattersExample
supported_networksNetworks allowed for the selected asset.[tron, arbitrum]
min_orderLower bound from capabilities.10.00
max_orderUpper bound from capabilities.5000.00
side_enabledWhether buy or sell is enabled.on_ramp=true

A useful implementation stores these records before adding optional analytics. Analytics can be rebuilt from durable state; missing ids usually cannot be reconstructed after a customer-impacting failure.

Example product record

{
  "product_area": "supported-assets-pool-types",
  "partner_reference": "partner_order_123",
  "pool_id": "EUR-USDT",
  "quote_id": "pq_test_123",
  "transact_id": "pt_test_456",
  "status": "reserved",
  "request_id": "req_01HZY0POOLS",
  "reconciliation_state": "open"
}

This record is intentionally partner-facing. It references 0Pools objects and your own product ids, but it does not include private liquidity routes, treasury balances, raw provider payloads, or customer secrets.

Failure modes and recovery

Failure modeProduct response
Example copied as configReplace static lists with capability fetch.
Network omittedUse the default only when the API contract allows it.
Pool type misunderstoodSeparate fiat/stablecoin, balance, and settlement concepts.
Limits not refreshedRe-read capabilities on session start and before quote.

Use-case patterns

PatternHow 0Pools helps
Asset selectorRender only approved lanes.
Checkout railsValidate amount before quote.
Admin dashboardExplain why an asset is hidden.

Developer checklist

  • Read runtime discovery and capabilities before rendering enabled actions.
  • Create firm quotes only when the user is ready to accept the terms.
  • Execute from your server with an idempotency key.
  • Treat webhooks and status reads as the source of truth for settlement state.
  • Reconcile by durable ids first, then by amount and timestamp.
  • Do not branch product behavior on provider names, route names, reserve balances, or treasury assumptions.

On this page