Off-band rate quotes
A user requests a conversion at a rate that diverges sharply from your validated mid-market reference. Often a sign of an internal pricing bug, an arbitrage attempt, or a stale rate served from a degraded cache.
Stop FX-rate abuse before it lands in finance: catch off-band quotes, refund-rate gaming, exotic-pair volume spikes, and rate manipulation across 150+ currencies with a layered control model.
A user requests a conversion at a rate that diverges sharply from your validated mid-market reference. Often a sign of an internal pricing bug, an arbitrage attempt, or a stale rate served from a degraded cache.
A buyer pays at one rate, then requests a refund priced at a more favorable later rate. Always reconcile refunds against the locked rate stored on the original order.
Sudden surge in conversion volume on thinly-traded pairs (e.g. NGN, ARS, TRY) where spread widens. Concentrated activity here often signals abuse, not organic demand.
A pattern of many micro-conversions from one account, often used to test rate-lock windows or probe for spread arbitrage. Aggregate volume + frequency triggers an alert.
Storefront price calc, checkout authorization, refund recalculation. Each layer revalidates the rate against your reference feed instead of trusting the upstream call.
Persist the exact rate and `asOf` timestamp on the transaction record. Disputes are answered without rebuilding from feed history; refunds reuse the same rate.
Track rolling per-pair volatility and per-account conversion velocity. Alert on outliers — both directions: a quiet pair suddenly spiking and an active pair flatlining.
Immutable log of every rate served, validated, locked, and refunded. Required for compliance reviews and invaluable when reconstructing how an incident unfolded.
A minimal anomaly check that runs after every conversion and routes to the same alerting channel as your payment failures.
type Conversion = {
pair: string;
rate: number;
reference: number;
asOf: Date;
accountId: string;
};
const SPREAD_TOLERANCE = 0.0025;
const VELOCITY_THRESHOLD_PER_MIN = 30;
export async function checkAnomaly(conv: Conversion) {
const spread = Math.abs(conv.rate - conv.reference) / conv.reference;
if (spread > SPREAD_TOLERANCE) {
await alert('rate-spread-exceeded', { ...conv, spread });
}
const recent = await countRecentConversions(conv.accountId, 60_000);
if (recent > VELOCITY_THRESHOLD_PER_MIN) {
await alert('velocity-anomaly', { accountId: conv.accountId, count: recent });
}
}Card fraud targets stolen credentials. Currency-exchange fraud targets the rate itself — abusing stale prices, exploiting refund timing, or spreading volume across exotic pairs. Card-fraud tooling does not catch FX-rate abuse; you need rate-aware controls.
Locking the rate at checkout and storing the timestamp on the order. It eliminates refund-rate gaming, simplifies disputes, and gives finance a clean reconciliation trail — all from one schema change.
The Currency-Exchange.app API delivers rate reads in under 50ms globally. Validation is local (sanity bounds, freshness checks) so it adds negligible overhead on top of the read.
Yes. Currency-Exchange.app is GDPR, CCPA, and ISO 4217 compliant with audit trails, transparent data handling, and a documented 99.9% uptime SLA.
Join 50,000+ developers using rate validation to cut conversion costs and stop FX disputes
Transparent pricing plans • Instant setup
Set up monitoring and alerting for cross-border transactions
Validate exchange rates and prevent costly errors
Implementation patterns, caching, and rate limits for production
Strategies to cut FX margin leakage by up to 42%