I'm sorry, for me it still more of a "how to define data" that "thinking in type".
Full disclosure, i would create a struct like this:
typedef struct Transactions {
int value;
char currency;
} Transaction;
(sorry for the naming and the poor c code, i've not done any c since 2016).
If the transaction value can be superior to 21 thousands (or if the code is deployed on a 32bit system, or if i want my floating point value high), maybe i would use a long, and probably an enum to keep track of the different currencies the second time i pass over the module. Maybe even a field (or a macro outside the struct) with the floating point value (4 to 6 seems good enough tbh).
I'm an "int, char, loop" guy, at least at first, especially if i have to write something from scratch. Thinking in "object" or "type" makes me uncomfortable except when it is for interfaces (but GUI makes me uncomfortable too, so...). I feel this is inefficient, and that well-defined/organized data should not need such complex handlers in most cases.