"User paid but doesn't have premium"
The single most common RC support flow: a customer contacts you saying they paid but the app doesn’t unlock the paid features. Here’s how to debug it without leaving the terminal.

1. Find the customer
Section titled “1. Find the customer”If you have the store transaction id from their receipt or App Store / Play / Stripe email:
revcat subscriptions search 1000000123456789Returns one or more subscription rows. Note the customer column - that’s the app_user_id to use next.
If the customer told you their app user id directly, skip to step 2.
2. Pull the full debug card
Section titled “2. Pull the full debug card”revcat subscribers info app_user_123Sample output:
subscriber╭───────────────────────────────╮│ id app_user_123 ││ project proj_xxx ││ first seen 2024-08-12 ││ last seen today (3h ago) │╰───────────────────────────────╯
active entitlements (0) (none)
subscriptions (1)┌──────────────┬────────┬─────────────────────┬────────────┐│ product │ status │ current period ends │ store │├──────────────┼────────┼─────────────────────┼────────────┤│ app.monthly │ active │ 2026-05-25 (in 29d) │ app_store │└──────────────┴────────┴─────────────────────┴────────────┘The mismatch is right there: there’s an active App Store subscription, but no active entitlement. The product is selling but it isn’t wired to grant premium.
3. Confirm the catalog wiring
Section titled “3. Confirm the catalog wiring”revcat entitlements listrevcat entitlements products premiumIf the second command returns an empty list (or doesn’t include app.monthly), that’s the bug: the product isn’t attached to the entitlement.
4. Fix the wiring
Section titled “4. Fix the wiring”revcat products list # find the product idrevcat entitlements attach premium prod_xxx # attachThe customer’s next purchase / renewal will grant the entitlement. To unblock them right now, grant it manually as a one-off:
revcat subscribers grant app_user_123 premium -d 30dThat gives them 30 days while the catalog fix propagates. Tag the audit reason if you want it recorded:
revcat subscribers attributes app_user_123 --set support_grant=ticket_22415. Verify
Section titled “5. Verify”revcat subscribers info app_user_123active entitlements should now show premium with an expiry. Reply to the ticket.
What this saved you
Section titled “What this saved you”Without revcat, the same flow needs you to:
- Open the dashboard, search for the user.
- Click into their profile.
- Click “subscriptions” tab.
- Open another tab to entitlements > inspect the product attachments.
- Click “Grant promotional entitlement” modal, fill in dates, submit.
- Click back to the user to verify.
That’s six page loads vs three commands.