I have had conversations with close to 25 SEO companies in the past six months, and all of them charge monthly. The differentiating factors are what's included in the monthly charge. Depending on your budget, it can include the optimization of your website (i.e. you give them access to your admin and they write product descriptions, other content, etc...), backlink building, social media, blogs, etc... I have yet to encounter an SEO company that charges per project. Further, if you do charge per project, you will have to price each project individually, which can be time consuming.
The "minimum" will depend on which country your friend is in, and what country their customer is in. I have seen companies in India charge $300-$1,500 per month, and companies in the U.S. charge $1,200 - $10,000 per month.