All pages

App-store revenue

If your subscriptions are sold through the App Store, Google Play, Amazon, Roku, Paddle or RevenueCat's own billing, RevenueCat is where your revenue lives. Connect it read-only and MarginFuse puts that revenue on the other side of your AI cost, per subscriber.

Connecting it

  1. 01

    Create a read-only V2 key

    In RevenueCat: Project settings → API keys → New. Choose version V2 and grant read access to customers, subscriptions and products. Nothing else: MarginFuse only ever reads, so a key that can grant entitlements or issue refunds is a key it should never hold.

  2. 02

    Paste it into MarginFuse

    Settings → Integrations → RevenueCat. The key is validated on the spot and stored encrypted; only its last four characters are ever shown again. If the key reads more than one RevenueCat project, you choose which one bills these customers.

  3. 03

    Add the webhook (optional, but do it)

    MarginFuse gives you a URL and a secret. In RevenueCat: Integrations → Webhooks, paste the URL, put the secret in the Authorization header, and select the production environment. Without it everything still works, just at the pace of the 15-minute sync instead of within seconds of a purchase.

Your customer ids already match

RevenueCat identifies a subscriber by App User ID. That is the same id your app passes to MarginFuse as customerId, so the two sides join with nothing to configure and no mapping queue to work through.

An id RevenueCat has never seen is not a problem to resolve: it is a customer who has not paid. They stay a customer here, with their AI cost, and gain a subscription the moment they buy one. See Customers and plans.

What MarginFuse reads

  • Products become plans, with their cadence read from the store duration, so plan profitability groups the way your catalogue does.
  • Subscriptions become billing periods: a customer's current cycle is the real one the store is charging for, which is what per-billing-period policies need.
  • Transactions become revenue, one row per charge, spanning the period it paid for. An annual subscription is one row across the year, never a spike in the month it renewed.
  • Refunds become their own negative row against the period they reverse. The purchase stays on the record; a refund that is later reversed drops out of the totals without being erased.

Trials arrive as trials, at the price they were charged, which for a free trial is zero. That is a real zero and it shows a real loss for a customer burning tokens on one, which is usually the first thing worth knowing.

Stripe as well as the stores

Plenty of products bill the web through Stripe and the apps through the stores. Connect both: revenue from each counts toward the same customer, and MarginFuse does not ask you to pick.

Disconnecting

Historical revenue stays visible. New purchases stop being recorded, the webhook is refused from that moment rather than half-processed, and margin after the last sync is marked incomplete. Cost-only policies keep working; revenue-dependent ones degrade to alert and allow rather than deciding on stale data.