Remittance liquidity
How 0Pools can support approved remittance-style liquidity flows with quote locks, status, and reconciliation.
Remittance products need local funding, conversion, delivery, support, and reconciliation. 0Pools can support approved remittance-style flows when the partner owns the customer journey and 0Bit has approved the corridor and liquidity model.
Remittance problem
Without a pool network, a remittance app often has to coordinate:
- local fiat collection
- FX quote logic
- stablecoin acquisition
- wallet delivery or payout
- failed/returned payment handling
- customer support evidence
- finance reconciliation
0Pools does not replace the partner's compliance obligations. It gives the backend a quote/trade/status layer for approved liquidity.
Flow
Design pattern
| Product step | 0Pools object |
|---|---|
| Sender enters amount | Indicative quote preview. |
| Sender confirms | Firm quote. |
| Partner accepts | Transact with idempotency. |
| Funds move | Trade status. |
| Recipient ledger updates | Terminal status and reconciliation. |
Before and after
| Old approach | 0Pools-backed approach |
|---|---|
| Manual spread buffers to cover price movement. | Short firm quote window and explicit expiry. |
| Operators manually check settlement state. | Status polling and terminal webhooks. |
| Support searches payment and crypto systems separately. | Quote/trade/request ids join the record. |
Caution
Do not present remittance coverage by country or payout method unless that exact corridor is approved. 0Pools describes infrastructure, not legal availability.
Corridor architecture
0Pools should be treated as the conversion and liquidity layer inside a larger remittance product. The partner remains responsible for the customer journey, sender/recipient model, disclosures, fraud handling, and any local payout workflow.
Example corridor records
| Record | Responsible system | Why it exists |
|---|---|---|
| Sender order | Partner | User intent, source amount, recipient reference, and customer support context. |
| Compliance decision | Partner | Whether the partner can proceed with this user and corridor. |
| 0Pools quote | 0Pools | Time-limited conversion terms for the approved pool. |
| 0Pools trade | 0Pools | Execution/status record after quote acceptance. |
| Partner ledger entry | Partner | Pending or final state in the remittance product. |
| Reconciliation row | Partner and 0Bit records | Finance matching across order, quote, trade, and terminal state. |
Why this matters socially
Remittance users often care less about the underlying crypto mechanics than about clear value, predictable status, and support when something is delayed. 0Pools helps by making the conversion layer more explicit:
- Users do not wait on a hidden manual quote.
- The quote has a timer, so stale terms do not silently persist.
- The partner can show pending, settled, failed, or returned states instead of vague "processing" forever.
- Support teams can trace one joined record chain instead of searching fiat, stablecoin, and provider systems separately.
This improves the practical reliability of cross-border value movement, but product experiences should still avoid promising instant delivery, universal corridors, or guaranteed payout methods.
Example user messaging
| Situation | Good message |
|---|---|
| Quote ready | "Review this time-limited conversion quote." |
| Quote expired | "The quote expired. Refresh to continue." |
| Trade reserved | "Your transfer is pending settlement." |
| Trade settled | "Your transfer has moved to the next delivery step." |
| Trade failed or released | "We could not complete this conversion. Keep this reference for support." |
Never expose internal route, treasury, or provider language to end users.
Remittance product timeline
A remittance-style product needs a user-readable timeline and a finance-readable record chain.
| Step | User sees | Backend stores |
|---|---|---|
| Sender enters amount. | Estimated receive amount. | Draft order and indicative quote data. |
| Sender confirms. | Locked receive amount and expiry. | Firm quote id and accepted terms. |
| Server executes. | Transfer processing. | Transact id and idempotency key. |
| Status updates. | Pending, completed, failed, or returned. | Webhook/status event and ledger state. |
| Finance closes. | Receipt remains available. | Ledger entry and close period. |
Remittance support record
{
"sender_reference": "sender_991",
"recipient_reference": "recipient_332",
"partner_order_id": "remit_2026_0001",
"pool_id": "EUR-USDT",
"quote_id": "pq_live_01J4",
"transact_id": "pt_live_9A2",
"status": "settled",
"receipt_available": true
}Remittance guardrails
- Do not show exact settlement completion until terminal status is known.
- Do not promise a corridor that discovery does not return.
- Do not reuse expired quotes for a delayed sender confirmation.
- Keep recipient-facing copy based on status, not source/provider details.
Implementation depth
This page is about designing remittance-style liquidity around quote locks and reconciliation. For developers, the durable boundary is simple: your product should depend on conversion terms, user-facing pending states, and partner ledger references; it should not depend on local payout networks, liquidity sources, and settlement rails. That boundary is what lets 0Pools improve liquidity operations without forcing every partner to rebuild product code.
Product scenario
A user sends value to family in another country. 0Pools handles the conversion leg; the partner tracks local recipient delivery separately and reconciles both legs by reference.
Before and after in practice
| Before 0Pools | With 0Pools |
|---|---|
| The sender sees a price estimate, but the actual conversion and recipient credit can diverge without a joined record. | The sender sees bounded quote terms and a clear status timeline tied to durable ids. |
| 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 |
|---|---|---|
sender_order_id | Your product order id. | remit_123 |
pool_trade_id | The conversion trade. | pt_test_456 |
recipient_credit_id | Your recipient-side ledger entry. | rcpt_789 |
status_timeline | Ordered state changes. | quoted -> reserved -> settled -> credited |
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": "remittance-liquidity",
"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 |
|---|---|
| Recipient credited before conversion settles | Wait for terminal conversion state. |
| Fees not separated | Store conversion economics and local delivery fees separately. |
| Corridor disabled | Hide unsupported lane. |
| Support lacks trace | Keep sender, trade, and recipient ids together. |
Use-case patterns
| Pattern | How 0Pools helps |
|---|---|
| Family remittance | Convert sender fiat to stablecoin-backed value. |
| Creator payouts | Fund creator balances across borders. |
| NGO disbursement | Track recipient credits with conversion records. |
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.