Skip to content

In-app payments vs. payment processors vs. rolling your own: what I learned building PetSafe

I spent months on this decision: StoreKit for PetSafe's subscription model, Stripe vs. Adyen debates on our Amazon team, and eventually building our own payment stack. Here's what matters when you're choosing how to…

The three paths
StoreKit/Google Play Billing: Apple and Google own the rails. You pay 15-30%, they handle every detail.
Stripe/Adyen: Payment processors. You pay 2.9% + $0.30 (roughly), you get more control.
Roll your own: You pay interchange + processor fees (1.5-2%), you control everything, you also maintain the whole stack.

When StoreKit makes sense
If you're doing iOS subscriptions or consumables, StoreKit is the only option per App Store guidelines, not a choice. But even when you have a choice (reader apps, some B2B scenarios), here's what you get:
Pros:

- Subscription management comes off your plate. Upgrades, downgrades, grace periods, billing retry: all built into the platform.
- Users trust the blue payment sheet. No need to build a card form UI.
- Family Sharing works out of the box.
- TestFlight gives you straightforward sandbox testing.

Cons:

- 30% cut is brutal (15% for small business program, but that caps at $1M revenue).
- Receipt validation is an arcane mess. Server-to-server notifications help, but you're still dealing with base64-encoded blobs.
- No direct customer email. You can't email users about failed payments.
- Refunds go through Apple. You have zero control.

For PetSafe, the 30% hurt, but the alternative was building web-based subscriptions and driving users out of the app. Conversion would've fallen off a cliff. Sometimes the tax is worth the trade.

When Stripe/Adyen work better
If you're on web or Android (with alternative billing), processors give you control without building infrastructure.
Stripe wins on:

- Integration speed. Checkout, Billing, and Payment Links get you live in days.
- Documentation. Their docs are a legitimate strength.
- Ecosystem. Extensions, plugins, and integrations exist for every use case.
- Startup-friendly pricing. 2.9% + $0.30 is standard, but negotiable at scale.

Adyen wins on:

Global payment methods. Ideal, Klarna, Boleto: they're native, not bolted-on afterthoughts.
Enterprise pricing. At scale, you'll pay less than Stripe (1.5-2% range).
Platform features. If you're running a marketplace, they bring battle-tested split payment logic.

Both handle:

- PCI compliance (you never touch card data).
- Fraud detection (machine learning models that required no training on your part).
- Failed payment recovery (dunning management that does its job).

The trade-off is you're paying for convenience. Stripe's 2.9% is significantly better than Apple's 30%, but it's still a margin hit. For most startups, this is the right path. You're buying time and reliability.

Why you shouldn't roll your own (probably)
I've seen the "just integrate with a payment gateway" pitch. Use Braintree's SDK, talk directly to card networks, save on fees. Here's what that means:

You're responsible for:

- PCI DSS compliance (annual audits, quarterly scans, documentation).
- Tokenization and encryption (do this wrong once and you're out of business).
- 3D Secure implementation (required in Europe, painful in every market).
- Fraud detection (or you'll bleed money to chargebacks).
- Failed payment retry logic (subscriptions lapse without this safety net).
- Reconciliation (matching payments to orders at scale is harder than it looks on paper).

You save:

~1% in processing fees at volume (Stripe's 2.9% vs. interchange at ~1.8% + gateway fees).

The math only works if you're processing serious volume. Shopify, Netflix, Uber: they have payment teams. You probably don't have that headcount. And even they use processors for some markets.
The exception: if you're in a regulated or high-risk industry (crypto, gaming, nutraceuticals), you might not have a choice. Processors will reject you or charge punitive rates. Then you're building payment infrastructure by necessity, not by choice.
What I'd choose today
For a new startup:
-Mobile app with subscriptions? StoreKit. Eat the 30%, optimize conversion.
-Web or cross-platform SaaS? Stripe. Ship fast, iterate on pricing.
Global product with localized payment methods? Adyen. Conversion rates in APAC and Europe will justify the integration effort.
High volume B2C (>$10M ARR)? Talk to Adyen or Braintree, negotiate rates.
-Venture-scale with payment complexity (marketplace, escrow, etc.)? Still Stripe or Adyen. Build features, not infrastructure.

The only time I'd build custom payment infrastructure is if I was in a restricted industry or processing massive volume where 1% margins are real money.
Payment rails are boring infrastructure. Pick the boring option that lets you ship features that matter to your customers.

---

Related reading: For a deep dive into platform architecture interview questions (gateway vs processor vs acquirer), see Payments product manager interview questions and answers: the complete guide.

Browse all guides