The order is nearly identical across apps, only the button names change.
- Make sure your account is verified and a bank account is registered. Rupiah withdrawals only go to an account linked to your profile. Pintu advises checking the account before you withdraw.
- Sell the coin for rupiah. Use the instant sell mode if you want it simple (regular Pintu, Reku Lightning, Indodax LITE, Pluang Instant Order, Tokocrypto Sell), or the pro mode if you want to set your own price.
- Check your IDR wallet. Tax and fees are already deducted here, so the number is lower than the gross sale value.
- Request the bank withdrawal. Enter an amount above the platform minimum and confirm with your PIN or OTP.
- Wait for your bank's notification. About 15 minutes outside downtime, or until the next business window if you requested while the bank was offline.
{{/steps}}
Two things people miss. First, your coin balance and your rupiah balance are separate wallets: a coin you have sold is not withdrawable until it has become rupiah. Second, small sales get eaten by flat fees. Withdrawing Rp50,000 from Pintu means Rp4,500 (9%) goes on the withdrawal alone, so it makes more sense to batch several sales before you withdraw.
The table sums up the help pages of each platform (Pintu, Indodax, Tokocrypto, Reku). These are rupiah withdrawal costs only, before the selling fee and tax covered in the next section.
| Platform | Withdrawal fee | Minimum and limits | Time to arrive |
|---|
| Pintu | Rp4,500 flat | Min Rp50,000; max Rp500 million per transaction to major banks, Rp250 million to others | About 15 minutes outside bank downtime; above Rp250 million can take 1-2 business days |
| Indodax | Rp10,000 (+Rp1,000 if you verify by SMS OTP) | Min Rp100,000; max Rp5 billion per transaction | Real time for major banks outside downtime; contact support after 1x24 hours |
| Tokocrypto | Rp10,000 | Limits not confirmed by us | About 15 minutes, up to 1x24 working hours depending on bank clearing |
| Reku | No Reku fee, but a flat Rp6,500 bank ADM fee | Min Rp30,000; max Rp3 billion per day | Not confirmed on the official page |
Pintu and Indodax publish the most detail on limits and schedules. For Tokocrypto the Rp10,000 figure comes from its fee page, while the 15-minute estimate comes from an Indonesian-language guide last updated about a year ago, so treat it as an estimate. A multi-asset app such as Pluang withdraws only from the "IDR Crypto" balance to a registered bank account, and we could not pin down its withdrawal fee, so check it in the app. For a wider comparison including buy fees and top-ups, see the best crypto exchanges in Indonesia, and for each platform on its own the reviews of Pintu, Indodax, Tokocrypto and Reku.
Worked example: selling Rp10 million of crypto
Numbers make it easier to see where the money goes. Say you sell Rp10,000,000 of coins on a licensed platform and withdraw everything.
The final PPh Article 22 income tax on a sale through a domestic platform is 0.21% of the transaction value, so Rp21,000. It applies only on the sell side, never on the buy, and since 1 August 2025 there is no VAT on the coin trade itself (PMK 50/2025 as explained by the tax office, broken down in our crypto tax guide). On top of that, each platform has its own trading cost:
- Pintu: no separate trading fee, because the displayed price already includes the cost, which means you pay a spread. The CFX component is listed at 0.0111% (Rp1,110) through 30 September and 0.00555% (about Rp555) from 1 October 2026. Add the Rp4,500 withdrawal and you end up with roughly Rp9,973,000 before spread.
- Reku Lightning mode: 0% platform fee, 0.0111% CFX (Rp1,110), plus the Rp21,000 tax and Rp6,500 bank ADM. About Rp9,971,000 left before any spread, which we could not confirm.
- Tokocrypto IDR pair: selling as a taker is 0.4322% (tax of 0.21% and exchange fee of 0.0222% included), so Rp43,220, then Rp10,000 to withdraw. About Rp9,946,780 left. As a maker it is 0.3322%, leaving about Rp9,956,780. These are from its official table valid from 18 June 2026.
- Indodax: we could not confirm the maker and taker percentages, so we do not calculate it. What is certain is the 0.21% tax and the Rp10,000 withdrawal fee.
The gaps are tens of thousands of rupiah, but the pattern matters: on small amounts the flat withdrawal fee hurts most, on large amounts the percentage fee and the spread dominate. These numbers are not a recommendation. We do not price the spread because it moves every second, and it is often the biggest cost nobody writes down.
How to sell USDT for rupiah
USDT is a stablecoin pegged to the US dollar, and plenty of people park money in it before cashing out. The route on a local app is the same as for any coin, with a few weak points.
If your USDT is already on an OJK-licensed app, sell it directly in the USDT/IDR pair and withdraw as usual. If it still sits in a private wallet or on an overseas platform, you first have to send it to the USDT deposit address of the local app. Here the golden rule applies: the network must match at both ends. USDT exists on several networks (for example TRC20, ERC20, BEP20), and an address that looks the same on a different network can make the coins not arrive. Pick a network that the destination's deposit page supports and send a small test amount first. We have not verified which platform supports which network, so look at the deposit screen in the app. Coin deposits at Indodax, Reku and Pluang are free; what you pay is the network fee on the sending side.
If your coin has no rupiah pair, Tokocrypto spells out the route: sell that coin to USDT first, then USDT to IDR. There is a tax consequence. According to the tax office, the 0.21% applies to a sale or swap through a licensed platform, and Tokocrypto's table shows 0.21% on USDT pairs as well. Our reading is that a two-step route can be taxed at both steps, each on its own transaction value. That is our inference from the rule, not a written answer from the tax office about this route. For a large amount, ask the platform's support or a tax adviser.
Two more notes. Platforms may ask for extra information about where funds came from when you deposit coins from outside. We could not confirm the travel-rule threshold currently in force, so don't be surprised by follow-up questions. And coins you sell on a local app are charged the domestic-platform rate (0.21%) whatever their origin. For how tax treats trades on a foreign platform, read the tax guide.
Bank downtime: why withdrawals are sometimes late
A rupiah withdrawal depends on the receiving bank, not just the app. Banks have daily maintenance or downtime windows, and requests that arrive inside them are processed afterwards. Pintu publishes a schedule that works as a good rule of thumb (WIB): BCA 22:00 to 06:00; Mandiri and BRI 23:00 to 04:00; BNI 23:00 to 03:00; CIMB 21:00 to 09:00; Sahabat Sampoerna 24:00 to 09:00; other banks 23:00 to 05:00.
That schedule is Pintu's and may differ elsewhere. Indodax gives a similar example: a request to BCA made between 22:00 and 04:59 only lands after 05:00. For large sums, Indodax explains that amounts above Rp250 million to non-major banks go through SKN or RTGS, which only run in bank business hours. Pintu says amounts above Rp250 million can take 1-2 business days. If the money has to arrive at a specific time, request it on a weekday morning or afternoon, not late on a Friday.
In practice: if you are cashing out a large amount to pay for something, don't sell at the last minute. Sell and withdraw the day before, during working hours.
Mistakes that cost the most
Most withdrawal trouble is avoidable. These are the most common and most expensive.
Wrong network. Sending USDT or another coin over a network the destination address doesn't support is the costliest error, because the coins can be lost for good. Always match the network, and for coins that use a memo or tag, fill that field as well.
Third-party bank accounts. Pintu states that deposits must come from an account in the same name as your profile, and it does not accept cash deposits at a bank teller. On the withdrawal side, the apps we read only pay out to the registered account. Don't ask a friend or relative to receive your money "just for a moment" through their account. It invites questions from the bank and can leave funds on hold.
Selling in the wrong pair. USDT pairs and IDR pairs carry different costs. On Tokocrypto a USDT or crypto-to-crypto pair costs 0.4044% (tax included), while selling in an IDR pair as a taker costs 0.4322%. Check the pair before you tap the button.
Using instant mode for big amounts. Instant mode is convenient, but you pay the spread. For a sale of tens of millions, pro mode with a limit order is often cheaper, though slower.
Withdrawing in the downtime window and panicking. The money is not lost, only delayed. Wait for the bank window to end before you contact support, unless a full business day has passed.
Leaving account admin until you're in a hurry. KYC, a registered bank account and a phone number should be sorted before you need cash fast. According to Pintu, KYC can take 10 minutes to 24 hours and is only processed between 08:00 and 23:59 WIB.
Selling through P2P or OTC: when it makes sense
Everything above uses the official route: a licensed app and an account in your own name. Two other routes show up in searches.
P2P (peer-to-peer) means you sell to another person who transfers rupiah straight to your bank account. The platforms used, such as Binance, Bybit and OKX, are not licensed in Indonesia, so there is no OJK protection. The biggest risk sits with your bank account: Binance itself warns that a seller's account can be frozen if the buyer is linked to fraud or money-laundering cases, and recommends a dedicated account. The tax is also higher, 1% final income tax for sales on a foreign platform. Read the P2P guide before trying it.
OTC is for large amounts. Indodax, for instance, states a minimum of about Rp500 million (one other source says Rp1 billion), with a price agreed before the trade. If your amount is far below that, OTC isn't for you and a regular app is enough. Details are in the crypto OTC guide.
What about cash? In Bali some services claim to swap USDT for rupiah cash. Those are operator claims, and one of them states itself that it is not a licensed financial institution. We don't recommend it; the reasons and documented risks are in the cash guide and on the Bitcoin ATM page, which also explains why crypto ATMs can't be your way out here.
After the money lands: tax, records and safety
Because the 0.21% income tax is withheld by the platform and is final, you don't need to recalculate tax on a sale made through a local app. Still, keep screenshots or a monthly transaction history, since that is your proof when a bank or the tax office asks where the money came from. How reporting in the annual SPT works, and the exceptions, are in the tax guide; we don't repeat them here.
If your coins were previously kept in your own wallet, moving them to a local app is not a sale. The 0.21% is withheld when you sell or swap them. For how to store coins safely in your own wallet, see the best crypto wallets.
Finally, be wary of "help" that appears after you complain on social media. Fake accounts posing as Pintu, Indodax or other platforms' support are a classic scam pattern, and they usually ask for an OTP code or access to your account. Real support will not ask for your PIN or OTP. Learn the pattern in the crypto scams guide, and make sure you only use platforms listed on OJK's whitelist. For the legal status of holding and selling, see is crypto legal in Indonesia.
If the money hasn't arrived: what to check, in order
The order we suggest before you contact support: first, check the time and the day. If you requested during the bank's downtime window, wait. Second, check the status in the app's withdrawal history. If it still says processing, the funds have not left the platform. Third, check the account number and bank name in your profile, because a single wrong digit makes a withdrawal fail or bounce back to your balance. Fourth, once a business day has passed (Pintu) or 1x24 hours (Indodax), send a ticket to support with your account email, the transaction ID and the destination bank. Pintu explicitly asks for all three. Keep the message short and attach screenshots, rather than opening new tickets repeatedly.