Rate Verification
Every rate returned by /v1/rates/live includes a status and (for Builder+) a confidence score, computed by comparing the exchange VWAP against an independently calculated synthetic price.
How it works
-
FX rate collection -- Hourly USD/fiat rates (USD/NGN, USD/ZAR, USD/KES, USD/GHS, USD/UGX) from ExchangeRate-API.
-
Synthetic price -- For each crypto/fiat pair:
CRYPTO/FIAT (synthetic) = CRYPTO/USDT (Binance) x USD/FIAT (ExchangeRate-API) -
Deviation check -- The verification engine computes percentage divergence between exchange VWAP and synthetic price against per-pair thresholds.
Status levels
| Status | Confidence | Meaning |
|---|---|---|
verified | 0.95 | Divergence within threshold. Rate is reliable. |
caution | 0.80 | Divergence exceeds threshold but within 2x. Warrants attention. |
unverified | 0.60 | Divergence exceeds 2x threshold. Use synthetic price as fallback. |
Per-pair thresholds
| Currency | Verified | Caution | Unverified |
|---|---|---|---|
| Default (ZAR, KES, GHS, UGX) | ≤2% | 2–5% | >5% |
| NGN | ≤5% | 5–10% | >10% |
NGN pairs have higher tolerance due to the parallel market premium. USDTNGN routinely trades 5--10% above the official rate (legitimate market behavior).
Tier-gated fields
| Field | Free | Builder+ | Enterprise |
|---|---|---|---|
status | Yes | Yes | Yes |
data_quality | Yes | Yes | Yes |
confidence | -- | Yes | Yes |
synthetic_divergence_pct | -- | Yes | Yes |
notes | -- | Yes | Yes |
pricing (via include_synthetic/include_sources) | -- | Yes | Yes |
audit (via include_audit) | -- | -- | Yes |
Example response (data.{PAIR} format)
Free tier:
{
"data": {
"BTCNGN": {
"rate": 92745268.5,
"calculation": "vwap",
"data_freshness_seconds": 7,
"sources": [
{"exchange": "luno", "rate": 92948735.0, "time": "2026-04-03T01:45:00+00:00"},
{"exchange": "quidax", "rate": 92541802.0, "time": "2026-04-03T01:45:00+00:00"}
],
"status": "verified",
"data_quality": "high"
}
},
"meta": {"request_id": "...", "timestamp": "...", "latency_ms": 5}
}
Builder+ tier adds confidence, synthetic_divergence_pct, and notes to each pair object.
Certificates
Enterprise customers can retrieve cryptographically signed rate attestation certificates via the Certificates endpoint. Each certificate contains HMAC-SHA256 signed audit data for a specific pair and timestamp, suitable for regulatory reporting.
Inline audit hashes
Enterprise customers can pass include_audit=true on /v1/rates/live to receive the HMAC-SHA256 audit hash inline:
"audit": {"signature": "sha256:d842a519e279..."}
Premium and divergence analysis
The Premium Analysis endpoint provides time-series data on the divergence between exchange VWAP and synthetic cross-rate prices. Available to Builder tier and above.
Recommended usage
- Pricing engines: Only use rates with
status: "verified". Fall back to the synthetic price (viainclude_synthetic=true) when status isunverified. - Monitoring: Alert when any pair transitions to
cautionorunverified. - Audit/compliance: Enterprise customers should use
include_audit=trueor Certificates for the full verification trail.