ISO 8583 Parser
online lookup

ISO 4217 Currency Codes and Amount Exponents

DE49 carries the numeric code, not the letter code — and the exponent decides how the amount reads. There's a converter below.

74 common currencies. Every 0-decimal and 3-decimal one is listed — those are where amount bugs happen.
AlphaNumeric (DE49)ExponentName
Actual amount:

Two things people get wrong

First, DE49 holds the numeric code. The message says 392, not JPY; 840, not USD. Mixing the two up when mapping to an internal system produces wrong-currency bugs that typically surface only at reconciliation.

Second, amounts are integers in the currency's minor unit. DE4 has no decimal point. What 000000012345 means depends entirely on the currency: 123.45 in USD, 12,345 in JPY, 12.345 in KWD.

The classic money bug: hardcoding amount * 100. Send a ¥5,000 purchase that way and the field reads 500000 — with zero decimals that is ¥500,000, a hundred times too much, and it will authorize. The mirror case is just as bad: dividing a Kuwaiti dinar amount by 100 under-charges tenfold. Both failures are silent — no error, no validation trip, just a wrong number that reconciliation catches days later.

What to do instead

Keep a currency → exponent table, drive every conversion off it, and never let a literal 100 appear next to an amount. Use the converter above to check your implementation against a known value.

It is not only DE4

DE5 (settlement amount), DE6 (cardholder billing amount) and the EMV tag 9F02 follow the same convention. On a cross-border transaction those three can each be in a different currency — check DE49, DE50 and DE51 respectively rather than assuming they match.


Read next