deepwall
HomeContact UsLogin
  • Overview
  • System Components
  • Key Concepts
  • How It Works
  • Sign In
  • 🚀GETTING STARTED
  • App Registration
  • Configure In-App Products
  • Paywall Setup
    • Create A Paywall
    • Configure Look & Feel
    • Texts and Translations
  • Displaying Paywalls
    • Activate Default Displays
    • Create Targeted Displays
    • Display Priorities
    • Display Reports
    • Edit Displays
    • Display Rules
    • On Close Paywalls
  • Store Configuration
  • Attributions Configuration
  • App Status and Settings
  • ⚙️ SDK Framework
    • SDK Installation
      • iOS SDK
      • Android SDK
      • React Native SDK
      • Flutter SDK
      • Cordova SDK
      • Unity SDK
    • Using the SDKs
      • Initialization
      • Configuration
      • Listening SDK Events
      • Requesting Paywalls
      • Closing a Paywall
      • Validating Receipts
      • Making Purchases
      • Upgrades and Downgrades
      • Non-subscription Purchases
      • Restoring Purchases
      • Transition To Another Paywall
  • 🧪EXPERIMENTS
    • Experiments Overview
    • Create Experiments
    • Experiment Reports
    • Manual Traffic Allocation
    • Update Experiments
    • How Optimization Works?
  • 📦Integrations
    • Integrations Overview
    • Events List
    • Adjust
      • Get App Token
      • Create Adjust Events
    • AppsFlyer
      • Get Dev Key
    • Webhooks
    • OneSignal
  •  App Tracking (iOS 14.5)
    • App Tracking Overview
    • Configure In-app Actions
    • Create ATT Prompt
    • Displaying ATT Prompts
    • Experiments
  • 📈DASHBOARD
    • App Overview
    • Invite Members
    • Access Management
  • GUIDES
    • Apple
      • Getting the App Credentials
      • Setup In-App Products
      • Getting the Shared Secret
      • Server to server notifications
    • Google
      • Getting App Credentials
      • Setup In-App Products
      • Create Service Account Key
      • Developer Notifications
    • Huawei
      • Getting App Credentials
      • Setup In-App Products
      • Developer Notifications
  • 🔍Testing
    • Test Flows
    • Troubleshooting
    • Sandbox Testing
      • Apple App Store
      • Google Play Store
  • 🔗SDK Links
  • iOS SDK
  • Android SDK
  • React Native SDK
  • Flutter SDK
  • Cordova SDK
  • Unity SDK
Powered by GitBook
On this page
  • For iOS Apps
  • For Android Apps

Was this helpful?

  1. ⚙️ SDK Framework
  2. Using the SDKs

Upgrades and Downgrades

Learn how to manage subscription upgrades, downgrades or crossgradse

For iOS Apps

Users can choose to upgrade, downgrade, or crossgrade between subscriptions if they want and do it directly on the App Store, and nothing is required from developers to support upgrades, downgrades, and crossgrades for iOS subscriptions in their apps.

For Android Apps

For Android apps, app developers can decide to support upgrade, downgrade or both in their apps by selecting their upgrade policy via Deepwall. You should use the setProductUpgradePolicy method to set the upgrade policy for the first time and you can use the updateProductUpgradePolicy method for updates on the policy.

Deepwall by default uses DISABLE_ALL_POLICIESunless a different policy is selected.

Once a policy has been set, that selection will remain valid until it is updated again

Set Upgrade Policy

You should use the setProductUpgradePolicy method to set the product upgrade policy for Google Play apps.

DeepWall.setProductUpgradePolicy(
  prorationType = ProrationType.IMMEDIATE_WITHOUT_PRORATION,
  upgradePolicy = PurchaseUpgradePolicy.ENABLE_ALL_POLICIES
)

Deepwall upgrade policy types for Google are:

Upgrade Policy

Description

ENABLE_ALL_POLICIES

All policies are open. Users can upgrade or downgrade their products

DISABLE_ALL_POLICIES

All policies are closed. Users can not upgrade or downgrade their products.

ENABLE_ONLY_UPGRADE

Users can only upgrade their products

ENABLE_ONLY_DOWNGRADE

Users can only downgrade their products

Google Proration Types are:

Proration Type

Description

DEFERRED

Replacement takes effect when the old plan expires, and the new price will be charged at the same time.

IMMEDIATE_AND_CHARGE_PRORATED_PRICE

Replacement takes effect immediately, and the billing cycle remains the same.

IMMEDIATE_WITHOUT_PRORATION

Replacement takes effect immediately, and the new price will be charged on next recurrence time.

IMMEDIATE_WITH_TIME_PRORATION

Replacement takes effect immediately, and the remaining time will be prorated and credited to the user.

Once a policy has been set, that selection will remain valid until it is updated again

Update Upgrade Policy

You can use the updateProductUpgradePolicy method to update the product upgrade policy within the app workflow before requesting paywalls.

DeepWall.updateProductUpgradePolicy(
    prorationType = ProrationType.IMMEDIATE_WITHOUT_PRORATION,
    upgradePolicy = PurchaseUpgradePolicy.ENABLE_ALL_POLICIES)

Important Note

You need to set/update upgrade the policy before requesting a paywall for the selected upgrade policy change to take place for the purchases from the opened paywall.

You can also check out the following guide for troubleshooting the most common errors while setting up the in-app purchases and Deepwall SDK :

PreviousMaking PurchasesNextNon-subscription Purchases

Last updated 4 years ago

Was this helpful?

For detailed information about Proration Types, you can see this document

https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.ProrationMode
Troubleshooting