Skip to content
All APIs

Kurs Pajak (Tax Reference Rates)

Kemenkeu · Currency · 1 endpoint

The KMK-decreed exchange rate board Indonesian invoices and customs declarations are legally required to use, with the decree citation and its validity period.

Base URL

https://api.diraz.ae
2 requests1d cache1 credit / request

Endpoint

GET/v1/tax/fx-rates

Snippet

Request — cURL

v1

curl https://api.diraz.ae/v1/tax/fx-rates \
  -H "Authorization: Bearer drz_live_…"

Query parameters

max_ageinteger (seconds) · optional
Ask for data no older than this. Clamped to the product's own floor, so it can narrow the window but never force a refresh on every call.Default: 300
limitinteger · optional
Return only the first N currencies.Default: all

Example response

200 OK

v1

{
  "data": {
    "decree": {
      "number": "KMK Nomor 39/KM.10/2015",
      "document": "kurs/2015/KMK 39 KM.10 2015 SK Kurs Periode 2 - 8 September 2015.pdf",
      "period_from": "2015-09-02T00:00:00+07:00",
      "period_to": "2015-09-08T23:59:59+07:00"
    },
    "query_date": "2015-09-02",
    "rates": [
      { "code": "JPY", "country": "Jepang", "currency": "Yen", "value": 11644.57, "unit": 100, "direction": "up" },
      { "code": "KRW", "country": "Korea", "currency": "Won", "value": 11.85, "unit": 1, "direction": "up" },
      { "code": "USD", "country": "Amerika Serikat", "currency": "Dolar", "value": 14036, "unit": 1, "direction": "up" }
    ]
  },
  "meta": {
    "request_id": "req_7Q2fK4mZ",
    "as_of": "2015-09-02T00:00:00+07:00",
    "age_seconds": 42,
    "next_update_at": "2016-08-20T00:00:00.000Z"
  }
}
decree.number
The ministerial decree (KMK) this board was set by, e.g. `KMK Nomor 39/KM.10/2015`.
decree.document
The decree document's path as published on the portal.
decree.period_from / decree.period_to
When the decree applies, ISO 8601 at +07:00.
query_date
The date this board answers for.
rates[].code
Currency code, e.g. `USD`.
rates[].value
Rupiah per `unit` of the currency — the number an invoice uses.
rates[].unit
Units the value covers. Usually 1, and 100 for JPY. Published rather than silently divided.
rates[].direction
Movement against the previous decree: `up` or `down`.
rates[].country / rates[].currency
Country and currency names, in Indonesian as decreed.

Errors

401 Unauthorized

v1

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "The API key is invalid, expired, or revoked."
  },
  "meta": {
    "request_id": "req_7Q2fK4mZ"
  }
}

Every failure carries a stable machine-readable code before the human message, and the same meta.request_id the successful responses carry. Quote it and we can find your exact request.

Errors are free

Nothing on this page is billed. You are charged for a 2xx and nothing else — a rejected key, a bad parameter, a rate limit, or an outage on our side all cost you zero. Retry without watching the meter.

UNAUTHORIZEDHTTP 401
Missing, malformed, expired, or revoked API key.
FORBIDDENHTTP 403
The key is valid but lacks the scope this product needs.
VALIDATION_ERRORHTTP 422
A query parameter is the wrong type or out of range.
RATE_LIMITEDHTTP 429
Rate limit exhausted. `Retry-After` says how long to wait.
SERVICE_UNAVAILABLEHTTP 503
No data recent enough to serve. Carries `Retry-After`, and is never billed.
Total requests2
Cache1d
Status
Down
Category
Currency
Scope
market:read
Rate limit
120 requests / 60s per key
Pricing
1 credit / request
Request a keyView as Markdown
  • Kurs Pajak (Tax Reference Rates)

0/1 passing

Every response is timestamped. as_of is when the data was published, age_seconds how old that is now, and next_update_at when newer data is expected.

Three shapes to handle:

  • Up to date200

    The data is inside its published window. The overwhelming majority of requests.

  • Delayeddelayed: true

    Newer data is late. You still get the most recent there is, flagged so you can decide whether to use it.

  • Unavailable503

    Nothing recent enough to serve. Carries Retry-After, and is never billed.