ForHosting KIT · Developer Utilities

ADR to ordinary share price converter

A depositary receipt bundles a fixed number of ordinary foreign shares, so its price never matches the share price back home: the receipt-to-share ratio and the exchange rate sit in between.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

This API takes the receipt price, the ratio and the exchange rate, and returns the equivalent price of one ordinary share in its home currency — the number you need to compare the receipt against the home listing and spot a premium or a discount.

Why the receipt price is never the share price

When a foreign company lists in the United States, a depositary bank creates receipts that each represent a set number of ordinary shares — sometimes a fraction of one share, sometimes ten or fifty. On top of that bundling, the receipt trades in dollars while the ordinary shares trade in pounds, yen or euros. Two investors looking at the same company therefore see two completely different numbers on their screens, and neither is wrong. To know whether the ADR is expensive or cheap relative to the home listing, you have to undo both effects: divide by the ratio to get the value per single share, and convert currencies so both prices are expressed in the same unit. This endpoint does exactly that arithmetic in one call, with no rounding surprises, so a screener, an arbitrage monitor or a simple spreadsheet can put both markets side by side and compare like with like.

The formula, and what each input means

The conversion is a single line: share price equals receipt price times exchange rate, divided by the ratio. The <code>adr_price</code> is the last traded price of one receipt in its listing currency. The <code>ratio</code> is how many ordinary shares one receipt represents — a ratio of 0.5 means two receipts per share, a ratio of 5 means one receipt bundles five shares. The <code>exchange_rate</code> is expressed as receipt currency per unit of the home currency: if the receipt trades in dollars and the shares in pounds, it is the number of dollars per pound. The exchange rate must be positive, because a zero or negative rate is never a real market quote and almost always signals a data error upstream; the endpoint rejects it instead of returning a misleading zero. The result is rounded to six decimal places by default, and you can ask for anywhere between zero and twelve.

Using the result without fooling yourself

The output is the theoretical equivalent price of one ordinary share in its home currency, given the inputs you supplied. Whether the receipt actually trades at a premium or a discount is a separate question: compare the returned value with the live home-market quote and remember that the two markets may not be open at the same time, so the prices you compare can come from different moments. Fees, dividend handling and local taxes also mean the theoretical parity is rarely hit to the penny. None of that is this tool's job — it deliberately does one deterministic calculation and does it exactly, the same in your browser as through the paid API, so you can prototype a comparison by hand and only automate it, at $0.002 per request, once the numbers make sense. Everything runs on our global edge and nothing you send is stored after the answer is returned.

Compare a receipt with the home listing

Convert the ADR quote into the home-currency share price and see at a glance whether the receipt trades at a premium or a discount.

Feed an arbitrage monitor

Compute parity prices in bulk across a watchlist and flag the pairs whose gap exceeds your threshold.

Explain the ratio to a client

Show why a receipt priced at 25 dollars corresponds to a share priced far higher or lower once the ratio and FX are applied.

What does it cost?

$0.002 per request via the API. It is also free to run in your browser on this page.

What exactly is the ratio?

The number of ordinary shares that one depositary receipt represents. A ratio of 0.5 means two receipts per share; a ratio of 5 means one receipt bundles five shares.

How is the exchange rate expressed?

As receipt currency per unit of the share's home currency. If the receipt trades in USD and the shares in GBP, it is dollars per pound.

Why was my input rejected?

The exchange rate and the ratio must be positive, and the receipt price cannot be negative. A zero or negative rate is never a real quote, so the endpoint treats it as a data error.

Does it return the fair value of the receipt?

No. It returns the equivalent ordinary share price for the receipt price you supplied. Whether that implies a premium or a discount is for you to judge against the live home-market quote.

How many decimals does the result carry?

Six by default, adjustable from zero to twelve with the decimals field.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/fin/adr

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/fin/adr \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"adr_price":25.5,"ratio":0.5,"exchange_rate":1.27}'
{
  "adr_price": 25.5,
  "ratio": 0.5,
  "exchange_rate": 1.27
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.adr",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →