CrestRate
Log inSign up

Live rates, picked in your favour

At any given moment your rate providers disagree — by 0.14% on a typical pair, and up to 0.38% on the widest. Most APIs hand you whichever number the one vendor they buy from happens to publish. We compare 8 independent sources on every request and return the one most favourable to you: the highest when you charge, the lowest when you pay.

No card required. Your first API key takes about two minutes.

8 rate sources
8
currency pairs
20
fastest source refresh
1m

What that's worth to you

Choosing the most favourable source instead of a middling one is worth about 0.068% per order right now — 0.28% on the widest pair. It applies to every cross-border order, automatically, with no change to how you price.

about $72 more per monthroughly $864 a year

Computed from the live spread across our sources at this moment (highest vs. median, charging side), before any markup you configure. Real figures move with the market.

And it stays defensible

The selected rate is clamped in both directions — capped when you charge, floored when you pay — so it never drifts far from the live market. If a customer or counterparty checks it against a public converter, it holds up. You are not overcharging — you are no longer donating the spread to whichever vendor your old API happened to use.

For anyone charging or paying across currencies

If you price in one currency and settle in another, this is the problem it solves. Common uses:

Cross-border e-commerce

Price goods in one currency and show checkout totals in the customer's.

SaaS and subscriptions

Keep one price list in US dollars and bill each customer in their local currency.

Visitor spending in Japan

Hotels, retail, duty-free shops and POS systems price in yen; visitors pay in US dollars, euros, Hong Kong dollars or yuan.

B2B import and export

Invoice in the buyer's currency, and lock the rate with a quote for as long as your offer is valid.

Platforms and marketplaces

Charge buyers with strategy=max and pay sellers out with strategy=min — one API for both sides.

Travel, study-abroad and visa agencies

Quote service fees in the client's currency.

Games and digital goods

Set regional prices in each local currency.

You choose which side the rate favours

On the same pair, a higher rate is better when you charge and a lower one is better when you pay. Tell us your side with the strategy parameter; markup direction and rounding follow it.

strategy=maxside=chargeDefault

You're charging

When collecting from customers, take the highest rate across sources. The same list price brings in more.

For: e-commerce, SaaS, hotels, B2B invoicing

strategy=minside=pay

You're paying

When paying out, take the lowest rate. The same amount owed costs you less.

For: marketplace seller payouts, paying overseas suppliers

strategy=medianside=charge

Neutral

Take the rate closest to the median of all sources, favouring neither side.

For: bookkeeping, internal reporting

Both directions are guarded

The selected rate is checked against a live market anchor. When charging, a rate that is too high is pulled back to the cap. When paying, a rate that is too low is lifted to the floor. The capped and floored fields tell you when either kicked in. Whichever side you are on, the price holds up against a public converter.

Markup per API key, changeable any time

Markup is the margin you add on top of the selected rate, in basis points: 100 bps = 1%. Set it for each key in the dashboard.

  • Each key has one default markup, from 0 to 1,000 bps (0% to 10%).
  • Override it per payment currency — for example HKD at 120 bps and JPY at 200 bps. A per-currency setting beats the key's default.
  • Direction follows the side: charging moves the rate up, paying moves it down. Rounding follows too, so the fraction always lands in your favour.
  • Saved changes apply immediately, from the next request.
  • Quotes already issued are unaffected — markup is locked in when a quote is created.
  • The dashboard previews the effect as you type: how much more the customer pays, or how much less you pay out.

Worked example

An order of US$1,000, settled in Hong Kong dollars, at a rate of 7.8000.

ScenarioNo markupMarkup 150 bps (1.5%)Difference
You're chargingstrategy=maxCustomer pays HK$7,800.00Rate 7.8000Customer pays HK$7,917.00Rate 7.9170HK$117.00 more collected
You're payingstrategy=minYou pay HK$7,800.00Rate 7.8000You pay HK$7,683.00Rate 7.6830HK$117.00 less paid out

Illustrative numbers, not live rates. For an easy comparison, both rows assume the same selected rate.

Where markups must be disclosed (for example, consumer payments in the EU), disclose yours to your customers.

What you get

Many sources, one rate

Every quote is cross-checked against all live sources. Outliers are dropped, stale snapshots are excluded, and the response tells you exactly which source won and why.

Rounding in your favour

Payable amounts round to the currency's smallest unit — up when you charge, down when you pay. Yen rounds to 1, Hong Kong dollars to 0.01.

Locked quotes

Create a quote and the rate is frozen for its TTL. The amount your customer sees at checkout is the amount you settle on, even if the market moves mid-session.

Freshness, monitored

Real-time and hourly sources anchor the pricing; daily feeds only fill gaps. Source staleness is monitored and surfaced, so you find out before your customers do.

Try a live call

No sign-up needed. Run a real pricing request and see the full response: what each source quoted, which one was picked, and why. Demo data is delayed by 1 hour; calls with your own API key get live rates.

Demo data delayed by 1 hour

Pick a pair and press Run. The full JSON response appears here.
Protected by Cloudflare Turnstile — no puzzle to solve.

Frequently asked questions

How accurate are the rates?

Every source is cross-checked against the freshest tier and anything deviating beyond the configured threshold is discarded. The full source breakdown ships with each response, so you can audit any number we return.

How long can I lock a quote?

A quote locks the rate for 15 minutes, which covers a typical hosted checkout. Expired quotes return 404 rather than silently repricing.

Which currencies are supported?

Real-time data is available today for USD, JPY, EUR, HKD, and CNY, in any combination. TWD, SGD, GBP, AUD, KRW, MYR, and THB: real-time data temporarily unavailable — they open once the data is stable. If a pair has too few usable sources at that moment, the API returns 503 instead of guessing.

What happens when I hit my limit?

Rate limits return 429 with a Retry-After header and error code rate_limited. When the monthly quota runs out you also get 429, with error code quota_exceeded — retrying won't help until the quota resets or you upgrade. We email you at 80% and 100% of quota.