I read that and think that you shouldn't be needing to append to tblMain on a regular basis as it ought to be a lookup table for something else. It seems obvious that your issue is trying to append the same combination of location and paycode more than once. If that's not obvious to you then what you could do is append to a test table first. Then put tblMain and tblTest in a new query and look at the output. Duplicate rows should stand out. If not, you can always edit qryTest to return only fields where tblMain [location] and [paycode] fields equal those fields in tblTest. Include your autonumber field (which IMO you should have used as the pk) and then the record numbers from tblMain should be obvious.
EDIT - check your composite to see how you told it to handle Nulls. There is an option to ignore them and that could also be your problem. If you don't choose that option and IIRC it means you can't have a location with paycode as null more than once either. Or vice versa.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.