Payhook · Updated

Chrome extensions no longer support in-app payments (what to use instead)

Google shut down Chrome Web Store billing and the licensing API. Here is what non-developers should do instead, and how Payhook plus Stripe replaces in-app purchases.

#chrome-web-store#in-app-payments#stripe#beginners#monetization


If you searched “how do I charge inside my Chrome extension,” you may have found outdated advice about google.payments.inapp or Chrome Web Store managed billing. That path is closed. Google deprecated Chrome Web Store payments; new paid items were blocked in 2020, charges stopped on February 1, 2021, and the old licensing API is no longer something you should build on.

This post explains what that means in plain language for non-developers - and the modern replacement: Stripe Checkout hosted by Payhook, not a DIY payment server.

What Google turned off

Chrome used to let some extensions sell:

  • Paid extensions up front
  • In-app purchases (extra features inside a free extension)
  • Subscriptions tied to Google’s system

Google’s official deprecation notice is archived in the Chrome developer docs. The short version for creators:

Old approachStatus today
buy.js / google.payments.inappDeprecated - do not start new projects
Chrome Web Store payment APIs (InAppProducts, UserLicenses, etc.)Deprecated
Auto-renewing subscriptions through GoogleStopped processing in 2021
Licensing API as source of truthDeprecated - migrate off

You can still sell extensions. You cannot rely on Google as your merchant of record for extension IAP.

Why this confuses beginners in 2026

Blog posts, YouTube videos, and forum answers from the early 2010s still mention “5% Chrome Web Store fee” and in-app SKUs. AI models sometimes repeat that obsolete flow.

Use this decision rule:

If a tutorial mentions google.payments.inapp or Chrome Web Store SKUs → it is obsolete.
If a tutorial sends users to Stripe Checkout on the web → it is the modern pattern.

What non-developers should do instead

You do not need to become a fintech company. You need three pieces:

  1. A Stripe account - you are the merchant; Stripe processes cards (beginner setup guide)
  2. A hosted checkout page - users pay in a familiar browser tab, not inside a tiny popup
  3. A way to unlock Pro in the extension - after payment, your extension checks entitlement

Payhook exists for step 2 and 3 without you writing webhook servers or license databases.

User clicks Upgrade → unlock.payhook.link (Stripe Checkout) → Payhook records payment → extension unlocks Pro

Connect once in dashboard.payhook.link, define your product, and follow Monetize a browser extension without a payment backend.

Mistakes to avoid after the deprecation

Risky ideaWhy it hurts non-developers
Card form inside the extension popupSecurity, PCI, and Chrome policy complexity
”Email me after PayPal” manual unlockDoes not scale; easy to pirate
Rolling your own license API on day oneMonths of backend work before your first dollar
Waiting for Google to bring IAP backNo public roadmap - plan on Stripe

Hosted checkout keeps sensitive payment UI off your extension surface. Your popup only needs an Upgrade button.

Does this apply to Firefox and Safari?

Firefox: Mozilla does not offer a Chrome-style managed IAP replacement you can depend on for most indie extensions. Same pattern: Stripe + hosted checkout + Payhook.

Safari: App Store rules and Apple’s programs are separate from Google’s deprecated system - but you still should not reinvent card collection in a popup. Payhook’s hosted flow aligns with how non-developers ship Pro on Mac.

Browser-specific beginner guides:

Copy-paste prompt for your AI builder

Do not use google.payments.inapp or Chrome Web Store billing - they are deprecated.

Monetize this extension with Payhook:
- Upgrade button in popup; open hosted Stripe checkout via unlock.payhook.link
- Gate Pro with Payhook entitlement checks
- Stripe connected in https://dashboard.payhook.link
- No custom payment backend or license server for the default flow

Optional: connect Payhook MCP if your agent supports tool-driven setup.

Next steps