Skip to main content
Question

Paywall still showing after purchasing

  • May 10, 2025
  • 1 reply
  • 30 views

Forum|alt.badge.img

Hi RevenueCat fam,

I’m testing my paywall with real device. My payment still shows up after my purchasing and even tho I use .presentPaywallIfNeeded( function which should automatically check if I’ve paid.
 

.presentPaywallIfNeeded(

requiredEntitlementIdentifier: "pro",

purchaseCompleted: { customerInfo in

print("Purchase completed: \(customerInfo.entitlements)")

},

restoreCompleted: { customerInfo in

// Paywall will be dismissed automatically if "pro" is now active.

print("Purchases restored: \(customerInfo.entitlements)")

}

)

 

Attached is what I saw after click purchase on paywall a 2nd time

And this is my LOG
 

DEBUG: ℹ️ There are no requests currently running, starting request GET /v1/subscribers/$RCAnonymousID%3A65c82d3b6f4442e9996c0c824846953a

DEBUG: ℹ️ API request started: GET '/v1/subscribers/$RCAnonymousID%3A65c82d3b6f4442e9996c0c824846953a'

DEBUG: ℹ️ API request completed: GET '/v1/subscribers/$RCAnonymousID%3A65c82d3b6f4442e9996c0c824846953a' (304)

DEBUG: 😻 CustomerInfo updated from network.

DEBUG: ℹ️ GetCustomerInfoOperation: Finished

DEBUG: ℹ️ Serial request done: GET /v1/subscribers/$RCAnonymousID%3A65c82d3b6f4442e9996c0c824846953a, 0 requests left in the queue

DEBUG: Will execute purchase logic provided by RevenueCat.

INFO: 💰 Purchasing Product 'no_cap_club_weekly' from package in Offering 'Weekly'

1 reply

guilherme
RevenueCat Staff
Forum|alt.badge.img+2
  • RevenueCat Staff
  • 40 replies
  • May 14, 2025

Hey ​@spicypunk ,

it seems your purchase is succeeding, but the paywall isn’t dismissing right away because the entitlement hasn’t updated yet on the device. This happens often in Apple’s sandbox environment, which is known to delay receipt and subscription status propagation.

The 304 you’re seeing in the logs means RevenueCat is reusing the last known CustomerInfo, and hasn’t detected a change yet from Apple’s servers. This isn’t an error, but it does mean the entitlement check in .presentPaywallIfNeeded can temporarily fail.

If you're using StoreKit testing in Xcode with a .storekit file, keep in mind that receipts might not be validated via Apple’s sandbox servers, so RevenueCat won’t be able to unlock the entitlement. We recommend using a real device with a sandbox Apple ID for full end-to-end validation.

Also: while some of your products may show as “Missing Metadata” or “Ready to Submit” in App Store Connect, that usually doesn’t block sandbox testing - but in production those products will need to be fully configured and approved.

A good next step is to add a manual refresh to make sure you're working with the latest data after purchase:

Purchases.shared.getCustomerInfo { customerInfo, _ in
    if customerInfo?.entitlements["pro"]?.isActive == true {
        dismissPaywall()
    }
}

Let me know if the above helps or if you have any other questions!

 

Best,
Gui


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings