AnkiDroid Loses Google Play Donation Access

Anki 23.12.12x17=

Google Play now blocks AnkiDroid from linking to its Open Collective donation page, cutting off the volunteer-maintained app's only funding stream. The error page says "There was an error while loading," but the real issue is more mundane and frustrating: Google's policy on country-specific distribution doesn't account for apps whose entire business model is "we accept donations, nothing else."

I've been using AnkiDroid for years. It's the Android client for Anki, the spaced-repetition flashcard app that serious learners swear by. Unlike the desktop version or AnkiMobile, AnkiDroid is built entirely by volunteers — no company, no ads, no premium tiers. The Open Collective page isn't just a nice-to-have; it's how they pay for servers, development time, and basic maintenance. Remove that, and you're asking people to keep the lights on indefinitely for free.

This isn't some startup pivoting to a new revenue model. It's a well-established open-source project hitting a bureaucratic wall. The GitHub issue thread #21656 has been active for weeks, with maintainers trying to figure out whether they need to rebuild their entire donation workflow just to comply with Google's interpretation of country distribution rules. Spoiler: they probably do.

Technical Overview

The app's violation centers on a straightforward policy requirement: donations collected through the platform must go to IRS-recognized 501(c)(3) organizations. The issue isn't whether the donation feature works—it does—but that it accepts contributions for groups that haven't filed for or received tax-exempt status.

This matters because the Payments policy treats donation flows differently from other monetization models. Regular in-app purchases or subscriptions don't face the same scrutiny, but when money moves through the app as a charitable contribution, the platform has to verify the recipient's legal standing. Right now, the app lets users select any organization as a donation target without checking its tax status against the IRS database.

The fix requires two changes: a validation step during organization setup and a runtime check before processing donations. For validation, the app should query the IRS Tax Exempt Organization Search API during onboarding:

import requests

def verify_tax_exempt(ein):
    # Check EIN against IRS Tax Exempt Organization Search
    url = f"https://apps.irs.gov/app/eos/pub78Search.do?ein={ein}"
    response = requests.get(url, timeout=10)
    # Parse response to confirm 501(c)(3) status
    return "401(c)(3)" in response.text

At runtime, before routing a donation, the app should confirm the selected organization still appears in good standing. This isn't just a one-time check—organizations can lose their status, and the app needs to catch that before processing payments. The documentation submitted during review didn't include this workflow, which is why the violation was flagged.

Industry Impact

Google's billing policy creates a particularly frustrating situation for open-source projects like AnkiDroid. The app itself is entirely free — no paid features, no ads, no sales of any kind. Volunteers maintain it, and the Open Collective is their only funding source. Yet Google's system treats any transaction through Play Billing as a taxable sale, which means they're rejecting donations because AnkiDroid's 501(c)(6) status doesn't align with Google's narrow interpretation of what constitutes a tax-exempt transaction.

I think this underestimates the practical friction developers face when platform policies don't account for how open-source projects actually sustain themselves. The policy assumes all apps with monetization features are trying to turn a profit, but AnkiDroid's model is pure community support — users voluntarily contributing to cover server costs and developer time. Google's automated systems aren't built to distinguish between commercial transactions and charitable giving, especially when the organization itself is tax-exempt but the donation isn't tax-deductible for the individual donor.

This matters for other open-source Android apps that rely on similar funding models. If Google's policy stays as-is, projects face a choice: integrate Google's billing system and pay fees on donations they never actually receive as revenue, or find alternative distribution methods and lose Play Store visibility. The broader implication is that platform gatekeepers can inadvertently squeeze out volunteer-maintained software, even when those projects pose no commercial threat. Whether this gets resolved through policy clarification or technical workarounds remains an open question.

Conclusion

Google's move feels less like policy enforcement and more like platform leverage — a reminder that volunteer-maintained open source projects operate at the mercy of corporate gatekeepers who can change rules without notice. AnkiDroid's sole funding comes from an Open Collective donation link that Google now blocks, leaving the app stranded between policy ambiguity and an September 11 removal deadline.

The broader question isn't whether this is fixable — it almost certainly is once Google's review team stops erroring out — but why a company that built its empire on developer goodwill keeps treating open source maintainers like adversaries. AnkiDroid isn't selling crypto or scraping data. It's a flashcard app kept alive by volunteers who needed one working donation channel. If your project depends on Google Play for distribution, this is your warning shot. The real problem isn't the policy. It's the asymmetry of power when the gatekeeper decides what constitutes "acceptable" funding for the public good.