Accepting payments without installing RuStore
Users can now pay for purchases and subscriptions in your app even if RuStore is not installed on their devices. For subscriptions they’ll need to sign in with VK ID, and for one-time in-app purchases it’s enough to enter an e-mail to receive the receipt.
Benefits
You can grow revenue and reach a wider audience because:
- users can complete purchases even if they haven’t installed RuStore yet;
- you can keep accepting payments while distributing the app across multiple stores.
Purchases without sign-in for Pay SDK (version 9.0.1)
- Paying without RuStore is available starting with Pay SDK 9.0.1.
- Checkout works without VK ID and without a mandatory e-mail. Users may optionally enter an e-mail to receive a receipt.
- Payment methods aren’t saved between payments. Available methods: new card, SBP (Fast Payment System), and SberPay.
- You can request the purchase list (
getPurchases
) without authorization. The response contains payments made on the current device using Pay SDK 9.0.1. Keep this in mind when migrating from Billingclient SDK. - During checkout you can pass an internal user ID or e-mail to simplify refunds. Such a payment is easy to find in RuStore Console using the provided identifier.
- A user who isn’t authorized in RuStore is automatically routed to the out-of-RuStore payment flow.
- Authorization isn’t required for other SDK calls either. If you want to accept payments only via RuStore, first check whether RuStore is installed (
isRuStoreInstalled
fromRuStoreUtils
) and whether the user is authorized (getUserAuthorizationStatus
). If needed, open RuStore’s authorization screen withRuStoreUtils.openRuStoreAuthorization(context: Context)
.
Purchases without authorization for Billingclient SDK
- Paying without VK ID is available only for consumable and non-consumable in-app products.
- Subscriptions cannot be purchased without authorization.
- The buyer must enter an e-mail to receive the receipt.
- Payment methods aren’t saved, so the user re-enters payment details for every purchase. To save and reuse payment methods the buyer needs to sign in with VK ID.
- Your app should not call the purchase list, because it’s unavailable for an unauthorized user. See Before you begin to remove those calls in your code.
- A refund to an unauthorized buyer can be made only using the receipt sent to the e-mail provided at checkout. See Refund for an unauthorized user.
Purchases with authorization
Applies to Billingclient SDK only. Buying subscriptions via Pay SDK is currently unavailable.
- VK ID authorization is required for subscriptions. The buyer may also sign in when purchasing in-app products.
- The user must sign in with VK ID when the SDK requests the purchase list (
getPurchases
). To reduce the number of authorization prompts, see Before you begin.
Before you begin
We recommend the following changes before migrating to Payments SDK 6.1.0+:
-
Reduce authorization prompts (Billingclient SDK only).
Your app may call the SDK for the purchase list—for example, to show a game balance, subscription tier, or check if the PRO version was bought.
Such calls will trigger frequent VK ID prompts, which is inconvenient.
Replace
getPurchases
calls with your app’s internal logic. Store purchase lists locally or on your server and keep them in sync via RuStore API.You can also encourage users to keep progress and purchases in an external account (e.g., Google Play).
Once you remove those calls, the user will only be prompted to sign in at checkout.
-
Set up analytics.
If you distribute the app via multiple channels and want to split payment flows by source, create separate build variants using build flavors. This lets you track analytics per distribution channel.
When authorization is requested
Applies to Billingclient SDK only.
The table shows when and how often the user is asked to authorize.
Condition | Authorization prompt | Notes |
---|---|---|
RuStore is not installed on the device | The prompt appears:
| Starting from SDK 7.0.0 a product can be purchased without mandatory VK ID (an e-mail is enough for the receipt). To check if RuStore is installed, use |
RuStore is installed, but the user is not authorized | The prompt appears when calling:
| Since SDK 8.0.0 For SDK versions below 8.0.0 you must authorize the user in RuStore.
After checking RuStore presence, call |
RuStore is installed and the user is authorized | Authorization is checked seamlessly for the user. |