Skip to main content
Question

Google Play: 13 of 13 free-trial conversions failing with billing error since late August (Flutter)

  • September 21, 2026
  • 4 replies
  • 33 views

Forum|alt.badge.img

Hi all,

I'm hoping someone, ideally from the RevenueCat team, can help me work out where this is breaking. Every paid conversion on our Android app has failed for three weeks, and Google Play support hasn't been able to explain it.

Setup

  • Flutter app, purchases_flutter 10.0.2, default configuration (RevenueCat completes and acknowledges purchases), Google Play Billing via RevenueCat
  • Two base plans (monthly and annual), both with a 7-day free trial
  • Grace periods and account hold enabled; base plans active in all markets with regional pricing
  • Service account credentials valid and RTDN flowing (events arrive in RevenueCat as expected)

What's happening

Only one trial conversion has ever succeeded, on 28 August. All 13 since then have failed. Trial starts process normally at zero. Seven days later the renewal order appears in Play Console as Pending, then goes to Canceled with the total zeroed. None show as Declined.

In RevenueCat, a typical chain is: trial started → subscription extended (24h payment retry) → grace period entered with billing error → cancelled with billing error. Auto-renew is on throughout. In one case the order went from Pending to Canceled after three days, with no retries shown.

It spans the US, UK, Mexico, Colombia and Paraguay, both plans, and six price points. There's also one failure on iOS.

What I've ruled out or checked

  • Config: grace periods, account hold, base plans, pricing
  • Payouts from the Play account are working normally
  • Google Play support says failed payments now show as Pending then Canceled rather than Declined, but can't say why every charge fails

Context that may matter

Most trials come from Google Ads, and the audience skews young (Gen Z). I've read the threads here about trial-optimised campaigns bringing in users without valid payment methods, and I'm open to that being the answer. But 13 out of 13, including US and UK buyers, feels like more than traffic quality.

Questions

  1. Is there anything in the RevenueCat data for these subscriptions (for example the raw Play purchase state or payment state) that would show why the charge failed?
  2. We're on default SDK config, so RevenueCat should be acknowledging purchases. Is there any way trial starts could be acknowledged correctly but renewals still fail on our side?
  3. Has anyone seen 100% failure like this turn out to be an account-level issue on the Play side (payments profile, verification, tax) rather than buyers' cards?
  4. For anyone who fixed this by switching to a paid intro offer or changing their ad conversion goal: did the conversion rate recover?

Happy to share app user IDs privately with the RevenueCat team.

4 replies

Forum|alt.badge.img
  • Author
  • New Member
  • September 21, 2026

Quick update and a correction: the live build is actually on SDK 10.3.1 (per the customer record), not 10.0.2 as I wrote above.

Another failure today, UK, annual plan, Android. Same chain as the others: subscription extended (24h retry) on 20 Sep, then "entered billing error grace period" and "canceled due to billing error" at the same timestamp. We see this simultaneous grace-plus-cancel on every failure, even though grace is configured at 7 days. Does that pattern suggest Play is treating these as hard declines, and is there anything in the raw Play notification data that would show the decline reason?


Tarek
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • September 22, 2026

Hi ​@darren-4628ca ,

I'm Tarek from RevenueCat Developer Support, thanks for reaching out and for the detailed write-up, happy to help!

I took a look at your project data and at Google's own records for some of the failed subscriptions. I can understand three weeks of zero conversions is painful, let me go through your questions in order.

  1. Is there anything in the RevenueCat data for these subscriptions (for example the raw Play purchase state or payment state) that would show why the charge failed?

We store what Google returns for each purchase token. That is: the subscription state, the acknowledgement state, the auto-renew flag, the offer phase, and the id of the declined renewal order.

For your failed subscriptions, Google reports SUBSCRIPTION_STATE_IN_GRACE_PERIOD or SUBSCRIPTION_STATE_ON_HOLD, with a renewalDeclined block that points to the pending order (the one that ends in ..0). Google does not give a decline reason to anyone. The Developer API, the real-time notifications and Play Console all stop at "the payment for the renewal was declined". That is why our events show the category BILLING_ERROR and never an issuer code.

  1. We're on default SDK config, so RevenueCat should be acknowledging purchases. Is there any way trial starts could be acknowledged correctly but renewals still fail on our side?

I don't think so. Acknowledgement applies to the initial purchase only, and Google does not require it for renewals. If a trial was not acknowledged, Google would refund and revoke it at day 3. It would not decline a charge at day 7. I checked Google's record for your failed trials and each one is ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED with auto-renew on. Your one conversion on 28 August went through the same path, so the pipeline works.

 

I can also explain the timeline you see in the customer history. At the trial end, Google keeps the renewal order in Pending and extends the expiry by about one day. We show that as "subscription extended". In every one of your cases, the billing issue timestamp is the original trial end plus 24 hours.

When Google gives up on the charge, the order goes to Canceled and the subscription enters the grace period. One Google notification then produces two RevenueCat events in the same second: "entered billing error grace period" and "canceled due to billing error". That is our normal rendering, not a hard decline.

The user then keeps access until the original trial end plus 7 days on the monthly plan, and plus 14 days on the annual plan. That matches your Play configuration. Google keeps retrying the payment in that window, and several of your subscriptions are still inside it today.

  1. Has anyone seen 100% failure like this turn out to be an account-level issue on the Play side (payments profile, verification, tax) rather than buyers' cards?

We have seen the same pattern in other tickets, and none of them ended with a confirmed problem on the developer account. In your case, one real charge succeeded on the same merchant account on 28 August, and your payouts work. Both points argue against an account-wide block. I cannot exclude it from our side, because Google shares no reason with us. Two checks are worth a few minutes. You can look at the Payments profile and Account details pages in Play Console for any warning. You can also ask Google Play Developer Support about one specific canceled order id. They are the only party that can see the payment detail.

  1. For anyone who fixed this by switching to a paid intro offer or changing their ad conversion goal: did the conversion rate recover?

I cannot share other customers' details, but I can share what your data says and what we recommend.

About a third of your trial starts are cancelled within minutes of the start, and most of the rest fail at the first charge. That is the signature of a trial-optimized ad audience. Google does not check whether a payment method can pay when a trial starts. The first real test happens at conversion. Billing errors are 32.2% of all Google Play cancellations in our State of Subscription Apps 2026 report. A young audience in some markets pushes that share higher.

Two changes can help here:

First, you can optimize your Google Ads campaigns on the paid conversion, not on the trial start. The paid conversion is the first RENEWAL event with is_trial_conversion true. Our Firebase integration sends it as the purchase event, and you can import that conversion into Google Ads from GA4.

Second, a paid intro offer instead of a free trial makes Google charge at purchase, even if it's a very low fee. A payment method that cannot pay then never enters your funnel at all. Grace period and account hold are already enabled, which is the right setup to recover the users who fix their payment method.

If you want to go through specific users, feel free to open a ticket from your dashboard. I will share the per-subscription detail there rather than on the public thread.

Let me know if that makes sense and if there's anything else I can help with!

Have an excellent day.

Best regards,


Forum|alt.badge.img
  • Author
  • New Member
  • September 22, 2026

Tarek, thank you — this is the clearest explanation anyone has given me, and it answers every question I raised.

Three things in particular helped: confirming the acknowledgement state on the failed trials so I can stop suspecting our integration; explaining that the simultaneous "grace period" and "cancelled" events are one Google notification rendered as two; and the detail that about a third of our trial starts are cancelled within minutes. That last point reframes this as an acquisition problem rather than a billing one.

We're acting on both recommendations: switching the Google Ads conversion to the paid conversion via the Firebase integration and GA4, and testing a low-price paid intro offer in place of the free trial. I'll also open a ticket from the dashboard for the per-subscription detail, and take the specific cancelled order id to Play support.

Much appreciated.


Tarek
RevenueCat Staff
Forum|alt.badge.img+6
  • RevenueCat Staff
  • September 22, 2026

Hey Darren,

You're most welcome, happy to help!

Feel free to reach out through a ticket and mention this thread for added context, we'll pick it up from there!

Best,