Blame it on politics.
Prof Steve Hanke has a piece on the currency and why it remains in trouble:
When the Dutch recognized an independent Indonesia in 1949, one rupiah was equal to one Dutch guilder, whose value was 3.8 per U.S. dollar. In December 1965, the rupiah was redenominated at a rate of 1,000 old rupiahs to one new rupiah (today’s unit). Since independence, and in terms of the original rupiah, there has been a depreciation in the exchange rate from 3.8 per dollar to approximately fourteen million per dollar. That amounts to a depreciation against the dollar of almost 3.7 million times. With those kinds of numbers, it’s not surprising that the rupiah has been one of the worst performing currencies in Asia over the past 50 years.
In an attempt to stop the rupiah’s fall, Jakarta’s plunge protection team has swung into action with a wrongheaded law that would ban the use of foreign currencies for local transactions. No more price quotes for hotel rooms in U.S. dollars. The same will be the case for office units in Jakarta, which have been primarily paid for in U.S. dollars. This is yet another case in which President Joko Widodo claims he wants to do the “right thing,” but reaches for the wrong policy lever.
Instead of banning the use of foreign currencies, Indonesia should encourage currency competition, rather than trying to protect the Bank of Indonesia (BI). Indeed, what the BI needs is a good dose of competition and the ensuing monetary discipline. After all, if there was a real competitive currency regime in which Indonesians were free to use any currency they wished, they could (and would) switch out of the rupiah into a foreign currency, when the BI misbehaves. Currency competition would do wonders for Indonesia by disciplining the BI and encouraging sound monetary policies, which would result in a stable rupiah.
History of Indonesian Rupiah is quite a story by itself.