Developing a bespoke or tailored software project is not black and white. You as the customer have a broad expectation of how you expect it to perform and between you and your developer you create a plan. If things don’t physically work when you operate your software then you are on solid ground for getting a no charge fix from your developer.
However if your software does not work as a result of a business process not being considered in the planning stages then it all goes a bit grey. This is where the partnership element of the relationship comes into play. As a provider, they will want you to have a good overall outcome from the project however they are not much use to you if they are bankrupted because they have had to produce more code to cover a myriad of unexpected business needs or process.
It is useful to go into any bespoke or tailored project with this in mind. Much of it can be mitigated by keeping the initial phase of the project limited to a minimum specification. The only way to completely avoid this scenario is for you to specify in minute detail to a point where you spend more time specifying than developing. Unfortunately we need to add the word contingency here. Make sure you have one.