In-App Purchases

With the introduction of In-App Purchase Subscriptions, extension partners now have the option to offer premium features directly within their extensions. These subscriptions can be booked by merchants in the Shopware Administration interface via a purchase modal provided by Shopware.

This feature enhances the flexibility of your monetization strategy, allowing you to offer added value to both free and already paid extensions.

What Are In-App Purchase Subscriptions?

In-App Purchase Subscriptions (IAP subscriptions) allow you to offer additional features within your extension that merchants can unlock via a monthly or annual subscription.

You can use subscriptions to:

  • Add value to an existing paid extension.

  • Offer premium upgrades for otherwise free extensions.

The entire purchasing process is handled by Shopware, so you only need to trigger the process from your extension.

In App Purchases are billed as known as part of the monthly Shopware invoice.

Subscription Groups and Tiers

To create an In-App Purchase Subscription, you must first create a Subscription Group.

  • A group is always required, even if you plan to offer only a single subscription tier.

  • Each group can contain one or more Subscription Tiers.
  • Merchants can have only one active tier per group at a time.

If a group contains multiple tiers, merchants can:

  • Upgrade at any time (the higher-priced tier becomes active immediately).

  • Downgrade as well, with changes taking effect at the beginning of the next billing cycle.

Pricing Options

You can define:

  • Monthly pricing for all tiers.

  • Annual pricing in addition to monthly pricing, only for tiers assigned to free extensions.

Pricing information will be automatically displayed in the checkout modal presented to the merchant.

Assigning Subscriptions to Extensions

Once you have created your subscription group and tier(s), you need to assign them to specific extensions.

The following rules apply:

  • Only extensions with a valid pricing model can be selected.

  • The extension must be compatible with Shopware version 6.6.9.0 or higher.
  • If an annual pricing option is offered, the extension must be free.
  • Support will automatically be enabled for extensions that previously did not include it.

Merchant Experience 

Shopware handles the complete checkout experience.

  • When the purchase is triggered, a modal dialog appears in the Shopware Administration.

  • This modal includes tier details, pricing, and terms.
  • Once confirmed, the subscription becomes active immediately for the merchant. 

You simply trigger this checkout process from your extension. No billing or interface integration is required on your end.

Receiving and Verifying Purchases

When a merchant purchases a subscription, Shopware sends the information to your extension in a secure way.

  • You will receive a JWT (JSON Web Token) from Shopware, which includes the in-app purchase data.

  • This JWT can be delivered as a query parameter (GET) or in the request body (POST), depending on the context.
  • You must verify the signature to ensure the data has not been tampered with and originates from Shopware.

To make integration easier:

  • Use the official Shopware App PHP SDK for plain PHP apps.

  • Use the Shopware App Bundle for Symfony-based apps.

In the administration interface, you can access active In-App Purchases and inject them into your extension logic accordingly. This allows you to control access to premium features based on the merchant’s subscription status.

First steps

To begin offering In-App Purchase Subscriptions:

1. In your Shopware account, navigate to Extension Partner > In-app purchases (1) and click Create subscription IAK (2) to create a new subscription group.

2. Now create a new subscription group and then save it.

3. Add one or more subscriptions.

4. Assign the subscription to one or more of your extensions.

5. Trigger the Shopware-provided purchase modal from within your extension.

Learn More

For technical implementation details and integration examples, please refer to our developer documentation.

Was this article helpful?