What is 0Pools?
0Pools is the shared fiat-to-stablecoin liquidity network behind 0Bit products and approved headless partner flows.
0Pools is 0Bit's shared liquidity network: the pool ledger and partner API that connect fiat balances, stablecoin inventory, quote locks, execution state, settlement records, and reconciliation into one reusable infrastructure layer.
For most developers, 0Pools is not the first product to integrate. If you want a hosted on-ramp/off-ramp/swap user experience, use 0Gate. If you are an approved headless partner that must own the customer UX and backend ledger, 0Pools gives your server direct access to entitled pool discovery, quotes, execution, status, balance, and reconciliation.
0Pools is infrastructure, not a public widget
0Pools is gated early access. It is enabled per partner, per environment, and per pool. This product guide explains the network model; exact endpoint contracts live in the 0Pools API reference.
The problem before 0Pools
Without a shared liquidity network, every product team has to rebuild the same fragile stack:
| Before a shared pool layer | What breaks |
|---|---|
| Each product keeps its own exchange balances. | Capital is fragmented and one product can be dry while another sits idle. |
| Quotes are built from static spreads or stale market data. | Users see prices that cannot be executed or that change before acceptance. |
| On-ramp, off-ramp, and treasury flows use separate ledgers. | Support cannot join a user order to the actual settlement path cleanly. |
| Reconciliation lives in spreadsheets and operator notes. | Finance teams cannot prove exactly why a balance moved. |
| Every integration exposes different edge states. | Developers write one-off retry and failure logic for each product. |
0Pools exists to turn that into a shared network: one entitlement model, one quote lifecycle, one trade lifecycle, one partner-visible balance story, and one reconciliation vocabulary.
What changes with 0Pools
0Pools does not promise that markets stop moving. It changes where market movement is handled. A user-facing product receives partner-visible quote terms; 0Bit's infrastructure manages the private inventory, route, spread, risk, and settlement machinery behind that contract.
| With 0Pools | Developer impact |
|---|---|
| Entitled pools are discovered at runtime. | The UI only shows what the account may use. |
| Indicative quotes preview price without locking inventory. | Users can explore without creating stale locks. |
| Firm quotes lock executable terms for a short TTL. | The accept window is explicit and bounded. |
Execution is idempotent on quote and Idempotency-Key. | Retry safety is built into the backend flow. |
| Status and webhooks expose terminal states. | Your ledger updates from durable server records. |
| Balances and ledger entries are partner-visible. | Finance can reconcile credits, debits, refunds, and returns. |
The 0Pools network
For integrations, the developer contract stops at the 0Pools network boundary. You should understand that a shared liquidity spine exists, but your product should not build user experiences around venue names, treasury wallets, rebalancing thresholds, or route decisions.
Social and product intention
0Pools is meant to make cross-border value movement less bespoke. Many useful products need fiat-to-stablecoin liquidity: remittance apps, payroll platforms, wallets, contractor marketplaces, card programs, treasury desks, and marketplaces serving users across countries. Without infrastructure, each one has to become a mini exchange, treasury team, compliance operation, and reconciliation shop.
The product intention is to let approved builders focus on the application layer while 0Bit provides a reusable liquidity foundation:
- Better capital reuse across products instead of isolated balances.
- Bounded quote acceptance windows instead of open-ended price promises.
- Server-side execution instead of browser-owned money movement.
- Partner-scoped records instead of hidden manual reconciliation.
- Explicit account approval instead of public endpoint exposure.
What a partner actually builds
The browser displays state. The partner server owns quote creation, quote execution, polling, webhook handling, and ledger mutation.
Product boundary
| Question | 0Pools answer |
|---|---|
| Is this an SDK/widget? | No. It is a headless partner API and shared liquidity infrastructure. |
| Is it public/self-serve? | No. Access is approved and configured per partner. |
| Does it remove all market risk? | No. It gives bounded quote locks and partner-visible execution states. |
| Does it expose the route? | No. It exposes pool, quote, trade, status, balance, and ledger records. |
| Does it replace 0Gate? | No. 0Gate is the hosted retail/user-facing product; 0Pools is the infrastructure layer for approved headless flows. |
Evaluation model for serious integrators
A partner evaluating 0Pools should be able to answer four questions before writing production code.
| Question | What the docs should prove | Integration evidence |
|---|---|---|
| Can my product quote safely? | Quotes are explicit, short-lived, and tied to a pool lane. | Store quote id, expiry, side, amount, and accepted terms. |
| Can my product execute safely? | Execution is server-side and idempotent. | Store idempotency key, transact id, execution attempt, and current status. |
| Can finance reconcile? | Every movement joins back to quote, trade, status, event, and ledger. | Keep a ledger row even when the user journey fails. |
| Can support investigate? | Support can inspect partner-visible ids without exposing source or provider details. | Preserve request id, event id, quote id, trade id, and partner order id. |
Example society-scale outcome
Before 0Pools, a remittance app, payroll platform, and neobank might each build separate liquidity relationships, retry logic, quote screens, support dashboards, and finance ledgers. With 0Pools, those products can share the same pool primitives while keeping their own user experience and customer records.
{
"partner_product": "cross_border_wallet",
"pool_id": "EUR-USDT",
"user_intent": "buy_stablecoin",
"quote_contract": "firm_until_expiry",
"execution_contract": "server_side_idempotent",
"reconciliation_contract": "ledger_join_by_quote_and_trade"
}Product boundary that should be obvious
0Pools is not a generic exchange UI, a promise of unlimited liquidity, or a way for a partner to bypass compliance controls. It is a gated liquidity network with records a developer can build around: entitlement, availability, quote, trade, status, webhook, balance, and ledger.
Implementation depth
This page is about understanding 0Pools as a shared liquidity network. For developers, the durable boundary is simple: your product should depend on a reusable pool, quote, trade, balance, and reconciliation contract; it should not depend on how 0Bit sources, hedges, stores, and rebalances liquidity. That boundary is what lets 0Pools improve liquidity operations without forcing every partner to rebuild product code.
Product scenario
A remittance app, a wallet, and a checkout product all need fiat-to-stablecoin conversion. Instead of each product maintaining separate liquidity logic, they draw from the same 0Pools network and receive a consistent partner-facing record model.
Before and after in practice
| Before 0Pools | With 0Pools |
|---|---|
| Every product builds a custom liquidity stack, so user pricing, support states, and finance records drift between teams. | Each product keeps its own UX but inherits the same entitlement, quote, execution, status, and reconciliation vocabulary. |
| 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
| Record | Why it matters | Example |
|---|---|---|
pool_id | Names the partner-visible lane. | EUR-USDT |
side | Separates buy and sell behavior. | on_ramp |
status | Keeps UX and ledger decisions aligned. | settled |
request_id | Lets support trace an API call. | req_... |
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": "index",
"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 mode | Product response |
|---|---|
| Fragmented balances | Use one pool availability model instead of product-specific assumptions. |
| Stale price promises | Use indicative quotes for preview and firm quotes for acceptance. |
| Manual reconciliation | Preserve ids and terminal states from the start. |
| Wrong product layer | Use 0Gate when the hosted ramp is the right integration surface. |
Use-case patterns
| Pattern | How 0Pools helps |
|---|---|
| Consumer wallet | Stablecoin buy/sell inside a wallet experience. |
| Marketplace payouts | Convert value before paying global sellers. |
| Treasury movement | Move between fiat and stablecoin inventory with audit trails. |
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.