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-router

  • Billing 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

  1. Popup errors are not always correct
    If billing, project linking, and network location are all valid, the UI itself may be wrong.

  2. The backend is the source of truth
    When in doubt, use:

    • Cloud Shell

    • gcloud CLI

    • Direct API calls

  3. Avoid creating many projects to "test" UI issues
    This can trigger abuse detection and account restrictions.

  4. 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.