"IAP" The In-App Purchase Journey – Part 1: Intro

Fadi FannounFadi Fannoun
3 min read

Ouch. In-App Purchases (IAP) — also known as “Instant Agony Protocol” — are a true pain in the ass.

Once upon a time, we had a beautiful, well-designed, clearly documented mobile app. Everything was in harmony — code, design, logic — a dev’s little utopia.

Then came the twist:

“Users should be able to buy items.”

Fair enough. I’ve built dozens of apps with third-party payment gateways — Stripe, PayPal, you name it. We scoped the vision, locked the timeline, and moved forward confidently.

But then the client dropped the bomb:

They had to use the official App Store / Play Store IAP system.

I paused, blinked, and thought,
“No big deal. How bad could it be? It’s just another payment gateway… right?”

Naive me, 72 hours before descending into IAP hell.


💭 What I Thought vs. What Actually Happened

What I expected:
A weekend project with clean documentation and straightforward integration.

What I got:
A month-long odyssey through bureaucratic nightmares, cryptic error messages, and the kind of debugging sessions that make you reconsider your career — and sanity.


🚀 The Journey Ahead

This series will walk you through the complete IAP implementation — the good, the bad, and the “why-is-this-even-a-thing” ugly. This series covers the complete IAP gauntlet:


Part 2: Store Setup – The Bureaucratic Maze

Setting up products in both App Store Connect and Google Play Console sounds simple — until you realize each platform speaks a different language.
We’ll dive into the endless forms, approval purgatory, and the mysterious art of getting test products to actually show up in sandbox mode.
Spoiler alert: “Pending review” will become your least favorite phrase.


Part 3: Ionic Capacitor Implementation – When Plugins Attack

Integrating IAP into Ionic + Capacitor should be plug-and-play, right? Wrong.
We’ll explore the fragmented plugin ecosystem, outdated docs, and the joy of discovering that what works on iOS breaks Android — and vice versa.
Plus: the not-so-universal "purchase flow."


Part 4: The Sync Nightmare – When Reality Hits

Here’s where things get spicy.
Users buy products, but your backend doesn’t know.
Receipts validate but aren’t delivered.
Network failures create zombie transactions.
We’ll tackle:

  • Receipt validation

  • Webhook reliability

  • The dark art of syncing chaotic platforms


Part 5: Admin Features – The Control Room

Nothing says “pro” like giving your client full control without touching App Store dashboards.
We’ll build an admin interface to:

  • Track purchases

  • Handle refunds

  • Manage IAP products

A lifesaver for you, and your client’s support team.


🧯 The Reality Check

If you're about to embark on your own IAP journey, buckle up.
This isn't your average API integration. It’s a multi-platform, multi-store, multi-headache saga that will test your patience, your debugging skills, and possibly your relationship with mobile development.

But once you survive it — and you will — you’ll have conquered one of mobile’s most notorious dragons.

And hey, you’ll have some killer war stories for your next dev meetup.


Coming Soon

🚧 Part 2: Store Setup – The Bureaucratic Maze

💡 As time allows:
I’m building MikaIAP — a full open-source In-App Purchase system using Ionic, NestJS, and MikaForm. Stay tuned for the GitHub release when it’s ready,

0
Subscribe to my newsletter

Read articles from Fadi Fannoun directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Fadi Fannoun
Fadi Fannoun

Full-stack software engineer with 15+ years of hands-on experience building scalable web and hybrid applications across startups, enterprises, and public institutions. Specialized in Angular, NestJS, and Ionic, with deep expertise in building modular admin systems, CMS integrations, and dynamic form engines. Proven track record in leading cross-functional teams, mentoring developers, and delivering production-ready solutions with a product mindset. Currently focused on launching MikaForm - a dynamic admin panel system with full modularity, multilingual support, and API-first integration.