I'm working on an app that sends technicians to fix problems. Think of it like Uber for repairs.
The service is only available in a select few cities, and the way the sign-up process right now is that they ask for an address before any details and if the area is serviceable, then the user enters all of their details, describe the problem, then billing info. (Option A)
I think this process is clunky and frustrating, but you'll know immediately if your location can't be served.
The other option (Option B) is to get all the info up top, then get the location before billing. This is also frustrating because you fill out information that doesn't matter unless you live in the right area.