Which one is correct and why:
I congratulate you for your success.
I congratulate you on your success.
Thank you in advance,
I think you would hear/read either. But as a general guideline, if you want to make a distinction between use of the two, I would suggest, "on" followed by a noun (on your success, promotion, award, achievement etc.) and "for" followed by gerunds (for winning, achieving, creating, getting etc.)