Marlo — Live iOS Lifestyle App | Creator Platform with Non-Cash Payments & Face IDMarlo — Live iOS Lifestyle App | Creator Platform with Non-Cash Payments & Face ID
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
Cancelling a purchase and failing a purchase reach your Flutter code the same way, as a PlatformException. That is how a paywall ends up showing a red error to someone who simply changed their mind on the store sheet.
PurchasesErrorHelper.getErrorCode is what distinguishes them, and two outcomes are not enough. A single call to Purchases.purchase can end five ways: cancelled, pending, completed, failed and unresolved. Pending is the one that catches people out. A parent still has to approve the purchase, or a slow payment method has to settle, and RevenueCat grants no entitlement until the store confirms it.
Which means the paywall screen should not be what decides access. A pending purchase can complete after the paywall closes or after the app has been killed, and RevenueCat does not push that change to the device. Keep a CustomerInfo listener in an object that lives as long as the app, and have every paid feature read the entitlement from it rather than from whatever the purchase call returned.
https://www.duskolicanin.com/blog/flutter-subscription-pending-cancelled-purchase
This is such a real pain point! So many paywalls break exactly here - treating a user cancellation as a crash. Thanks for pointing out PurchasesErrorHelper.getErrorCode to distinguish it. Handling cancelled vs pending correctly is crucial for UX, no one wants a red error for changing their mind. Saving this!
Less confusion, more control. 💳
From welcoming onboarding to spending insights, every screen is designed to make everyday money management feel effortless.
Simple UI. Smarter experience.
(2/5)
A clean white layout with a soft violet glow, a mix of bold sans and italic serif headlines, and a floating phone mockup for an elegant and trusted first impression.
Floating analytics cards, a service grid for banking, cards, insurance, and payments, plus bento style feature cards for multi currency wallets, subscriptions, and personal insights make every money task feel simple. Light cards, balanced spacing, and subtle purple accents keep the whole page clean and easy to explore.
Clean approach! White layout + soft violet glow + bold sans + italic serif combo is so elegant for fintech trust! Floating phone mockup + analytics cards make it feel premium and modern!