XML rate feeds

Public, unauthenticated XML rate feed for catalog listings.

Public, unauthenticated XML feed for catalog listings and rate monitors. One <item> per active pair, with <minamount> and <maxamount> bounds expressed in the source asset.

Live feed — point your aggregator at this URL.

/api/rates.xml

URLs

URLNotes
/api/rates.xmlPer-receive-network margin from the admin rate panel.
/rates/float.xmlByte-identical alias of /api/rates.xml: same snapshot, same ETag.

Response shape

Sample body
<?xml version="1.0" encoding="UTF-8"?>
<rates>
  <item>
    <from>BTC</from>
    <to>USDTTRC20</to>
    <in>1</in>
    <out>62450.12</out>
    <amount>120000</amount>
    <minamount>0.0002</minamount>
    <maxamount>0.08</maxamount>
  </item>
  <item>
    <from>ETH</from>
    <to>BTC</to>
    <in>1</in>
    <out>0.05418000</out>
    <amount>10</amount>
    <minamount>0.005</minamount>
    <maxamount>10</maxamount>
  </item>
</rates>

Each <item> encodes one active pair:

  • <from> and <to>: asset codes in the catalog dialect used by listing aggregators (BTC, USDTTRC20). Pairs whose source or destination is not in the catalog map are skipped.
  • <in>1</in>: the literal 1 (one unit of source).
  • <out>: receive amount for one unit of source, after the rate and the destination network fee.
  • <amount>: reserve depth in destination units, derived from the configured USD reserve floor at the current USD price.
  • <minamount> and <maxamount>: deposit window in source units. Both are quantised to the source asset’s precision and derived from the per-pair USD floor (default $30) and ceiling (default $5,000).

Field names minamount and maxamount are the post-2026-05-13 rename. Older mirror sites may still emit frommin and frommax; our feeds use the new canonical spelling.

Caching and ETag

Every response includes an ETag header (16-hex-char digest between quotes). Send it back as If-None-Match and the server returns HTTP 304 with no body when the snapshot has not changed. Snapshots are refreshed in the background and held briefly in-process per route, so polling does not amplify backend load. There is no per-caller rate limit on these endpoints.

Empty-state safety

When the rate feed is temporarily unavailable, the route returns HTTP 200 with an empty but well-formed <rates/> document instead of an error. Listing aggregators treat the absence of items as “exchange temporarily out of catalog” rather than as a parser failure.

Discovery

Point your aggregator registration at either URL. Because /api/rates.xml and /rates/float.xml are byte-identical aliases, your listing remains stable even if we collapse the URL space later. The recommended canonical URL is /rates/float.xml.

The XML feed pairs naturally with referral links: substitute the <from> and <to> values from each <item> into your /r/{code}?from=…&to=… URL template per row. The visitor lands on the homepage with that pair pre-filled, sees our live rate, and any order they create earns your revenue share.

Partner API.
Same engine as 0trace.

A private partner integration surface. Signed quotes, server-side pricing, webhook delivery, multiple reference codes, and a self-serve cabinet — all backed by the production exchange engine.

Need help?

Questions? Answers.

A partner integration surface on top of the same exchange engine that powers 0trace.io. You connect with a signed REST contract, query quotes, open orders, and receive webhook notifications. Our liquidity, our pricing, our payouts. You focus on your product.
No. The API is private and invite-only, aligned with the privacy posture of 0trace itself. There is no KYC, no identity collection, and no source-of-funds reporting required of partners or their end users.
Submit a request through our partner application form at 0trace.io/api/contact-sales and we’ll reply within three business days.
Traffic is encrypted in transit (TLS). Every request is signed with HMAC-SHA256 over the exact request body bytes and gated by a nonce-based replay window. Pricing, fees, and payout amounts are computed server-side. Payouts run on an isolated service that re-verifies each transfer against the on-chain deposit before broadcasting.
A per-partner sliding-window weight budget, default 2500 wu/min (≈50 creates/minute). Endpoint weights: /api/v1/create is 50, /api/v1/qr is 5, every other endpoint is 1. XML feeds run on a separate public bucket. Exceeding the budget returns 429 with a Retry-After header. To raise your cap, send your projected per-endpoint call rate to your operator contact.
Two ways to earn. Revenue share: send us traffic with your referral link and earn a share of our service fee on every order — the visitor sees our live rate. Markup: integrate through the API and add your own margin on top of our rate, shown in your own interface. Use either, or both.
Yes. 0trace operates its own liquidity pool across every supported asset and network. Quotes are recomputed server-side at order creation against the live feed. Payouts are direct, with no third-party intermediary.
Bitcoin, Ethereum, BSC, Solana, Tron, Monero, and Arbitrum One — covering native coins plus the major stablecoins on each network (USDT, USDC, USDC.e).
Yes. We push signed events for order.status_changed and partner.paid_out; you subscribe to the ones you want in your cabinet.

Follow us on X for the latest updates.

Subscribe