SDK

In-app purchases and subscriptions for Capacitor and Ionic apps

To add subscriptions to a Capacitor or Ionic app on RevenueDot, keep @revenuecat/purchases-capacitor, await Purchases.setProxyURL({ url: "https://api.revenuedot.app" }) before Purchases.configure, and pass entitlementVerificationMode DISABLED. The plugin sets no default of its own, so the native informational mode would otherwise log every response as failed.

Free up to $10,000 a month in tracked revenue. Works with the RevenueCat SDK you already ship.

Object argument

setProxyURL takes { url }, not a plain string.

Pass DISABLED

Capacitor has no default, so the native informational mode applies unless you pass DISABLED.

Alias-only fork

Install the planned fork through an npm alias so the native pod and package names stay the same.

iOS and Android

One TypeScript call path covers both native platforms.

Steps

How to add subscriptions to a Capacitor app with RevenueDot

  1. 01

    Create a free Cloud project

    Start free on Cloud and add an App Store app and a Google Play app, or a Test Store app for a first run.

  2. 02

    Connect the stores and create the catalog

    Add credentials (App Store, Google Play), then products, a pro entitlement and a current offering.

  3. 03

    Install the RevenueCat plugin

    Install @revenuecat/purchases-capacitor and run npx cap sync, as you would for any RevenueCat project.

  4. 04

    Await the proxy URL, then configure with verification disabled

    Call await Purchases.setProxyURL({ url }), then Purchases.configure with entitlementVerificationMode: ENTITLEMENT_VERIFICATION_MODE.DISABLED.

  5. 05

    Buy and check the entitlement

    Call Purchases.purchasePackage({ aPackage }) and read customerInfo.entitlements.active["pro"].

TypeScript

The Capacitor proxy URL change

Point the plugin at RevenueDotTypeScript
import { Capacitor } from "@capacitor/core";
import { ENTITLEMENT_VERIFICATION_MODE, Purchases } from "@revenuecat/purchases-capacitor";

await Purchases.setProxyURL({ url: "https://api.revenuedot.app" });
await Purchases.configure({
  apiKey: Capacitor.getPlatform() === "ios" ? "appl_..." : "goog_...",
  entitlementVerificationMode: ENTITLEMENT_VERIFICATION_MODE.DISABLED,
});

TypeScript

Check an entitlement and make a purchase

getCustomerInfo resolves to { customerInfo }, and purchasePackage takes { aPackage }.

RevenueCat's API, unchangedTypeScript
const { customerInfo } = await Purchases.getCustomerInfo();
const isPro = customerInfo.entitlements.active["pro"] !== undefined;

const offerings = await Purchases.getOfferings();
const aPackage = offerings.current?.availablePackages[0];
if (aPackage) {
  const result = await Purchases.purchasePackage({ aPackage });
  const nowPro = result.customerInfo.entitlements.active["pro"] !== undefined;
}

Fork

The RevenueDot fork package for Capacitor

The fork lives at github.com/revenuedot/purchases-capacitor. Install it only through the alias below: Capacitor derives native pod and Swift package names from the npm name, and the alias keeps them unchanged. It is not published yet (checked October 2026), so use proxy mode today.

Planned fork installpackage.json
// package.json
"@revenuecat/purchases-capacitor": "npm:@revenuedot/purchases-capacitor@<version>"

Notes

Capacitor details worth knowing

  • Migrating from RevenueCat? Call await Purchases.syncPurchases() once on the first launch of the update.
  • Test Store keys work in debug builds only. Ship with appl_ and goog_ keys.
  • Never use ENFORCED: every request would fail, because RevenueDot cannot sign with RevenueCat's key.
  • Status: there is no Capacitor example app yet. The React Native example shows the same calls in JavaScript.

FAQ

Capacitor and Ionic: questions people ask

How do I add in-app purchases to a Capacitor or Ionic app?

Install @revenuecat/purchases-capacitor, configure it with your store key, fetch offerings and call purchasePackage. A backend checks the receipts. With RevenueDot you await Purchases.setProxyURL({ url }) before configure and pass verification DISABLED.

Why does the Capacitor plugin log signature failures with RevenueDot?

The plugin passes no verification default, so the native informational mode checks signatures against RevenueCat's key. Pass entitlementVerificationMode DISABLED to stop it. Access is granted either way in informational mode.

Does setProxyURL take a string in Capacitor?

No. It takes an object, so you write Purchases.setProxyURL({ url: "https://api.revenuedot.app" }), and you await it before configure.

Can I install the RevenueDot fork of the Capacitor plugin directly?

Only through the npm alias. A direct install of @revenuedot/purchases-capacitor would change the generated native names and is not supported. The fork is not published yet.

Get started

Run subscriptions without the revenue share.

Start free on RevenueDot Cloud, free up to $10,000 a month in tracked revenue, or move an existing RevenueCat app with one line of code.

Already have an account? Sign in · Prefer your own servers? Self-host free