Storing money as an integer is OK but I've never liked APIs that required financial amounts to be integers. Amounts always eventually need to be displayed to a human as a decimal.
Yeah this is exactly what I do under the hood. All the data is stored as Ints, charts use double for speed, views use decimal to display stuff properly in the user locale.
P.S. Doubles are absolute evil for calculations:
@Test
func test() {
var a = Decimal(100.4449315513924) * 100 // It's me being dumb, not noticing that
let b = NSDecimalNumber(decimal: a).intValue
#expect(b == 10044) // Expectation failed: (b → -8402) == 1044
}