It will be challenging, and potentially costly, to get accurate location data for all customers. GeoIP APIs aren't always correct, and you're often rate-limited to a certain number of queries per hour on free or low-cost searches. Plus you then need accurate and maintainable data sets on drinking ages, and need to account for countries / states that have different drinking ages for different types of beverage. You also need to consider countries that have an outright ban on alcohol.
I'd say you're over-engineering this.
Instead of asking for an age, why not just ask them to check a box stating that they are above the minimum drinking age for their current location?
For example:
By checking this box, you agree that you are of the minimum age required by your country or state to purchase and consume alcoholic beverages.
Or more generally, in a way that covers illegality of alcohol:
By checking this box, you agree that you are legally entitled to purchase alcohol in your current state or country of residence.