There are two distinct billing strategies people use:
- Charge per time spent
- Charge per task completed
The former is how salaried employees are paid: per hour, or per year.
The latter is how service providers and product vendors are paid: per service, or per product.
You may prefer the former:
- Easy to measure
- Built-in protection against the customer changing the scope of the project
- No need for accurate schedule prediction
Customers, especially naive customers, who don't know about managing a software development project and/or don't want the budget risk associated with hiring their own software developers, may prefer the latter: because the latter implies some agreed-in-advance maximum cost for the featre or service, with the vendor (i.e. you) taking the risk of (not being paid any extra in the event of) any schedule overrun.
For these reasons, if you do the latter, you'll probably charge more (to help compensate you for the risk of mis-estimation and schedule overruns). Also, bidding for the project (preparing an "RFP") is something you might normally do without charging the customer, hoping to make that money back (via a slightly higher cost-per-hour or cost-per-project) after you're given the project.
But there are (at least) these two different ways to bill, the customer isn't necessarily trying to cheat you, and you ought to agree with your customer on what the terms are.