Skip to content

Pilot Program

The DPX pilot is designed so that every scenario — including failures — is visible, traceable, and recoverable before you move real money. Sandbox mode gives you full fee math and settlement simulation with zero on-chain commitment.


Add ?sandbox=true to any pricing endpoint. You get:

  • Real fee calculations using live oracle data
  • A mock quoteId and settlement reference
  • Simulated ESG redistribution amounts
  • No wallet interaction, no token transfer, no on-chain transaction
Terminal window
# Full quote in sandbox — real math, mock settlement
curl "https://stability.untitledfinancial.com/quote?amountUsd=1000000&hasFx=true&esgScore=75&sandbox=true"
# Check stability before a large sandbox settlement
curl "https://stability.untitledfinancial.com/reliability"
# Get live ESG score (sandbox flag not needed — always live data)
curl "https://esg.untitledfinancial.com/esg-score"

Sandbox responses are identical in shape to production responses. The only differences:

FieldSandboxProduction
quoteIdMock UUID prefixed sandbox_Real UUID, on-chain verifiable
settlementRefMock referenceOn-chain tx hash on Base
onChainfalsetrue after settlement executes
esgRedistribution.txHashnullStoracha IPFS CID

Every settlement moves through a defined set of states. If anything goes wrong, the quoteId is your recovery key.

QUOTED → VERIFYING → EXECUTING → CONFIRMED → REDISTRIBUTING → COMPLETE
FAILED → REFUNDED
StateWhat it meansWhat you can do
QUOTEDFee quote returned, quoteId issuedQuote valid for 300 seconds. Pass quoteId to settlement call.
VERIFYINGOracle confirming fees match on-chain enforcementWait — takes 1–3 seconds. Do not resubmit.
EXECUTINGTransaction submitted to Base mainnetWait for block confirmation (~2 seconds on Base).
CONFIRMEDSettlement tx included in a blockSafe to notify counterparty. TxHash is available.
REDISTRIBUTINGESG fee being distributed to impact poolsAutomatic. Completes within 1 block after settlement.
COMPLETEAll components settled and ESG redistributedFinal state. IPFS receipt available.
FAILEDTransaction reverted or oracle unreachableSee error scenarios below. Funds not moved.
REFUNDEDFailed settlement — funds returned to senderConfirmed by on-chain event. No action needed.

The quoteId returned by /quote is your reference for the entire lifecycle.

Terminal window
# Check settlement status by quoteId
curl "https://stability.untitledfinancial.com/settlement/{quoteId}"

Response includes current state, txHash (once EXECUTING), and ESG redistribution receipts (once REDISTRIBUTING).

Every confirmed settlement is visible at basescan.org with the Base mainnet tx hash. Search by:

  • Transaction hash (0x...)
  • Sender wallet address
  • DPXSettlementRouter contract address: (address published once deployed)
Terminal window
# Check if oracle is live and processing
curl "https://stability.untitledfinancial.com/health"
# Check current peg deviation — flag if > 50 bps
curl "https://stability.untitledfinancial.com/reliability"

Symptom: /quote or /reliability returns a network error or 5xx.

What happens to funds: Nothing. No settlement is submitted without a valid quote response. If the oracle goes down after EXECUTING has started, the transaction is either already in the mempool (safe) or not yet submitted (no risk).

Recovery:

  1. Check /health — if down, wait and retry. Fly.io restarts automatically within 30–60 seconds.
  2. If you need to proceed urgently, query /reliability directly — the peg stability data is cached and may still respond.
  3. Do not resubmit with a new amount. The original quoteId is still valid for 300 seconds from issue time.

Symptom: Settlement call returns QUOTE_EXPIRED.

What happens to funds: Nothing. Expired quotes are rejected before any on-chain transaction is initiated.

Recovery: Request a new quote via /quote with the same parameters. The new quote will reflect current oracle pricing.


Symptom: State moves to FAILED. On-chain tx shows reverted.

What happens to funds: The transaction reverted — funds were never transferred. The sender’s wallet balance is unchanged (minus Base gas, typically < $0.05).

Common causes and fixes:

CauseHow to identifyFix
Fee mismatchOracle fee changed between quote and executionRe-quote and resubmit
Insufficient token balanceSender wallet has less DPX than settlement amount + feesTop up wallet before retrying
Router not approvedERC-20 approval not granted to DPXSettlementRouterCall approve(routerAddress, amount) on DPX token first
Stability check failedisHealthy: false on /reliabilityWait for oracle to restore stability, then retry

Funds appear stuck — settlement shows EXECUTING but no tx hash

Section titled “Funds appear stuck — settlement shows EXECUTING but no tx hash”

Symptom: Status shows EXECUTING for more than 30 seconds. No tx hash returned.

What’s likely happening: Transaction is in the Base mempool, waiting for inclusion. Base typically confirms in 2 seconds — if it takes longer, network congestion is unusual but possible.

What to do:

  1. Wait up to 60 seconds before taking action.
  2. Check basescan.org for the sender wallet address — if the transaction appears as pending, it is in the mempool and will confirm.
  3. Do not resubmit. Resubmitting creates a duplicate transaction risk. The first one will resolve.
  4. If no pending tx on Basescan after 60 seconds, the submission may have failed silently — check /settlement/{quoteId} for state update.

Symptom: Settlement is CONFIRMED but esgRedistribution shows no IPFS receipt.

What happened: The redistribution call happens in a separate transaction after settlement confirmation. It is automatic but separate.

What to do:

  1. Wait for one additional block (~2 seconds on Base).
  2. Re-query /settlement/{quoteId} — the esgRedistribution.txHash and IPFS CID will appear once the redistribution transaction confirms.
  3. If after 5 minutes there’s no receipt, contact partner@untitledfinancial.com with the quoteId — we can trace the redistribution tx manually.

Symptom: /reliability returns peg.deviationBps >= 50 or stability.currentScore < 70.

Decision framework:

Stability ScorePeg DeviationRecommendation
≥ 90< 20 bpsProceed — oracle fully healthy
70–8920–49 bpsProceed with monitoring — elevated but within tolerance
< 70≥ 50 bpsDelay if possible — oracle is flagging instability
Any≥ 100 bpsDo not settle — wait for oracle confirmation of peg restoration

For large settlements (> $1M), always call /reliability first and check isHealthy. The oracle provides 30–90 day early warning signals precisely for this purpose.


Before settling real funds for the first time:

  • Test the full flow in sandbox mode with your target amount and ESG score
  • Confirm the /reliability stability score is ≥ 90 and isHealthy: true
  • Verify your DPX wallet has sufficient balance (settlement amount + fees + gas reserve)
  • Grant ERC-20 approval to DPXSettlementRouter for at least the settlement amount
  • Record the quoteId before submitting — this is your recovery key
  • Have the oracle health endpoint bookmarked: https://stability.untitledfinancial.com/health
  • Have Basescan open with your wallet address ready to verify tx inclusion

Set up a simple peg alert using n8n or a cron script:

Terminal window
# Peg monitor — run every 5 minutes
curl -s "https://stability.untitledfinancial.com/reliability" | \
python3 -c "import sys,json; d=json.load(sys.stdin); \
print('ALERT' if d['peg']['deviationBps']>=50 else 'OK', d['peg']['deviationBps'], 'bps')"

Or use the n8n workflow template — the peg alert workflow is pre-built.


Contact partner@untitledfinancial.com with:

  • Your quoteId for any transaction you want traced
  • The error or state you’re seeing
  • The endpoint and parameters you called

Response time during beta: 1–2 business days. For urgent settlement issues during a live pilot, include “URGENT” in the subject line.

Request pilot access →