Skip to main content

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

  1. FX rate collection -- Hourly USD/fiat rates (USD/NGN, USD/ZAR, USD/KES, USD/GHS, USD/UGX) from ExchangeRate-API.

  2. Synthetic price -- For each crypto/fiat pair:

    CRYPTO/FIAT (synthetic) = CRYPTO/USDT (Binance) x USD/FIAT (ExchangeRate-API)
  3. Deviation check -- The verification engine computes percentage divergence between exchange VWAP and synthetic price against per-pair thresholds.

Status levels

StatusConfidenceMeaning
verified0.95Divergence within threshold. Rate is reliable.
caution0.80Divergence exceeds threshold but within 2x. Warrants attention.
unverified0.60Divergence exceeds 2x threshold. Use synthetic price as fallback.

Per-pair thresholds

CurrencyVerifiedCautionUnverified
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

FieldFreeBuilder+Enterprise
statusYesYesYes
data_qualityYesYesYes
confidence--YesYes
synthetic_divergence_pct--YesYes
notes--YesYes
pricing (via include_synthetic/include_sources)--YesYes
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.

  • Pricing engines: Only use rates with status: "verified". Fall back to the synthetic price (via include_synthetic=true) when status is unverified.
  • Monitoring: Alert when any pair transitions to caution or unverified.
  • Audit/compliance: Enterprise customers should use include_audit=true or Certificates for the full verification trail.