When Google Thought I Was in India: A Regional Billing Bug in Google Maps Platform
Sometimes you do everything right — double-check the configuration, billing, permissions — yet the system keeps insisting that you are the problem.
That is exactly what happened when I tried to enable Maps SDK for Android on Google Cloud.
Initial setup
Here is the full context:
A valid Billing Account was already created
Billing type: Prepaid / Manual
Country: Vietnam
Currency: VND
IP location: Vietnam (no VPN, no proxy)
Billing account had available balance
Despite all of this, every attempt to enable Maps SDK for Android triggered a popup asking me to add a card and follow a billing flow… specifically for India.
What was configured correctly?
To rule out user error, I carefully verified each part.
1. Billing account configuration
Country set to Vietnam
Currency set to VND
Billing type: Prepaid
Balance available
No indication that this billing account belonged to any other region.
2. Project correctly linked to billing
Project ID:
sale-routerBilling status: Active
Billing account properly attached (not "No billing account")
In short:
The project had billing, billing had funds, and billing was Vietnamese.
3. Network location and IP
IP geolocation confirmed via public IP lookup services
Location resolved to Vietnam
No VPN, no corporate proxy, no international routing
There was no reasonable signal suggesting the account was operating from India.
4. Creating new projects did not help
Suspecting a stuck project state, I created several new projects and repeated the process.
Result:
The same India-related popup appeared every time
Creating too many projects in a short period triggered Google Cloud's abuse detection
One account was temporarily restricted due to bot-like behavior
At this point, it was clear the issue was not misconfiguration.
Where is the real problem?
The key clue was inside the popup message itself:
"Because Google Maps Platform services are billed separately from Google Cloud services in India…"
This statement made no sense given that:
The billing account is Vietnamese
The currency is VND
The IP is located in Vietnam
What was actually happening:
Backend billing recognition was correct
Frontend / UI logic incorrectly assumed the account was subject to India-specific billing rules
In other words:
A prepaid billing account in Vietnam was mistakenly treated as an India billing account by the Google Maps Platform UI.
This is a regional UI logic bug, not a backend billing issue.
The solution: bypass the UI and talk directly to the backend
Once the issue was identified as UI-level logic, the fix was straightforward:
Skip the web interface entirely and enable the API directly via Cloud Shell.
Step 1: Open Cloud Shell
Select the affected project (e.g.
sale-router)Open Cloud Shell from Google Cloud Console
Wait for the terminal to initialize
Step 2: Enable Maps SDK via gcloud
Run the following command:
gcloud services enable maps-android-backend.googleapis.com
Approve the authorization request if prompted.
This command:
Sends the request directly to Google's API Services backend
Completely bypasses the faulty UI logic
Enables the API as long as billing and permissions are valid
Step 3: Verify
Go to APIs & Services → Enabled APIs
Confirm that Maps SDK for Android is listed
In my case, the API was enabled successfully.
The UI still referenced India in some places, but the backend accepted the configuration and the SDK worked normally.
Lessons learned
Popup errors are not always correct
If billing, project linking, and network location are all valid, the UI itself may be wrong.The backend is the source of truth
When in doubt, use:Cloud Shell
gcloud CLI
Direct API calls
Avoid creating many projects to "test" UI issues
This can trigger abuse detection and account restrictions.Prepaid billing accounts may be misclassified regionally
In this case, Vietnam was mistakenly handled as India — a subtle but impactful bug.
Conclusion
In this case:
The configuration was correct
Billing was valid and funded
The project was properly linked
The network location was accurate
The issue was caused by:
Incorrect regional logic in the Google Maps Platform UI
Backend systems still correctly recognized the billing account
The practical workaround was simple and reliable:
Use Cloud Shell + gcloud services enable to bypass the UI and enable Maps SDK directly.
When the UI insists you are wrong but logs and backend state say otherwise, trust the backend — and take the back door when necessary.