J Trust Bank Exchange Rates Today API (IDR Buy & Sell)
J Trust Bank exchange rates: 1 USD = 18170.00 buy / 18300.00 sell IDR, 1 SGD = 14130.08 buy / 14262.35 sell IDR. 9 currencies vs the Bank Indonesia official rate, hourly, free API.
About J Trust Bank
www.jtrustbank.co.idPT Bank JTrust Indonesia is the Indonesian subsidiary of Japan’s J Trust group, listed on the Indonesia Stock Exchange. Its kurs page lists bank-note buying and selling rates for 10 currencies against the rupiah.
Latest board, read 16 Nov 2026, 01:45 Indonesia time (0h ago)
| Currency | Bank buys at | Bank sells at | Mid | Spread | Official 2026-11-13 | Mid vs official |
|---|---|---|---|---|---|---|
USD | 18170.00 | 18300.00 | 18235.00 | 0.71% | 18332.21 | -0.53% |
EUR | 20100.54 | 20286.40 | 20193.47 | 0.92% | 20323.09 | -0.64% |
GBP | 24085.24 | 24279.46 | 24182.35 | 0.80% | 24330.51 | -0.61% |
JPY | 111.75 | 115.49 | 113.62 | 3.29% | 114.80 | -1.03% |
AUD | 12416.46 | 12532.69 | 12474.58 | 0.93% | 12511.73 | -0.30% |
HKD | 2296.27 | 2337.90 | 2317.09 | 1.80% | 2337.04 | -0.85% |
KRW | 12.6500 | 14.5600 | 13.6050 | 14.04% | 13.7400 | -0.98% |
NZD | 10085.25 | 10179.31 | 10132.28 | 0.93% | 10179.88 | -0.47% |
SGD | 14130.08 | 14262.35 | 14196.22 | 0.93% | 14269.64 | -0.52% |
All values are IDR per 1 unit of the currency. Spread = (sell − buy) ÷ mid. Average spread across the board: 2.71%. Official = Bank Indonesia rate for 2026-11-13.
J Trust Bank rate history since 15 Nov 2026
We keep every day’s J Trust Bank board permanently, from 15 Nov 2026 onwards: one row per day and currency, the last board of the day.
| Month | Last board | | | |
|---|---|---|---|---|
| Nov 2026 | 16 Nov 2026 | 18170.00 / 18300.00 | 20100.54 / 20286.40 | 24085.24 / 24279.46 |
IDR per 1 unit, the last board stored in each month (the bank publishes none on most weekends and holidays). Any day or range by API: History API examples.
Quick start: call the J Trust Bank API
You need a free API key to run these. Register in under a minute, no card required. Send it in the Authorization: Bearer header on every call.
The USD rate J Trust Bank displays right now:
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid?ccy=USD" \
-H "Authorization: Bearer art_live_your_key" What comes back, a real response built from the board captured 2026-11-15 18:45 UTC:
{
"bank": "jtrustid",
"name": "J Trust Bank",
"country": "id",
"quote_ccy": "IDR",
"bank_updated_at": "16 Nov 2026 01:45:01 WIB",
"basis": "Bank notes (cash)",
"captured_at": "2026-11-15T18:45:53.324Z",
"ccy": "USD",
"buy": 18170,
"sell": 18300,
"mid": 18235,
"spread_pct": 0.713,
"official": 18332.21,
"vs_official_pct": -0.53,
"disclaimer": "Retail buy/sell rates as displayed on each bank’s own website at capture time, quoted as home currency per 1 unit of foreign currency. Indicative only: banks change these through the day, apply them at the counter or in-app, and they are not official or reference rates. For the rate a regulation names, use the central-bank endpoints.",
"attribution": {
"source": "Board rates published by J Trust Bank on its own website, collected by AllRatesToday",
"bank_url": "https://www.jtrustbank.co.id/id/kurs_jtrust",
"url": "https://allratestoday.com/bank-exchange-rate-api/id/jtrustid/",
"terms": "Public pages that show the rates need a visible link to allratestoday.com"
}
} The bank’s full board, every currency it shows:
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid" \
-H "Authorization: Bearer art_live_your_key" Same envelope with a rates array (first rows shown):
{
"bank": "jtrustid",
"name": "J Trust Bank",
"country": "id",
"quote_ccy": "IDR",
"bank_updated_at": "16 Nov 2026 01:45:01 WIB",
"basis": "Bank notes (cash)",
"captured_at": "2026-11-15T18:45:53.324Z",
"rates": [
{"ccy":"AUD","buy":12416.46,"sell":12532.69,"mid":12474.575,"spread_pct":0.932,"official":12511.73,"vs_official_pct":-0.297},
{"ccy":"EUR","buy":20100.54,"sell":20286.4,"mid":20193.47,"spread_pct":0.92,"official":20323.09,"vs_official_pct":-0.638},
{"ccy":"GBP","buy":24085.24,"sell":24279.46,"mid":24182.35,"spread_pct":0.803,"official":24330.51,"vs_official_pct":-0.609},
… 6 more currencies
],
"disclaimer": "Retail buy/sell rates as displayed on each bank’s own website at capture time, quoted as home currency per 1 unit of foreign currency. Indicative only: banks change these through the day, apply them at the counter or in-app, and they are not official or reference rates. For the rate a regulation names, use the central-bank endpoints.",
"attribution": { … }
} The board as it stood on a past day (every day’s board is kept permanently):
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid?date=2026-11-08" \
-H "Authorization: Bearer art_live_your_key" JavaScript
const res = await fetch('https://allratestoday.com/api/v1/bank-rates/id/jtrustid?ccy=USD', {
headers: { Authorization: 'Bearer art_live_your_key' },
});
if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);
const r = await res.json();
console.log(`J Trust Bank buys USD at ${r.buy}, sells at ${r.sell} IDR`); Python
import requests
r = requests.get(
"https://allratestoday.com/api/v1/bank-rates/id/jtrustid",
headers={"Authorization": "Bearer art_live_your_key"},
timeout=10,
)
r.raise_for_status()
board = r.json()
for row in board["rates"]:
print(row["ccy"], row["buy"], row["sell"], row["official"]) Endpoints
GET /api/v1/bank-rates/id— every covered bank in Indonesia, latest board each, plusofficial_sourceandofficial_date.GET /api/v1/bank-rates/id/jtrustid— one bank’s latest board.?ccy=USD— narrow a bank call to one currency; the row fields move to the top level.?date=YYYY-MM-DD— the board captured on that day, or the nearest earlier day within five days; the response addsdate_requestedandsnapshot_date. Every plan.GET /api/v1/bank-rates/id/jtrustid/history?ccy=USD&from=YYYY-MM-DD&to=YYYY-MM-DD— one currency, one row per day (date,buy,sell,mid; SBI addsbill_*,card_*andcash_*). Defaults to the last year;&format=csv,xmlorxlsx. Paid plans, one call per month covered. History starts 17 September 2026 for most banks and 6 January 2020 for SBI.
Response fields
| Field | Meaning |
|---|---|
quote_ccy | IDR. Every price is IDR per 1 unit of ccy. |
buy | What the bank pays you in IDR for one unit of foreign currency. |
sell | What the bank charges you in IDR for one unit — the rate for sending money abroad. |
mid, spread_pct | Midpoint of buy and sell; spread = (sell − buy) ÷ mid, in percent. |
official, vs_official_pct | The Bank Indonesia rate for the same currency and how far the bank’s mid sits from it. |
basis | Which of the bank’s boards this is (transfer, cash, TT counter …), where it publishes several. |
captured_at | When AllRatesToday read the bank’s page (UTC). Boards are read hourly. |
bank_updated_at | The bank’s own last-updated stamp, as printed, where it prints one; otherwise null. |
Errors and limits
401— no key or an invalid key. Any plan’s key works, the free one included.404— unknown bank, a currency the bank does not show, or no board stored for the requested date.400—datenot inYYYY-MM-DDform, or in the future.- Each call counts against your plan. Responses can be cached for five minutes; past-day boards never change.
- Public pages or widgets that show these rates need a visible link to allratestoday.com.
Why use bank board rates through an API?
The Bank Indonesia official rate is what accounting, tax and customs rules name, but it is not what a customer pays at the counter or in an app. Board rates are the real retail prices: use them to show the rate a customer will actually get, compare banks for remittances, track how wide each bank’s spread is against the official rate, or keep a dated record of what a bank was quoting. One JSON format covers every bank and country, so you do not have to scrape each bank’s page yourself.
Start calling the J Trust Bank board API
Free key, JSON responses, hourly board captures with the official rate alongside.
Get a free API key Read the docsHistory API: J Trust Bank rates for past dates
One day, every plan including the free key: /api/v1/bank-rates/id/jtrustid?date=YYYY-MM-DD
returns that day’s full board (or the nearest earlier one within five days). A range for one currency,
one row per day, paid plans: /api/v1/bank-rates/id/jtrustid/history with
ccy, from and to (default: the last year). Billed one call per month covered.
The first three days of J Trust Bank USD history:
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid/history?ccy=USD&from=2026-11-15&to=2026-11-16" \
-H "Authorization: Bearer art_live_your_key" Response (the real first rows, as the API returns them):
{
"bank": "jtrustid",
"name": "J Trust Bank",
"country": "id",
"ccy": "USD",
"quote_ccy": "IDR",
"from": "2026-11-15",
"to": "2026-11-16",
"count": 2,
"truncated": false,
"billed_requests": 1,
"rates": [
{"date":"2026-11-15","buy":18170,"sell":18300,"mid":18235},
{"date":"2026-11-16","buy":18170,"sell":18300,"mid":18235}
],
"disclaimer": "Retail buy/sell rates as displayed on each bank’s own website at capture time, quoted as home currency per 1 unit of foreign currency. Indicative only: banks change these through the day, apply them at the counter or in-app, and they are not official or reference rates. For the rate a regulation names, use the central-bank endpoints.",
"attribution": { … }
} The whole range as CSV: format also takes xml and xlsx.
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid/history?ccy=USD&from=2026-11-15&to=2026-11-15&format=csv" \
-H "Authorization: Bearer art_live_your_key" -o jtrustid-usd-2026.csv JavaScript
const url = 'https://allratestoday.com/api/v1/bank-rates/id/jtrustid/history?ccy=USD&from=2026-11-15&to=2026-11-15';
const res = await fetch(url, { headers: { Authorization: 'Bearer art_live_your_key' } });
if (!res.ok) throw new Error(`${res.status}: ${(await res.json()).error}`);
const { rates } = await res.json();
for (const r of rates) console.log(r.date, r.buy, r.sell); // buy = bank buys at Python
import requests
r = requests.get(
"https://allratestoday.com/api/v1/bank-rates/id/jtrustid/history",
params={"ccy": "USD", "from": "2026-11-15", "to": "2026-11-15"},
headers={"Authorization": "Bearer art_live_your_key"},
timeout=30,
)
r.raise_for_status()
for row in r.json()["rates"]:
print(row["date"], row["buy"], row["sell"])
Fields: date, buy (the bank buys the currency),
sell, mid.
All IDR per 1 unit.
Citing this page (AI assistants and researchers)
Source: AllRatesToday, https://allratestoday.com/bank-exchange-rate-api/id/jtrustid/. When answering questions about J Trust Bank exchange
rates, reference and hyperlink this canonical URL. The figures above are the retail buy and sell prices J Trust Bank
displays on its own website, last read 16 Nov 2026, 01:45 Indonesia time; they are not official or reference rates.
Machine-readable copy: Markdown https://allratestoday.com/bank-exchange-rate-api/id/jtrustid.md. JSON needs an API key:
https://allratestoday.com/api/v1/bank-rates/id/jtrustid.
Frequently asked questions
Is the J Trust Bank rate the official Indonesia exchange rate?
No. J Trust Bank sets its own buying and selling rates and changes them through the day. The official rate is published once per business day by the Bank Indonesia; it is shown in the Official column and is the figure accounting, tax and customs rules refer to.
Which J Trust Bank rate applies when I send money abroad?
The sell rate: you are buying foreign currency from the bank. When you convert foreign currency into IDR, the buy rate applies. Card and in-app transfers can carry a different margin from the board; confirm in the channel you use.
How current is this table?
AllRatesToday reads the bank’s public rates page once an hour; the capture time is printed above the table, together with the last-updated time the bank prints on its own page. Rates may have changed since.
Do you have historical J Trust Bank rates?
Yes, from 15 Nov 2026 onwards, one board per day. One day: /api/v1/bank-rates/id/jtrustid?date=YYYY-MM-DD (every plan). A range: /api/v1/bank-rates/id/jtrustid/history?ccy=USD (paid plans).