readingWhat Indonesians actually traded in the last 24h, live from exchange APIs, with the OJK monthly figure drawn underneath as the regulator's own count. Read the gap between them, not either alone.
TOTAL (UPPER BOUND)
Rp1.5 T
WASH RULE, on-card · EXCLUDED FROM CORE: Bittime, Mobee, BTSE ID · rule: any venue self-reporting 24h volume above Indodax, the known market leader · these venues WERE read, they are not missing
CANNOT REPRODUCE THE REGULATOR · core = 0.56× OJK 2026-05 · total = 2.21× · 9 of 26 licensed PAKD read (2026-05) · Pintu / Ajaib / Pluang UNREAD · the gap is DEFINITIONAL, not sampling · full reconciliation below
07-2707-2807-2907-3007-3108-0108-02
● Total● Core● Indodax● Bittime● BTSE ID● Reku● Tokocrypto● Upbit Indonesia● Mobee
one point per date · daily MEAN of the 24h rolling figure, not a sum (summing would count each trade about 48 times) · whisker = that day's intraday range
OJK OFFICIAL monthly txn value (Rp T · regulator aggregates ALL licensed exchanges = the truth line):
● OJK official · latest 2026-05 = Rp23.01T/mo · market contracting (~Rp52T Jul25 → Rp23.01T)
our live aggregate vs OJK official (2026-05 = Rp23 T/mo): extrapolating 7 complete days ×30 BRACKETS it, and does not reproduce it: credible-core Rp12.8 T = 0.56× OJK (44% under) → total Rp50.7 T = 2.21× OJK (121% over). More days will not close this. The gap is definitional, not sampling: self-report inflates the total, and the biggest retail players (Pintu/Ajaib/Pluang) are invisible to us so the core under-counts. Also not like-for-like on time: OJK's latest is 2026-05 and this window is live, and the official series fell from Rp37.2T (2025-11) to Rp23.01T over that gap. OJK monthly = the anchor.
DJP crypto tax (tax authority, monthly releases · every row states its BASIS, because the two headline figures are not on the same one):
| Cumulative, since May 2022 → 2026-06 | Rp2.09 T | ALL FOUR-plus years summed, not a period |
| 2025 alone (calendar year) | Rp796.74 B | one year, straddles the Aug-2025 rate change |
| 2026 year to date (6 mo) | Rp205.00 B | PARTIAL, do not annualise into a headline |
| of which PPh 22 / PPN DN | Rp1.21 T / Rp881.82 B | PPN on transfers ended 2025-08-01 |
● tax collected per calendar year · * = partial year: 2022 is EIGHT months (regime began May 2022) and 2026 is 6. Neither is comparable to a full year without saying so, which is why the widely-quoted "2023 fell 63%" does not reconcile with these numbers: DJP's own figures give about -10% nominal, or about -40% per month.
ONE OF THE TWO TAX COMPONENTS IS A CLOSED BOOK. PMK 50/2025 (effective 2025-08-01) treats crypto transfers as securities-equivalent, so transfers left the PPN base entirely; PPh 22 became 0.21% on domestic licensed venues and 1% on foreign ones. Measured across our snapshots from 2025-09 to 2026-06: PPh 22 grew Rp373.64B while PPN DN grew Rp9.20B, a 41-to-1 ratio, and PPN reads flat to the rupiah across the last two releases. The regulation was read first and predicted exactly this. So the TOTAL stays comparable across the break, since the headline rate is about 0.21% either side, but the PPN line is not a demand signal any more.
OPEN QUESTION, stated because the arithmetic does not close. Tax collected divided by OJK reported volume implies an effective rate that ROSE while the domestic statutory rate did not: 0.0954% in 2024 (Rp620.38B on Rp650.61T) against 0.1652% in 2025 (Rp796.74B on Rp482.23T). Volume fell 25.9% and tax rose 28.4%, a 54-point divergence. Four things could explain it and none is verified here: OJK may count both sides of a trade, so the taxable base is about half the printed figure; collections lag; some volume is exempt; or the new 1% foreign rate is adding collections whose volume never enters a domestic-only denominator. That last reading would make this pair the first window onto offshore flow, which is why it is written as a question and not as a finding.
Indo vs GLOBAL volume trajectory (both indexed to 100 at 2025-08 · tracking or decoupling?):
● global (top-12 CEX proxy) · ● Indo (OJK) · latest 2026-05: global 55 / Indo 51 · Indo tracked global down thru 2025 then missed the early-2026 global rebound = decoupled lower
| EXCHANGE | 24H VOL | SRC |
| Bittime | Rp468.7B | direct |
| Mobee | Rp377.0B | direct |
| BTSE ID | Rp341.5B | direct |
| Indodax | Rp172.8B | direct |
| Tokocrypto | Rp61.9B | coingecko |
| Reku | Rp53.1B | direct |
| Upbit Indonesia | Rp12.1B | coingecko |
| Luno ID | Rp49.0M | direct |
| Digitalexchange.id | Rp37.9M | coingecko |
method: Direct keyless exchange API where verified (Indodax, Luno-ID, Bittime). CoinGecko raw exchange-reported 24h volume (BTC->IDR) for Indo-domiciled exchanges whose direct endpoint is key-gated or geo-blocked. App-only + no-volume-API players excluded.
caveat: Indodax self-reports Rp173B vs CoinGecko Rp127B (self-report vs aggregator gap). Direct-endpoint audit 2026-07-12: Bittime wired DIRECT (openapi.bittime.com, keyless). Tokocrypto market-data is key-gated (code:3701), Bitwyre /public API is dead (404/web-app), Pintu keyless API has price but no volume field -> CoinGecko/excluded. Upbit-ID is Komdigi-blocked at the ISP (Biznet RPZ DNS-sinkhole of id-api.upbit.com -> HTTP 000; a Jakarta/Biznet IP TRIGGERS the block, does not fix it); a DoH bypass returns live data (verified 2026-07-13) but Upbit is kept on CoinGecko per operator call. Ajaib has its own anti-scrape WAF (HTTP 403 even with full browser headers). 2026-07-13: BTSE Indonesia wired DIRECT via api.btse.id (local OJK entity, keyless market_summary IDR-quote vol; global api.btse.com is Komdigi/Biznet DNS-blocked). Reku wired DIRECT via api.reku.id /v2/ticker (its ticker carries IDR-quote vol; was wrongly excluded as market-data-only). 2026-07-17: Mobee wired DIRECT+AUTH via open-api.mobee.io /v1/markets/summary (authenticated, read-only); prior 'app-only, no public API' belief was stale (Mobee shipped an Open API). base_volume on IDR_ pairs = IDR turnover (verified quote_volume*last==base_volume). IDR-QUOTE PAIRS ONLY: Mobee's USDT book is wash-dominated (USDT_AMZNX alone self-reports ~$1.9B/24h = 97pct of its USDT volume, vs ~$160k on every other USDT pair) so USDT/USDC pairs are excluded; IDR-quote sum stays >Indodax so the wash-guard still keeps Mobee out of credible_core. Bittime, Mobee, BTSE ID report volume exceeding Indodax (the market leader), likely wash/incentivized-inflated. total is an UPPER BOUND. credible core (ex-Bittime/Mobee/BTSE ID) = Rp300B.
excluded: Pintu Pro (keyless api.pintu.co.id has price, no 24h-volume field); Bitwyre (documented /public API dead, host serves a web app); Ajaib Kripto (Cloudflare WAF 403 even w/ browser headers on BOTH the web app AND the documented API host api.ajaib.co.id; the /coin/internal/v1/price endpoint also needs ECDSA-signed auth + Ajaib exposes NO public 24h-volume endpoint. Adding = CF-bypass + API keys + request-signing for price-ONLY/no-volume. Checked 2026-07-13, not worth it); Upbit ID (Komdigi/Biznet DNS-blocked, still nebeng global/KR infra; shown via CG)