---
title: "J Trust Bank Exchange Rate API: IDR Buy and Sell Rates as JSON"
description: "J Trust Bank's bank notes (cash) rates for 9 currencies against the Indonesian rupiah, read hourly from the bank's own page and served as JSON with the Bank Indonesia official rate alongside. REST, JavaScript and Python examples."
canonical: https://allratestoday.com/blog/j-trust-bank-exchange-rate-api/
source: AllRatesToday (https://allratestoday.com/) — Markdown mirror of the page above; index of all pages at https://allratestoday.com/llms.txt
generated: 2026-11-15T19:12:18.186Z
---

PT 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. This guide shows how to read that board as JSON: what the rates mean, how they compare with the Bank Indonesia official rate and with other banks in Indonesia, and the calls that return them.

## What the J Trust board shows

- **9 currencies against the Indonesian rupiah**: AUD, EUR, GBP, HKD, JPY, KRW, NZD, SGD and USD. Every value is IDR per 1 unit of the foreign currency.
- **The bank notes (cash) pair.** Indonesian banks quote three boards at once: an e-Rate for online transactions, a TT counter rate for branch telegraphic transfers, and bank notes for cash. The pair here is the TT counter rate. Bank Indonesia’s JISDOR is a reference calculated from interbank transactions rather than a counter price, so it sits inside every bank’s spread.
- **USD on 15 November 2026**: J Trust bought at 18170 and sold at 18300 IDR, a spread of 0.71%. The Bank Indonesia official rate was 18332.21, so the bank's mid sat -0.53% from it.
- **The bank's own timestamp.** The page prints a last-updated stamp (`15 Nov 2026 18:30:42 WIB` on the board above), returned as `bank_updated_at` next to our `captured_at`.
- **Every day's board is kept permanently, from 15 November 2026, the day collection started.** Read one past day with `?date=`, or a range for one currency with the `/history` endpoint (paid plans).

## Spreads across the board

On the 15 November 2026 board the tightest spreads were USD (0.71%), GBP (0.80%), EUR (0.92%) and the widest KRW (14.04%), JPY (3.29%), HKD (1.80%). Spread is (sell − buy) ÷ mid: what a round trip through the bank costs, before any fees. The API returns it on every row as `spread_pct`, so you can rank currencies or alert when a bank widens its board.

## USD at J Trust and other banks in Indonesia

USD on the 27 boards AllRatesToday reads in Indonesia, all captured on 15 November 2026 (the Bank Indonesia official rate was 18332.21):

| Bank | Buy | Sell | Spread | Mid vs official |
| --- | --- | --- | --- | --- |
| Bank Central Asia | 18010 | 18290 | 1.54% | -0.99% |
| Maybank Indonesia | 18110 | 18310 | 1.10% | -0.67% |
| OCBC Indonesia | 17980 | 18375 | 2.17% | -0.84% |
| CIMB Niaga | 18189 | 18204 | 0.08% | -0.74% |
| Bank Danamon | 18091 | 18291 | 1.10% | -0.77% |
| Bank Mega | 18128 | 18328 | 1.10% | -0.57% |
| PermataBank | 18090 | 18300 | 1.15% | -0.75% |
| Panin Bank | 18150 | 18250 | 0.55% | -0.72% |
| BNP Paribas Indonesia | 18123 | 18375 | 1.38% | -0.45% |
| Bank Artha Graha Internasional | 18040 | 18400 | 1.98% | -0.61% |
| Bank INA Perdana | 18150 | 18300 | 0.82% | -0.58% |
| Bank Ganesha | 18145 | 18325 | 0.99% | -0.53% |
| Bank Mayapada | 18089 | 18278 | 1.04% | -0.81% |
| UOB Indonesia | 17907 | 18427 | 2.86% | -0.90% |
| HSBC Indonesia | 18085 | 18385 | 1.65% | -0.53% |
| Bank Sinarmas | 18180 | 18250 | 0.38% | -0.64% |
| ICBC Indonesia | 18075 | 18315 | 1.32% | -0.75% |
| Bank of China (Jakarta Branch) | 18040 | 18440 | 2.19% | -0.50% |
| Bank Victoria International | 18165 | 18280 | 0.63% | -0.60% |
| **J Trust Bank** | 18170 | 18300 | 0.71% | -0.53% |
| Nobu Bank | 18152 | 18242 | 0.49% | -0.74% |
| Bank Sahabat Sampoerna | 18080 | 18320 | 1.32% | -0.72% |
| Bank SulutGo | 18128 | 18328 | 1.10% | -0.57% |
| Bank Bumi Arta | 18147 | 18203 | 0.31% | -0.86% |
| SMBC Indonesia | 17820 | 18420 | 3.31% | -1.16% |
| Bank Multiarta Sentosa | 18160 | 18340 | 0.99% | -0.45% |
| DBS Indonesia | 18056 | 18426 | 2.03% | -0.50% |

J Trust had the 7th narrowest USD spread of the 27. One call to `/api/v1/bank-rates/id` returns every board in the table at once.

## Get the board (REST)

You need an API key; the [free key](https://allratestoday.com/register/) works. The full board:

```
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid" \
  -H "Authorization: Bearer art_live_your_key"
```

What comes back (the 15 November 2026 board, first three rows):

```
{
  "bank": "jtrustid",
  "name": "J Trust Bank",
  "country": "id",
  "quote_ccy": "IDR",
  "bank_updated_at": "15 Nov 2026 18:30:42 WIB",
  "basis": "Bank notes (cash)",
  "captured_at": "2026-11-15T11:30:42.761Z",
  "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": "…",
  "attribution": { … }
}
```

One currency, with the row fields at the top level:

```
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid?ccy=USD" \
  -H "Authorization: Bearer art_live_your_key"
```

```
{
  "bank": "jtrustid",
  "name": "J Trust Bank",
  "country": "id",
  "quote_ccy": "IDR",
  "bank_updated_at": "15 Nov 2026 18:30:42 WIB",
  "basis": "Bank notes (cash)",
  "captured_at": "2026-11-15T11:30:42.761Z",
  "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 board as it stood on a past day:

```
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid?date=2026-11-15" \
  -H "Authorization: Bearer art_live_your_key"
```

One currency over a date range, one row per day (paid plans; add `&format=csv`, `xml` or `xlsx` for a file):

```
curl "https://allratestoday.com/api/v1/bank-rates/id/jtrustid/history?ccy=USD&from=2026-11-15&to=2026-11-15" \
  -H "Authorization: Bearer art_live_your_key"
```

## JavaScript

```
npm install @allratestoday/sdk
```

```
import { AllRatesToday } from '@allratestoday/sdk';

const client = new AllRatesToday({ apiKey: 'art_live_your_key' });

// J Trust Bank's USD row
const r = await client.bankRates('id', { bank: 'jtrustid', ccy: 'USD' });
console.log(`J Trust buys USD at ${r.buy}, sells at ${r.sell} IDR`);

// The board as it stood on a past day
const past = await client.bankRates('id', { bank: 'jtrustid', date: '2026-11-15' });
console.log(past.snapshot_date, past.rates.length);
```

## 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()
for row in r.json()["rates"]:
    print(row["ccy"], row["buy"], row["sell"], row["spread_pct"])
```

## Board rate or official rate?

The Bank Indonesia rate is the one tax, accounting and customs rules in Indonesia name; nobody transacts at it. J Trust's board is the price a customer actually gets. The API puts both on every row: `official` is the central bank's rate for the same currency and `vs_official_pct` is how far the bank's mid sits from it. Use the board to show customers a real price, compare banks for a remittance, or keep a dated record of what the bank quoted; use the [Bank Indonesia endpoint](https://allratestoday.com/central-bank-rates-api/bi/) when a rule asks for the official rate.

## FAQ

### Where do the J Trust Bank rates come from?

From the bank's own public rates page (https://www.jtrustbank.co.id/id/kurs_jtrust), read hourly. AllRatesToday does not change the numbers: each row is the buy and sell price J Trust shows, with the mid, the spread and the Bank Indonesia rate added.

### Are these the official IDR exchange rates?

No. They are J Trust's retail prices for customers. The official rate in Indonesia is the Bank Indonesia rate, which the API returns as `official` on each row where the central bank has one, and in full from the central-bank endpoint.

### How often is the J Trust board updated?

AllRatesToday reads the page every hour. The bank's own last-updated stamp is returned as `bank_updated_at`, so you can tell a fresh read of an unchanged board from a new board.

### Can I get J Trust rates for a past date?

Yes, from 15 November 2026 onward; every day's board is kept permanently. Add `?date=YYYY-MM-DD` for one day: the response is the board captured that day, or the nearest earlier day within five days, with `date_requested` and `snapshot_date` added. For a range, `/history?ccy=USD&from=…&to=…` returns one row per day as JSON, CSV, XML or XLSX on paid plans.

### Do I need an API key?

Yes. Commercial bank boards need an API key; any plan works, the free key included, and each call counts against the plan. Public pages or widgets that show the rates need a visible link to allratestoday.com.

## J Trust Bank rates, as JSON

Free API key, hourly board captures, the official rate alongside.

 [Get your free API key](https://allratestoday.com/register/)

## Related

- [J Trust Bank live board rates](https://allratestoday.com/bank-exchange-rate-api/id/jtrustid/)
- [All banks in Indonesia side by side](https://allratestoday.com/bank-exchange-rate-api/id/)
- [Bank Indonesia official rates API](https://allratestoday.com/central-bank-rates-api/bi/)
- [Bank Central Asia exchange rate API guide](https://allratestoday.com/blog/bank-central-asia-exchange-rate-api/)
- [Maybank Indonesia exchange rate API guide](https://allratestoday.com/blog/maybank-indonesia-exchange-rate-api/)
- [OCBC Indonesia exchange rate API guide](https://allratestoday.com/blog/ocbc-indonesia-exchange-rate-api/)
- [CIMB Niaga exchange rate API guide](https://allratestoday.com/blog/cimb-niaga-exchange-rate-api/)
- [Bank Danamon exchange rate API guide](https://allratestoday.com/blog/bank-danamon-exchange-rate-api/)
- [Bank Mega exchange rate API guide](https://allratestoday.com/blog/bank-mega-exchange-rate-api/)
- [PermataBank exchange rate API guide](https://allratestoday.com/blog/permatabank-exchange-rate-api/)
- [Panin Bank exchange rate API guide](https://allratestoday.com/blog/panin-bank-exchange-rate-api/)
- [BNP Paribas Indonesia exchange rate API guide](https://allratestoday.com/blog/bnp-paribas-indonesia-exchange-rate-api/)
- [Bank Artha Graha Internasional exchange rate API guide](https://allratestoday.com/blog/bank-artha-graha-internasional-exchange-rate-api/)
- [Bank INA Perdana exchange rate API guide](https://allratestoday.com/blog/bank-ina-perdana-exchange-rate-api/)
- [Bank Ganesha exchange rate API guide](https://allratestoday.com/blog/bank-ganesha-exchange-rate-api/)
- [Every bank exchange rate API guide, by country](https://allratestoday.com/blog/bank-exchange-rate-api-guides/)
- [Commercial bank rates API: every bank and country](https://allratestoday.com/bank-exchange-rate-api/)
