0Bit Documentation

Fiat and stablecoin pools

How 0Pools models fiat-to-stablecoin liquidity lanes for approved partner products.

0Pools is designed around fiat-to-stablecoin liquidity. A partner does not integrate with a raw venue; it integrates with an approved pool lane such as fiat in, stablecoin out, with quote, trade, status, and reconciliation records around that lane.

Pool lane model

Why fiat and stablecoin need a pool layer

Fiat and stablecoins live in different systems. Fiat has bank rails, references, settlement windows, returns, and compliance checks. Stablecoins have networks, addresses, confirmations, and delivery risk. 0Pools puts a product contract over that complexity.

ProblemPool-layer answer
Fiat and crypto settle on different clocks.Trade statuses separate acceptance from final settlement.
Users need a simple quote.Partner-visible rate, spread, fee, expiry.
Finance needs auditability.Quote id, trade id, balance ledger, request id.
Product needs reusable infrastructure.Same pool layer can support Gate, Base, partner API, and internal execution.

Example lanes

Examples are illustrative. Your account can only use pools returned by discovery.

LaneTypical user story
EUR-USDTBuy USDT with EUR for wallet funding, payroll, or treasury movement.
EUR-USDCBuy USDC with EUR for stablecoin settlement flows.
Other fiat/stablecoin lanesEnabled only after product, liquidity, and compliance review.

Stablecoin delivery

For on-ramp flows, the destination address is locked at firm quote time. That prevents a later request from redirecting funds. Your app should validate and display the destination address before the user accepts the quote.

What not to claim

Do not claim every fiat currency, every stablecoin, every network, instant settlement, or zero-cost conversion. The accurate product claim is: approved partners can discover entitled pools and request bounded quotes against those pools.

The lane is the product primitive

A lane is more than a currency pair. It is the approved relationship between a fiat currency, a stablecoin, allowed sides, supported networks, limits, quote behavior, and settlement-facing records. Partners should render lanes from discovery and capability responses, not from a static asset table.

Example lane records

{
  "pool_id": "EUR-USDT",
  "fiat_currency": "EUR",
  "crypto_currency": "USDT",
  "supported_sides": ["on_ramp"],
  "supported_networks": ["tron", "ethereum"],
  "min_order": "10.00",
  "max_order": "5000.00",
  "availability": "entitled"
}

The exact field names belong in the API reference. The product concept is what matters here: a partner should only build UI from pools and capabilities that the account can actually use.

Before and after pool lanes

Before 0PoolsWith 0Pools lanes
Product hard-codes which fiat/stablecoin pairs might exist.Product asks which pools this partner can use.
Network support is buried in product copy or settings.Network support is rendered from capabilities.
Amount limits are discovered after the user confirms.Amount validation happens before firm quote.
Each product builds separate reconciliation joins.Quote, trade, balance, and request ids can follow a common shape.

Use-case map

Lane shapeCommon use caseWhat to verify
Fiat to USDTWallet funding, treasury movement, remittance liquidity.Destination network, address, quote expiry, balance funding.
Fiat to USDCMerchant settlement, treasury movement, neobank balance.Product approval, network support, limits.
Stablecoin to fiatGated off-ramp or payout flow.Explicit enablement, crypto-receipt address, credited crypto balance, approved payout destination, compliance approval.
Fiat to configured 0AssetAsset-specific program.Entitlement, mint/burn lifecycle, settlement boundary.

Developer rules

  • Always render the pool id, asset, side, network, amount, and quote expiry back to the user before acceptance.
  • Do not assume that support for one network implies support for another network.
  • Do not infer off-ramp support from on-ramp support; sell requires explicit enablement and a crypto-receipt gate before fiat payout.
  • Treat unavailable quotes as a normal operating state, not an exceptional crash.
  • Preserve decimal strings exactly for ledger and reconciliation.

Lane specification

Every fiat/stablecoin pool lane should be treated as a product primitive with explicit capabilities.

CapabilityExampleWhy it matters
Fiat assetEURDetermines source currency, formatting, settlement expectations.
Stablecoin assetUSDTDetermines target asset and precision.
Networkethereum, polygonDetermines destination validation and delivery behavior.
Sidebuy or sell when enabled.Controls user action and risk model.
LimitsMin/max order amount.Prevents avoidable quote failures.
Quote TTLShort acceptance window.Prevents stale price acceptance.

Lane payload example

{
  "pool_id": "EUR-USDT",
  "fiat_asset": "EUR",
  "stablecoin_asset": "USDT",
  "enabled_sides": ["buy"],
  "networks": [
    { "name": "ethereum", "address_format": "evm", "confirmations_policy": "shown_by_status" },
    { "name": "polygon", "address_format": "evm", "confirmations_policy": "shown_by_status" }
  ],
  "limits": {
    "min_source_amount": "50.00",
    "max_source_amount": "25000.00"
  }
}

Lane test cases

CaseExpected behavior
Valid EUR to USDT quote under max amount.Firm quote returns expiry and executable quote id.
Unsupported network selected.UI blocks or backend returns controlled validation error.
Amount below minimum.UI shows minimum before requesting firm quote.
Quote expires while user is reviewing.Accept is disabled and a fresh quote is required.

Implementation depth

This page is about treating fiat-to-stablecoin lanes as reusable product primitives. For developers, the durable boundary is simple: your product should depend on pair, side, network, amount bounds, quote terms, and delivery fields; it should not depend on how fiat and stablecoin inventory is sourced or rebalanced. That boundary is what lets 0Pools improve liquidity operations without forcing every partner to rebuild product code.

Product scenario

A product supports EUR to USDT today and adds EUR to USDC later. The UI does not change its money logic; it renders lanes from pool discovery and uses the same quote/trade lifecycle.

Before and after in practice

Before 0PoolsWith 0Pools
Every new asset pair creates a new integration path with custom validation and settlement assumptions.New lanes become configuration and entitlement, while the product keeps the same quote and reconciliation 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
pairHuman-readable lane.EUR/USDT
fiat_currencyInput currency for buy flow.EUR
crypto_currencyOutput asset for buy flow.USDT
crypto_networkNetwork selected for quote.tron

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": "fiat-stablecoin-pools",
  "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
Asset shown without entitlementAlways render from discovery.
Wrong network for addressValidate network before firm quote.
Amount outside limitsBlock before quote where capabilities provide limits.
Lane unavailableLet users choose another enabled lane or try later.

Use-case patterns

PatternHow 0Pools helps
Wallet depositsBuy stablecoin into a wallet.
Treasury conversionConvert operational fiat into stablecoin.
Marketplace balanceFund seller payout balances.

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