Even though the error shows Truncated value: '150199880', that is actually the first nine characters of your input string, not the full value you passed.
SQL Server’s “verbose truncation” feature (introduced in SQL 2016 SP2 CU6/2017 CU12 and on by default in 2019+) reports exactly what would fit in the column. dba.stackexchange.com/questions/54924/…
So when you see a nine‐character truncated value in a varchar(9) column, the real input must have been longer than nine characters