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.

PurchaseKit demo showing native StoreKit purchase flow

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.

Joe Masilotti

From Joe Masilotti, author of Hotwire Native for Rails Developers