In-app purchases for Hotwire Native apps
Bridge components handle StoreKit and Play Billing.
You write your paywall in ERB and manage subscriptions in Rails.
You already have subscriptions in Rails.
Now you need them in your apps.
StoreKit, Play Billing, webhooks from two platforms. PurchaseKit handles the complexity so your subscription logic stays in Rails.
For Rails + Hotwire Native
Apple and Google webhooks are a mess. We normalize them.
One consistent payload to your Rails app.
Handle it however you want.
-
Skip Apple's and Google's docs
We handle the ever-changing formats.
-
Four webhook events, not 15+
created,updated,canceled,expired. That's it. -
Drop-in native components
One import. Zero StoreKit code.
-
Works with Pay, or without
Bring your own subscription management.
Real-time purchase demo
Watch a purchase flow from app to dashboard instantly
No native code required
StoreKit and Play Billing handled for you
Subscriptions stay in Rails
Your logic, your models, your way
Update paywalls instantly
No app release required
Your paywall is ERB
No Swift. No Kotlin. Just easy to customize Rails views.
Controller
@annual = PurchaseKit::Product.find("prod_AH8U2N")
@monthly = PurchaseKit::Product.find("prod_9PEK28")
View
<%= paywall customer: user do |paywall| %>
<%= paywall.plan_option product: @annual do %>
<span>Annual</span>
<%= paywall.price %>
<% end %>
<%= paywall.plan_option product: @monthly do %>
<span>Monthly</span>
<%= paywall.price %>
<% end %>
<%= paywall.submit "Subscribe" %>
<% end %>
Simple, predictable pricing
No revenue cut. No per-transaction fees. Start free, upgrade when you're ready.
Frequently asked questions
Do I need to write Swift or Kotlin?
No. The bridge components handle StoreKit and Play Billing. You add the package and register the component. Then write your paywall in ERB.
What platforms are supported?
Both iOS and Android are fully supported.
How do I manage subscriptions?
However you want. PurchaseKit sends normalized webhooks to your Rails app. Use the Pay gem, roll your own, or integrate with your existing system.
What about existing web subscribers?
They keep working. PurchaseKit adds mobile purchases alongside your existing web billing. Users who subscribe via web use whatever you already have.
Can I test without a paid subscription?
Yes. Sandbox webhooks are free. You can build and test your entire integration before subscribing. Payment is only required for production webhooks.
What happens if a webhook fails?
PurchaseKit retries failed webhooks automatically—5 attempts over 25 hours. You'll get an email if delivery still fails. Every webhook is logged in your dashboard so you can retry manually or debug issues.
Can I migrate from RevenueCat or Adapty?
Yes. We'll personally help you migrate your existing setup. Get in touch to discuss your situation.
Why PurchaseKit over RevenueCat?
PurchaseKit is built for Hotwire Native apps backed by Rails.
No revenue cut
Flat pricing. RevenueCat takes up to 2.5%.
Paywalls in ERB
Your templates, your styling. No proprietary paywall SDK.
Own your subscription data
Subscriptions live in your database, not theirs.
Rails-native
A gem, not a REST API. Works with Pay or your own models.
From Joe Masilotti, author of Hotwire Native for Rails Developers