Key takeaways
- Godot has no built-in ads or store SDK, so mobile ads and in-app purchases come from plugins, mostly hosted in the community-run godot-sdk-integrations organization.
- Each export target has its own rules: Google Play and the App Store require their own billing for digital goods, and Steam allows no advertising models and only Steam Wallet payments.
- An offerwall needs no Godot SDK: your backend signs a link, the game opens it, and your server credits currency from postbacks, in every build except Steam.
How do you monetize a Godot game?
You monetize a Godot game the same way as any other game: a premium price, in-app purchases, ads, or a rewarded offerwall. The difference is that Godot ships none of the SDKs for these, so you add each one yourself: an AdMob plugin for mobile ads, a Google Play Billing or StoreKit plugin for purchases, GodotSteam for Steam, and a signed link for an offerwall. Which mix you can use depends on where you ship, because Google Play, the App Store, Steam, itch.io and the web each set different rules.
This guide covers Godot 4 (the current docs are for Godot 4.7) and lists the plugins that are still maintained, with release dates checked on October 22, 2026.
What Godot gives you, and what it leaves to plugins
Godot is free and open source under the MIT license. Its license page says the engine’s license terms “do not apply to the content you create with it” and that you will be the sole copyright owner of your game. There is no engine royalty to plan around, so every dollar your game makes is split only with the stores and ad networks you choose.
What Godot does not have is a monetization layer. There is no ads node, no store node and no built-in WebView. The Godot Foundation explained why in its post Third party services SDKs and their circumstances (September 2024): it “has decided to maintain its stance on not directly developing SDKs” and instead set up an official GitHub organization, godot-sdk-integrations, where the community and vendors host and maintain integrations. The Foundation says it will not manage or update them.
In practice:
- Check every plugin’s last release and its supported Godot version before you build on it. Mobile plugins often need a rebuild when Godot or the vendor SDK updates.
- Use Godot’s v2 plugin system for Android (Godot 4.2 and later, per the Android plugins page) and the
.gdipplugin format for iOS, described on the iOS plugins page. Plugin code runs only in exported builds, so test on a device.
Godot monetization options by platform
One Godot project can export to Android, iOS, Windows, macOS, Linux and the web. Each target allows a different set of models. Policy facts in this table were checked on October 22, 2026.
| Target | Ads | In-app purchases | Premium sale | Offerwall |
|---|---|---|---|---|
| Android (Google Play) | Yes, with an AdMob plugin | Google Play Billing required for digital goods | Possible, less common | Yes, within Google Play rules |
| iOS (App Store) | Yes, with an AdMob plugin and the ATT prompt | Apple in-app purchase required for currency and unlocks | Possible, less common | Yes, within Apple rules |
| Windows, macOS, Linux on Steam | No, Valve does not support ad models | Steam Wallet only, through the microtransaction API | The main model | No |
| Desktop on itch.io or your own site | Rare | Your own checkout, or paid DLC-style downloads | Yes, with a revenue share you set on itch.io | Yes |
| Web export | Through a web ad or portal SDK called from JavaScript | Depends on the host or your own checkout | Rare, web games are usually free | Yes, by link or iframe |
Many Godot developers end up with a free mobile build with ads and purchases, and a premium Steam build with neither. Godot’s feature tags and separate export presets make that split clean, so one project can serve both.
Godot AdMob plugins for mobile ads
Google publishes Mobile Ads SDKs for Android, iOS, Unity, Flutter and C++ on its AdMob developer site. Godot is not on that list, so every Godot AdMob integration is a community plugin. Two are actively maintained for Godot 4:
| Plugin | Godot version | Latest release (checked October 22, 2026) | Notes |
|---|---|---|---|
| Poing Studios Godot AdMob Plugin | 4.5 and later | v5.1.0, September 2026, with newer nightly builds | Android and iOS, GDScript and C#, mirrors the Google SDK’s structure, mock ads in the editor, mediation adapters, UMP consent |
| godot-sdk-integrations Godot Admob Plugin | 4.7 (tested against) | v7.0, May 2026 | Android and iOS as separate Asset Library entries, node-based setup in the Inspector, all ad formats, mediation with up to 15 extra networks, UMP consent and ATT signals |
Older Godot 4.0 plugins still appear in search results and the Asset Library. Skip anything without a release in the last year, because Google Play keeps raising the target API level it accepts and an abandoned plugin will eventually block an update.
Which ad formats fit a Godot game
- Rewarded video is the format players accept most, because they choose to watch. Offer it for a revive, a second chest or a daily bonus. What are rewarded ads? covers the mechanics.
- Interstitials work between levels or runs, never in the middle of play. Cap how often they show.
- Banners earn little and take screen space, so many games skip them.
If a rewarded ad grants currency that matters, do not trust the client alone. Google’s server-side verification page describes callbacks that Google sends to your server when a user earns a reward. Check that your chosen plugin exposes the server-side verification options before you rely on them. To compare networks and set up mediation, read AdMob alternatives and What is ad mediation?
Ad mistakes that get Godot games rejected or flagged
- Shipping with real ad unit IDs in debug builds, or clicking your own live ads while testing. Both plugins ship Google’s test IDs for this.
- Skipping the consent form for users in the EEA and UK. Both plugins include Google’s User Messaging Platform; show it before you request ads.
- Showing an interstitial in the middle of play or right as the player taps a button, which leads to accidental clicks.
In-app purchases in Godot: Google Play and the App Store
If you sell currency, levels or other digital content inside a mobile game, the stores require their own billing. Google’s Payments policy says apps that charge for in-app digital content “must use Google Play’s billing system” and lists virtual currencies as an example, with exceptions only through its alternative billing programs in eligible regions. Apple’s App Review Guidelines section 3.1.1 says that to unlock features such as “in-game currencies, game levels, access to premium content, or unlocking a full version”, you must use in-app purchase. In the United States storefront Apple now allows buttons and links to other purchase methods; in other storefronts it does not. Both rules were checked on October 22, 2026.
Android: GodotGooglePlayBilling
Godot’s Android in-app purchases page calls GodotGooglePlayBilling a first-party plugin, compatible with Godot 4.2 and later, and it needs Android Gradle builds enabled. Its 3.3.0 release (July 2026) moved to Google Play Billing Library 9.1. The documented flow is short:
var billing_client: BillingClient
func _ready():
billing_client = BillingClient.new()
billing_client.connected.connect(_on_connected)
billing_client.query_product_details_response.connect(_on_query_product_details_response)
billing_client.start_connection()
func _on_connected():
billing_client.query_product_details(["gem_pack_small"], BillingClient.ProductType.INAPP)
func _on_buy_pressed():
var result = billing_client.purchase("gem_pack_small")
The docs say you must complete a product details query before you call purchase(), and results arrive on a purchases-updated signal. Consumables such as gem packs are consumed after you grant them; one-time unlocks are acknowledged.
Grant the gems on your server, not in GDScript. Google’s fight fraud and abuse page says to send the purchaseToken to your backend, check that it was never used before, verify it with the Google Play Developer API, grant the item, and then acknowledge the purchase. It also says not to grant anything while a purchase is PENDING.
iOS: InAppStore or StoreKit 2
iOS has two options, both hosted in godot-sdk-integrations:
- InAppStore in godot-ios-plugins. It wraps Apple’s original StoreKit API and you build it from source for your Godot version (the repository has no prebuilt Godot 4 release). You read results by polling pending events for product info, purchases and restores.
- Godot StoreKit 2, a newer plugin for Apple’s StoreKit 2 with
await-friendly methods. Its README says it is “still in ongoing development so the API isn’t stable”, and its latest release was v0.2 in September 2025.
Either way, add a Restore purchases button for non-consumables, test with sandbox accounts on a real device, and keep the wallet on your server so a purchase on one device shows up on another.
Selling a Godot game on Steam and itch.io
On desktop, the usual model is a premium price. The two stores Godot developers use most have very different terms.
Steam
Valve’s Steam Direct fee is $100 per app, non-refundable, and recouped in the payment after the product reaches $1,000 in Adjusted Gross Revenue (checked October 22, 2026). Two Valve rules shape everything else:
- No ads. Valve’s Advertising on Steam page says advertising models are not supported in games distributed on Steam, and that you should not reward players for watching or engaging with ads. That rules out AdMob-style ads and offerwalls in the Steam build.
- Steam Wallet only. The Microtransactions page says in-game purchases must use the microtransaction API “so Steam customers can only make purchases from the Steam Wallet.”
For achievements, overlays and microtransactions from Godot, the community project GodotSteam wraps the Steamworks SDK for Linux, macOS and Windows, as a module or GDExtension. Its source now lives on Codeberg, and its GitHub repository is archived, so download it from the links on its site. The full rule set is in Can you put ads in a Steam game?
itch.io
itch.io uses open revenue sharing. Its payments guide says you decide what percentage of sales goes to itch.io, “from 0% to 100%”, uses 10% as the default rate in its example, and says payment processing costs (generally $0.30 plus 2.9%) come on top.
Monetizing a Godot web export
Godot 4 web exports run in any modern browser. Godot’s Exporting for the Web page notes two limits that affect monetization planning: since Godot 4.3 single-threaded export is the default (threaded builds need cross-origin isolation headers, which not every host can send), and C# projects in Godot 4 cannot export to the web.
The AdMob plugins are mobile only, so web ads come from a web ad network or the SDK of the game portal that hosts you. You call those from GDScript through the JavaScriptBridge singleton, which can run JavaScript, read objects such as window with get_interface(), and pass Godot callbacks to JavaScript with create_callback(). A rewarded ad on the web is then a JavaScript call that resumes your game through a callback. Portals, ad options and the rest of the web picture are in How to monetize an HTML5 web game.
Adding an offerwall to a Godot game
An offerwall lists offers from advertisers, such as trying an app or finishing a survey. Players who complete one earn your in-game currency, and you earn per completed offer. It suits the same players rewarded video does, the ones who will not pay, and a completed offer usually pays more than a single ad view. Offerwall vs rewarded video compares the two.
You do not need a Godot SDK for this. The offerwall is a web page, and Godot can make an HTTPS request and open a URL on every platform. The pattern is:
- Your backend signs an offerwall link for the logged-in player.
- GDScript fetches it with
HTTPRequestand opens it withOS.shell_open(). - The offerwall sends a server-to-server postback to your backend for each reward and each reversal.
- The game reloads the balance from your server when the player comes back.
The full code, the web export pop-up rule and the Steam export preset are in How to add an offerwall to a Godot game. The key rules: never sign the link in GDScript, never credit currency on the client, and leave the earn screen out of the Steam build.
On mobile, read the store rules first. Apple’s guideline 3.2.2(x) lets apps incentivize actions such as watching an ad, but not forcing users to rate, review or download other apps to use the app. Can you put an offerwall in an iOS app? and Incentivized installs: Google Play policy go through the details.
Illustrative example: pricing earned gems against a gem pack
Sample figures only. Say your smallest Google Play gem pack is 500 gems for $4.99, about 100 gems per dollar the player pays. If you set the offerwall so each dollar you earn gives the player 100 to 150 gems, an offer that earns you $2 gives 200 to 300 gems. Players who earn gems get a fair deal, and buying stays the faster path. Try your own numbers in the virtual currency calculator, and see virtual economy design for sinks and pricing.
Which monetization mix fits your Godot game
| Game | Main model | Add-ons to consider |
|---|---|---|
| Free mobile casual or hyper-casual | Rewarded video and interstitials | Remove-ads purchase, small gem packs, an optional earn screen |
| Free mobile game with a deep economy (RPG, idle, collection) | In-app purchases | Rewarded video for non-payers, an offerwall for currency |
| Premium PC game | Steam or itch.io sale | DLC, soundtrack, supporter pack; no ads in the Steam build |
| Browser game | Portal or web ads | An offerwall by link or iframe, a paid desktop version |
Most free games do best with a mix of ads and purchases aimed at different players, not one model alone. Hybrid monetization for games explains how to segment payers and non-payers so ads do not eat into purchases, and How to monetize an app covers the wider set of models. To estimate ad income per thousand impressions, use the eCPM calculator.
Where Sharklio fits in a Godot game
Sharklio is a pay-per-result affiliate network. It has no Godot SDK, so Godot games use the signed offerwall link from your backend, which works in Android, iOS, desktop and web exports. Each app sets its own currency name and icon, conversion rate, user split, rounding and wall design, with a live preview. Offers depend on the player’s country and device, players on VPNs, proxies, Tor or data center networks are blocked, and end users must be at least 16. Every credit and every reversal reaches your server through a signed server-to-server postback, and every publisher application is reviewed by hand. See how the wall works, or get in touch.
Frequently asked questions
Does Godot have built-in ads?
No. Godot has no ads or store SDK in the engine. Mobile ads come from community AdMob plugins such as the Poing Studios plugin or the godot-sdk-integrations Godot Admob plugin.
What is the best AdMob plugin for Godot 4?
As of October 2026, the two maintained options are the Poing Studios Godot AdMob Plugin (Godot 4.5 and later, GDScript and C#) and the godot-sdk-integrations Godot Admob plugin (tested on Godot 4.7). Pick the one that supports your Godot version and had a recent release.
How do I add in-app purchases to a Godot game?
On Android, use the GodotGooglePlayBilling plugin, which Godot’s docs list for Godot 4.2 and later. On iOS, use the InAppStore plugin from godot-ios-plugins or the newer, still unstable Godot StoreKit 2 plugin, and verify every purchase on your server before you grant items.
Can I make money with a Godot game on Steam?
Yes, mainly through a premium price, DLC and Steam Wallet microtransactions through GodotSteam. Valve does not allow advertising models or rewards for engaging with ads, so ads and offerwalls stay out of the Steam build.
Does Godot take a cut of my revenue?
No. Godot is MIT licensed and its license terms do not apply to the content you create, so you only share revenue with the stores, payment processors and ad networks you use.
Can a Godot web export show ads?
Yes, but not through the AdMob plugins, which are mobile only. Call a web ad or portal SDK from GDScript with JavaScriptBridge, or open an offerwall by link.