FormatException means some of your data is not what you expect.
You can use something like the following to check for invalid data.
int dummyPeriod ;
decimal dummyPayout;
var badValues = File.ReadLines(path).Skip(1)
.Select(x => x.Split(','))
.Where(x => !Int32.TryParse(x[0], out dummyPeriod) ||
!Decimal.TryParse(x[4], out dummyPayout))
.Select(x => new { Period = x[0] , Payout = x[4] })
.ToList();
If you want to just ignore these lines you can invert the selection, eg
var values = File.ReadLines(path).Skip(1)
.Select(x => x.Split(','))
.Where(x => Int32.TryParse(x[0], out dummyPeriod) &&
Decimal.TryParse(x[4], out dummyPayout))
.Select(x => new { Period = int.Parse(x[0]), Payout = decimal.Parse(x[4]) })
.ToList();
Note that
decimal.parse(x[4])
will fail if x[4] is an empty string, whereas you may want to interpret this as zero.