Godot monetization is everything between "my game is fun" and "my game pays for itself": how players pay, what they pay for, and how you keep it fair. The engine stays out of it on purpose. Godot is MIT-licensed, takes no royalties and ships no store, ad or currency system, so every Godot game that earns money adds those pieces itself. This page walks through each piece, what it takes to build, and where PowerUp fits if you'd rather not build it all yourself.
Start with the business model
Pick the model before you pick plugins. It decides almost everything below.
- Premium. Players pay once, usually on Steam, itch.io or a console store, and that store takes the payment. You may need nothing on this page beyond the store's own tools. PowerUp doesn't sell through Steam today, so it isn't the right fit for a premium PC game.
- Free-to-play with purchases. The game is free and earns from items, coins, passes or subscriptions. That needs a catalog, a shop, platform billing and somewhere trustworthy to keep balances.
- Ads. Rewarded ads, interstitials and banners, on their own or next to purchases. Common for web and casual mobile games.
- Hybrid. Where most free-to-play games end up: purchases for players who want them, rewarded ads for the rest, and a No Ads option.
If you ship to the web (itch.io, your own site, a game portal) as well as to phones, plan for that early. Phones pay through the App Store and Google Play, while web builds and desktop builds you sell yourself need a card checkout such as Stripe. Ideally one wallet sits behind all of them, so a player's coins and items are the same wherever they bought them.
The pieces of a free-to-play Godot game
In-app purchases on iOS and Android
As of October 2026, Godot's documentation covers a first-party Google Play Billing plugin for Godot 4.2 and later. For iOS, the Godot project's iOS plugins repository includes an in-app store plugin you build from source, and the Asset Library lists community StoreKit plugins. A plugin gets you the store's payment sheet. It can't tell you whether a purchase is real: for that, a server checks the receipt with Apple or Google before anything is granted, and listens afterwards for refunds and renewals.
Start with in-app purchases for Godot, then follow the iOS and Android guide and server-side receipt validation.
Coins and an in-game shop
A virtual currency is easy to add and easy to get wrong. A balance saved on the device can be edited. A balance on a server still needs a full history behind it, so a refund can take back exactly what a purchase gave and your support team can see what happened. Watch the maths too: bundles that leave players with a few coins they can never spend frustrate players. In Europe, the network of national consumer authorities and the European Commission published key principles on in-game virtual currencies on 21 March 2025, starting with clear and transparent pricing. Our page on EU rules for in-game currencies goes through them.
Read virtual currency and an in-game shop, then build an in-game shop in Godot.
Season passes
A season pass sells progress through a ladder of reward tiers, with a free track and a premium one, for a limited time. The hard parts are counting progress honestly from real matches and deciding what happens to rewards nobody claimed when the season ends. See season passes and make a battle pass in Godot.
Rewarded ads
AdMob is a common choice on phones, and Google's H5 Games Ads on the web. The game saying "the ad finished" isn't proof, so rewards should be confirmed on a server and capped per day. Pacing matters just as much: an interstitial before the first match is a good way to lose a new player. Read rewarded ads for Godot and the guide to rewarded ads checked on the server.
Web checkout
Web builds, and desktop builds sold outside a store, can't use the App Store or Google Play, so they need their own checkout, and Stripe Checkout is the common choice. On phones, the rules about sending players to a web purchase have loosened in places. As of October 2026, Apple's App Review Guidelines let apps on the United States storefront include buttons and links to other ways to pay, and Google Play's payments policy has programs for alternative billing and links to outside offers in eligible countries.
Web checkout for Godot explains the options, Stripe checkout in a Godot game walks through the code, and web checkout for mobile games covers the store rules. To see what it could be worth, try the web checkout fee calculator.
LiveOps and remote config
Free-to-play games earn over months, not on launch day. That means events, quests, news and sales that change without a new build going through review. It also means prices and rules served from a server, a way to check a change before players see it, and a way to roll it back. Read LiveOps for Godot and remote config.
Store rules and player trust
Both stores want their own billing for digital goods sold inside a phone app. As of October 2026, Apple's guideline 3.1.1 names in-game currencies and game levels among the things that must use in-app purchase, and Google Play's payments policy requires Play billing for items such as virtual currencies, unless one of its exceptions or programs applies. Both require a game that sells randomized items, such as loot boxes, to show the odds before the purchase.
Beyond the stores, regulators are paying closer attention to in-game currencies, randomized rewards and younger players. Our store rules section covers loot box odds disclosure, EU rules for in-game currencies and the new app store age laws, each with links to the rule itself. PowerUp checks your setup against the rules built into it. That isn't legal advice, and your game's compliance is still up to you.
Build it yourself or use a service
Every piece above can be built. Together they come to a fair amount of backend work:
- receipt checks for two app stores, plus refunds, renewals and restores
- webhook endpoints that check signatures and ignore repeated messages, so nothing is granted twice
- a coin ledger with a history behind every balance
- a config server with versions, a review step and rollback
- server-side checks for ad rewards, with daily caps
- an age question and spending limits for younger players, with purchases for under-13s locked until you record a parent's consent
General game backends cover other ground, such as accounts, cloud saves and leaderboards. Godot backends compared looks at the options side by side.
Where PowerUp fits
PowerUp is a monetization engine for indie games, built for Godot first. One addon, addons/powerup/, adds a
PowerUp autoload with 70 methods and 16 signals, all plain GDScript. The console runs your catalog, coins,
passes, quests, events and ads, with three checkouts built in: Stripe on web and desktop, the App Store and
Google Play. Every change waits in a draft until it passes 48 automated publish checks (49 with Stripe
Managed Payments).
func _ready() -> void:
PowerUp.initialize("YOUR_PUBLISHABLE_KEY", save.client_id, {"baseUrl": API_URL})
PowerUp.player_token_issued.connect(func(token: String) -> void: save.token = token)
if save.token != "":
PowerUp.set_player_token(save.token)
else:
await PowerUp.register_player(save.client_id, save.display_name)
var store: Dictionary = await PowerUp.fetch_storefront()
if store.ok:
for offer in store.storefront.offers:
var button := PowerUpOfferButton.new()
button.configure(offer) # it won't enable a card that's missing its price
button.offer_pressed.connect(_on_offer_pressed) # your purchase flow
%OfferGrid.add_child(button)
We built it for our own game, buggs.io, which runs its store, coin wallet, item collection and online progress on PowerUp today. The SDK isn't public yet: studios get the addon and their keys with early access. See pricing, or read getting started to see what setup looks like. The feature pages below go deeper on each piece.