What is the heter for the mohel to charge a fee?
The heter for charging a fee is that the mitzvah of milah is not incumbent on the mohel alone, but on the father of the child, and beyond the father on everybody else. Because the mitzvah does not apply specifically to the mohel, it is permitted to charge payment for the bris.
However, it is not proper practice to do so, and a mohel should not charge payment, beyond covering his costs or losses.
See Shulchan Aruch, Yoreh De’ah 336:3, and Biur Ha-Gra; note that a mohel who refuses to perform the milah is forced to do so, even for free, if the father does not have the wherewithal to pay the fee (Yoreh De’ah 261, citing from the Rashba).