when *sending* currency values, there is no "currency type" -- it's a message. however types exist on either end of the message (e.g. client and server).
when i send currency values, i indicate the ISO value and represent the amount w/ as many decimal places necessary to be accurate (in USD it if common for values to have 3, 4 or more places after the decimal point).
"currency" : {"iso" : "USD", "value" : "1234.456"}
<money iso="COP">3605438.61</money>
etc...
the API docs encourage developers on either end of the message of use whatever local strong types their programming language provides and to NEVER assume the person on the "other end" of the message is using the same strong typing system.
a few times, i've offered API consumers the option of negotiating for a particular currency ("can you send that in colombian pesos, please?") but it was usually a real hassle and I rarely do it now. I just book all stored currency values in a single ISO category and let clients deal with the conversions.