Handling differences between MS-SQL and PostgreSQL money datatypes
In Postgres, the cast from money to numeric is exact, immutable and does not round.
In SQL Server the data type MONEY uses 8 bytes to store a values in any currency in the numeric range from -922337203685477.5808 to 922337203685477.5807.
Matches numeric(19,4).
In PostgreSQL the data type money also occupies 8 bytes but the allowed range is -92233720368547758.08 to +92233720368547758.07. Same precision, but different scale by default (without LC_MONETARY setting other than 'C') - only two fractional digits.
Matches numeric(19,2).
But, quoting the manual:

The fractional precision is determined by the database's lc_monetary setting.

I updated the tag info for money accordingly.
As @a_horse commented (repeatedly), money is not defined by the SQL standard.
And it's pretty much consensus around here to stay away from the money data type if you can.