Which is correct?
I congratulated him for coming first in the race.
I congratulated him on coming first in the race.
According to Oxford Dictionaries Online the verb congratulate collocates with both prepositions, but the meaning is slightly different.
When you congratulate someone on something you give them your good wishes because something special or pleasant has happened to them, e.g. "I'd like to congratulate you on your marriage".
When you congratulate someone for something you praise them for an achievement, e.g. "I'd like to congratulate the staff for their good job".
According to Google NGram Viewer congratulate on is a lot more frequent than congratulate for, but the latter is used nevertheless.
To answer your question, both sound natural to me.
In common mistakes in English by T.j.Fitikides (Longman) is written congratulate on not for and didn't say anything why on not for. Ex: Don't say: I congratulate you for your success. Say: I congratulate you on your success. (Common Mistakes in English)
Both of the cases are correct, so you can use any expression you like.
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?