Как лучше хранить денежные суммы в Postgres?
Вот так не нужно
https://wiki.postgresql.org/wiki/Don%27t_Do_This#D...

И всё Postresql умеет в numeric  https://www.postgresql.org/docs/current/datatype-n...
	up to 131072 digits before the decimal point; up to 16383 digits after the decimal point
Главный бонус использования 3 варианта - не будет важна поддержка (т.е. ее отсутствие) чисел с переменной фиксированной точностью на бакэнде. Например в php любой драйвер преобразует числа в double со всеми вытекающими от сюда проблемами.

Недостаток - можно будет попасть на лимиты стандартных целых чисел (для 64-битных систем, например php), например если на tron ты попробуешь так реализовать работу с токеном usdd, то ты обнаружишь что его точность абсурдна - 18 знаков после запятой, и придется использовать соответствующие классы для работы с ним. Если не преобразовать в запросе тип поля в строку, тот же php pdo преобразует слишком большие целые числа в double

p.s. bitcoin lightning network добавили пару значимых знаков, советую об этом тоже подумать