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
Endpoint
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.
- Status
- Down
- Category
- Currency
- Scope
- market:read
- Rate limit
- 120 requests / 60s per key
- Pricing
- 1 credit / request
- 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.