Part of being a freelance or self employed web developer is costing your own jobs. Costing a new website can be tricky as often you don’t know exactly how long something is going to take so therefore has to estimate it.
Customers often want a fixed price when it comes to websites which you can understand as they need to check they can afford it and budget for it. As the website build goes along you may find that you have to add on extras that were not disclosed in the initial specification. If this is the case then you need to explain that it was not in the original quote and will cost extra. Always get approval from the client before doing any extra work as they may not agree to pay you for it otherwise.
The only true way to accurately cost a job is to meet with the client and find out as much information as possible about what they want. Check how many pages they want and what functionality will be on each page. You also need to check what changes they want to be able to make themselves. If they need to be able to add products or service or create news articles for example then this will all need to be built in and may require more time.