Skip to main content

API Reference

IAPKit - In-App Purchase Solution

Complete API documentation for Godot IAP. The plugin provides a unified interface for iOS and Android in-app purchases with type-safe APIs.

Getting Started

# Load OpenIAP types for type-safe API
const Types = preload("res://addons/godot-iap/types.gd")

func _ready():
# GodotIapPlugin is an autoload singleton
GodotIapPlugin.purchase_updated.connect(_on_purchase_updated)
GodotIapPlugin.purchase_error.connect(_on_purchase_error)

if GodotIapPlugin.init_connection():
_fetch_products()

Type System

All API methods use typed parameters and return typed objects from types.gd.

Platform-Specific Types (Sealed Class Pattern)

GDScript doesn't support Union types like Dart's sealed class. For functions returning platform-specific types:

Return TypeDescriptionExample
-> ArrayArray of Types.ProductAndroid OR Types.ProductIOSfetch_products()
-> VariantTyped object OR nullrequest_purchase()
-> Types.XSame type on all platformsfinish_transaction()
# Returns Array of typed products
var products = GodotIapPlugin.fetch_products(request)
for product in products:
# product is Types.ProductAndroid on Android, Types.ProductIOS on iOS
print(product.id, " - ", product.display_price)

Signals

The plugin emits the following signals:

SignalParametersDescription
purchase_updatedDictionaryEmitted when a purchase is updated
purchase_errorDictionaryEmitted when a purchase error occurs
products_fetchedDictionaryEmitted when products are fetched (iOS async)
promoted_product_iosString(iOS) Emitted when a promoted product is selected
user_choice_billing_androidDictionary(Android) Emitted for user choice billing
developer_provided_billing_androidDictionary(Android) Emitted for developer provided billing

Core Methods

Connection

MethodReturnsDescription
init_connection()boolInitialize the billing connection
end_connection()Types.VoidResultEnd the billing connection

Products

MethodReturnsDescription
fetch_products(request)ArrayFetch product details (ProductAndroid[] or ProductIOS[])

Purchases

MethodReturnsDescription
request_purchase(props)VariantRequest a purchase (PurchaseAndroid, PurchaseIOS, or null)
finish_transaction(purchase, is_consumable)Types.VoidResultFinish a transaction
get_available_purchases()ArrayGet available purchases (PurchaseAndroid[] or PurchaseIOS[])
restore_purchases()Types.VoidResultRestore previous purchases

Subscriptions

MethodReturnsDescription
get_active_subscriptions(ids)ArrayGet active subscriptions (ActiveSubscription[])
has_active_subscriptions(ids)boolCheck for active subscriptions

Utility

MethodReturnsDescription
deep_link_to_subscriptions(options)Types.VoidResultOpen subscription management
verify_purchase(props)VariantVerify a purchase

iOS-Specific Methods

MethodReturnsDescription
sync_ios()Types.VoidResultSync transactions
clear_transaction_ios()Types.VoidResultClear finished transactions
get_pending_transactions_ios()ArrayGet pending transactions (TransactionIOS[])
present_code_redemption_sheet_ios()Types.VoidResultPresent offer code sheet
show_manage_subscriptions_ios()Types.VoidResultShow subscription management
begin_refund_request_ios(transaction_id)Types.RefundRequestResultIOSBegin refund request
current_entitlement_ios(sku)VariantGet current entitlement (TransactionIOS or null)
latest_transaction_ios(sku)VariantGet latest transaction (TransactionIOS or null)
get_storefront_ios()VariantGet storefront info (StorefrontIOS or null)
subscription_status_ios(sku)ArrayGet subscription status (SubscriptionStatusIOS[])
is_eligible_for_intro_offer_ios(group_id)boolCheck intro offer eligibility
get_app_transaction_ios()VariantGet app transaction (AppTransactionIOS or null)
get_promoted_product_ios()VariantGet promoted product (ProductIOS or null)
get_receipt_data_ios()StringGet receipt data
is_transaction_verified_ios(transaction_id)boolCheck transaction verification
get_transaction_jws_ios(transaction_id)StringGet transaction JWS

External Purchase APIs (iOS 18.2+)

MethodReturnsDescription
can_present_external_purchase_notice_ios()boolCheck if can present notice
present_external_purchase_notice_sheet_ios()Types.VoidResultPresent external purchase notice
present_external_purchase_link_ios(url)Types.VoidResultPresent external purchase link

Android-Specific Methods

MethodReturnsDescription
acknowledge_purchase_android(token)Types.VoidResultAcknowledge a purchase
consume_purchase_android(token)Types.VoidResultConsume a purchase
get_storefront_android()StringGet storefront info (country code)
get_package_name_android()StringGet package name

Alternative Billing (Deprecated)

MethodReturnsDescription
check_alternative_billing_availability_android()Types.BoolResultCheck availability
show_alternative_billing_dialog_android()VariantShow billing dialog
create_alternative_billing_token_android()VariantCreate billing token

Billing Programs API (Android 8.2.0+)

MethodReturnsDescription
is_billing_program_available_android(program)boolCheck program availability
launch_external_link_android(params)Types.VoidResultLaunch external link
create_billing_program_reporting_details_android(program)VariantCreate reporting details

Next Steps