Hidden processor margins
Most payment processors charge 2–4% above mid-market for cross-border conversions, baked into the settlement amount with no breakdown shown. Routing rates through a transparent API surfaces and removes that spread.
A practical guide to finding and eliminating hidden FX spread in cross-border commerce. Proven strategies that recover 35–42% of conversion margin for businesses scaling international revenue.
Most payment processors charge 2–4% above mid-market for cross-border conversions, baked into the settlement amount with no breakdown shown. Routing rates through a transparent API surfaces and removes that spread.
When the storefront converts and the processor converts again at settlement, you pay the spread twice. Aligning both stages on a single rate source removes the duplicate.
Refunds priced at today’s rate when the order shipped at last week’s rate eat margin invisibly. Locking the rate at checkout and reusing it for refunds eliminates the leak.
Finance teams spend hours per month tracing which rate priced which order. A timestamped, persisted rate per order removes that work entirely.
Pull six months of cross-border transactions. For each, compute (settled amount × processor rate) − (settled amount × API mid-market). The difference is your opaque spread cost.
Quote the conversion via the API at checkout authorization, lock the rate, and pass the locked amount as the line-item base currency. Processor charges what you quoted, no second conversion.
PDPs and cart pages use a cached rate with a 30–60s TTL. Checkout always re-quotes live. Cuts API volume by 95%+ while keeping displayed prices accurate.
Once you have measured volume, move to a tiered plan that matches it. The Currency-Exchange.app Business and Premium tiers give per-credit pricing well below pay-as-you-go for steady high-volume workloads.
The minimal pattern: quote at checkout, persist on the order, reuse for any later finance event (refund, reconciliation, reporting). One rate per order, one source of truth.
async function lockRateForCheckout(
fromCurrency: string,
toCurrency: string,
amount: number,
) {
const quote = await api.convert({ from: fromCurrency, to: toCurrency, amount });
// Persist the rate + timestamp on the order.
// Reuse this rate for refund and finance reconciliation.
return {
rate: quote.rate,
asOf: quote.asOf,
convertedAmount: quote.result,
};
}Join 50,000+ developers who have cut conversion margin by 35–42% by routing rates through a transparent API instead of opaque processor markups.
Transparent pricing plans • Instant setup