Zakat Calculator
Worship · 1 endpoint
Zakat on wealth, with the nisab priced against today's gold rather than a figure copied into a config file last year.
Base URL
Endpoint
Snippet
Request — cURL
v1
curl https://api.diraz.ae/v1/zakat \
-H "Authorization: Bearer drz_live_…"Query parameters
- cashnumber · optional
- Cash, current accounts, savings.Default: 0
- gold_gramsnumber · optional
- Gold held, in grams. Valued at today's price.Default: 0
- trade_goodsnumber · optional
- Trade goods and inventory, in rupiah.Default: 0
- receivablesnumber · optional
- Money owed to you.Default: 0
- liabilitiesnumber · optional
- Debts due now.Default: 0
- nisabstring · optional
- `gold` (85g) or `silver` (595g).Default: gold
Example response
200 OK
v1
{
"data": {
"currency": "IDR",
"nisab": {
"basis": "gold",
"grams": 85,
"gold_price_per_gram_idr": 2721000,
"threshold_idr": 231285000
},
"assets": {
"cash": 300000000,
"gold_value": 0,
"trade_goods": 0,
"receivables": 0,
"total": 300000000
},
"liabilities": 0,
"net_wealth": 300000000,
"due": true,
"zakat_idr": 7500000,
"shortfall_idr": 0,
"assumptions": ["This is a calculation, not a fatwa. Where scholars differ, consult one."]
},
"meta": {
"request_id": "req_7Q2fK4mZ",
"as_of": "2026-08-18T16:32:00.000Z",
"age_seconds": 42,
"next_update_at": "2026-08-18T17:10:15.000Z"
}
}- nisab.threshold_idr
- 85g of gold at today's price. Moves daily, which is the point.
- due
- Whether net wealth reaches the threshold.
- zakat_idr
- 2.5% of net wealth, or zero below the threshold.
- shortfall_idr
- How far below the threshold, so a caller can show progress.
- assumptions
- What the calculation took as given. Zakat has real differences of opinion, so this states its position rather than presenting one school's answer as the answer.
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
- Operational
- Category
- Worship
- Scope
- market:read
- Rate limit
- 300 requests / 60s per key
- Pricing
- 1 credit / request
- Zakat Calculator
1/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.