in-app purchases, gem wallet and App Store compliance — Loopi
A gem wallet, a paywall inside the chat, four real store products, and the age gate and account deletion Apple requires. Proven on 2026-09-10 by a real sandbox purchase of premium and a gem pack, with receipts in the ledger.
What is it?
The point where the app could take money, and then did.
What it does
- A gem wallet and a paywall that lives inside the chat itself rather than beside it
- Four store products — premium and three gem packs — set up and connected
- Buying premium actually unlocks premium, and the app stops shipping with a placeholder payment key
- Sign-up asks for a birthday and confirms you are 18 or older
- You can delete your account from inside the app, which Apple requires of anything offering sign-in
- Guest identities are issued by the app, so nobody can invent one and claim another person's chats and gems
It is proven, not just wired up
On 2026-09-10 a real purchase went through a TestFlight build against Apple's sandbox: premium monthly and the 1200-gem pack, both landing with receipts in the credit ledger. Before that the products existed and the switch was on, which is not the same as knowing money arrives. A production record from 2026-09-01 shows why that distinction mattered: the store table held exactly one row and the gem economy flag was absent, so a real purchase would have paid Apple and delivered nothing, and the first person to find out would have been the founder on a test build.
How it works
Store readiness was treated as its own investigation rather than a checklist. Apple forbids fully explicit content at any age rating, so conversations were deliberately pushed to find how far they actually go, the result was written down, and the decision about what to declare was recorded with what was known at the time. The paywall moved inside the chat pipeline so an empty gem balance stops the turn cleanly instead of crashing it. The charging gates for messages and photos are separate switches and were deliberately left off, so turning the economy on charged nobody.
Built with
TypeScript, Expo, Fastify, Postgres, RevenueCat for purchases, Redis.