I'm using react-native-iap for subscriptions in my React Native app. Below is the function I use to request subscriptions on Android:
const requestSubscriptionAndroid = async (
activePlan,
currentUser,
requestSubscription,
existingSubscription,
) => {
let subscriptionParams = {
sku: activePlan.productId,
obfuscatedAccountIdAndroid: String(currentUser?.userId),
obfuscatedProfileIdAndroid: String(currentUser?.userId),
};
if (activePlan.subscriptionOfferDetails?.[0]?.offerToken) {
subscriptionParams.subscriptionOffers = [
{
sku: activePlan.productId,
offerToken: activePlan.subscriptionOfferDetails[0].offerToken,
},
];
}
if (existingSubscription) {
subscriptionParams = {
...subscriptionParams,
sku: activePlan.productId,
};
}
await requestSubscription({
...subscriptionParams,
purchaseTokenAndroid: existingSubscription?.purchaseToken,
replacementModeAndroid: ReplacementModesAndroid.CHARGE_FULL_PRICE,
});
};
The issue is: on some Android devices, it shows "You are not eligible for a free trial" — even though I’m testing with both a new Google account and a new device (or cleared device data). However, on some other devices with the same setup, the free trial shows up as expected.
In the Play Console, my offer eligibility criteria is:
- New customer acquisition
- Entitlement: Never had any subscription
Has anyone else experienced this inconsistency across devices? Any insights on what might be causing this behavior?