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.xmlURLs
| URL | Notes |
|---|---|
| /api/rates.xml | Per-receive-network margin from the admin rate panel. |
| /rates/float.xml | Byte-identical alias of /api/rates.xml: same snapshot, same ETag. |
Response shape
<?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 literal1(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 $1) 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.
Pairing with referral links
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, and any order they create earns per-code afftax automatically.