RORK LABJP
SDK58 — The Expo SDK 58 beta is open. It ships the React Native 0.88 release candidate, and the beta period is stated as three to four weeks11/01 — For anyone who requested an extension, Google Play's target API deadline lands on November 1. Forty-four days outEASENV — A long-open report: secrets handed to a local build arrive as the literal variable name rather than its value, and the damage surfaces much laterNEW — The replacement the table recommended had already shut down. A record of reconciling all 74 rows of the deprecation listUISCENE — iOS 27 requires the new scene lifecycle. SDK 57 makes it something you opt into; it only becomes the default in 58CREDIT — What "AI errors don't cost credits" actually covers becomes clear once you record a day of asking for the same fix more than onceSDK58 — The Expo SDK 58 beta is open. It ships the React Native 0.88 release candidate, and the beta period is stated as three to four weeks11/01 — For anyone who requested an extension, Google Play's target API deadline lands on November 1. Forty-four days outEASENV — A long-open report: secrets handed to a local build arrive as the literal variable name rather than its value, and the damage surfaces much laterNEW — The replacement the table recommended had already shut down. A record of reconciling all 74 rows of the deprecation listUISCENE — iOS 27 requires the new scene lifecycle. SDK 57 makes it something you opt into; it only becomes the default in 58CREDIT — What "AI errors don't cost credits" actually covers becomes clear once you record a day of asking for the same fix more than once
Articles/AI Models
AI Models/2026-04-11Intermediate

Monetizing a Rork AI App: Pricing Backwards from Your Cost of Goods

How to design pricing for a Rork-built AI app by starting from per-user API cost rather than revenue. Covers the margin math behind freemium, subscription and credit models, a RevenueCat paywall in Expo, graceful quota handling, and the five metrics worth checking weekly.

monetization47subscription28RevenueCat30App Store89Rork568indie development41

Premium Article

There was a month where subscription revenue grew and the money left over did not.

RevenueCat showed MRR climbing. But once the Gemini API invoice and the App Store commission were subtracted, the increase had evaporated. I had been chasing revenue while quietly growing cost of goods at the same rate.

That is the thing that makes AI apps different from the ad-supported apps I built before. With a conventional app, one more user costs essentially nothing. With an AI app, every additional user carries a marginal cost — and your most enthusiastic users are the ones losing you money.

So pricing design has to start from the wrong end of the spreadsheet. Not "what can I charge?" but "what does one active user cost me per month?" What follows is how I work backwards from that number for Rork-built AI apps: the model comparison, the RevenueCat implementation, quota handling, and the metrics I actually check.

Measure per-user AI cost before you price anything

Before setting a price, find out what one active user consumes in API calls per month.

This is not hard to instrument. Log the model name, input and output token counts, and the user ID immediately before each AI call. In a Rork-generated app, the fastest route is a single wrapper function that every AI call passes through.

// lib/aiClient.ts — every AI call goes through here
type UsageLog = {
  userId: string;
  model: string;
  inputTokens: number;
  outputTokens: number;
  costUsd: number;
};
 
// Price per 1M tokens — replace with your actual model rates
const PRICE_PER_M = {
  'flash': { input: 0.075, output: 0.30 },
  'pro':   { input: 1.25,  output: 5.00 },
} as const;
 
export async function callAi(
  userId: string,
  model: keyof typeof PRICE_PER_M,
  prompt: string,
) {
  const res = await generate(model, prompt); // your actual SDK call
  const p = PRICE_PER_M[model];
  const costUsd =
    (res.inputTokens / 1_000_000) * p.input +
    (res.outputTokens / 1_000_000) * p.output;
 
  await recordUsage({
    userId,
    model,
    inputTokens: res.inputTokens,
    outputTokens: res.outputTokens,
    costUsd,
  } satisfies UsageLog);
 
  return res;
}

Why store this per call rather than per month? Because two later decisions — how you handle users who hit their quota, and how you detect churn risk — both read from this same table. A monthly invoice total tells you nothing about who spent it. Per-user data tends to reveal that the top 5% of users account for most of your cost.

After a week of logs, calculate the median and the 90th percentile of monthly cost among paying users. Those two numbers anchor your pricing. Price against the median and you go underwater in any month that attracts heavy users. Price against the 90th percentile and you are safe but expensive. In practice I land between the two, closer to the 90th.

Compare the three models by who absorbs cost volatility

There is no shortage of writing about freemium versus subscription versus usage-based pricing. For AI apps specifically, the clarifying question turned out to be simpler: whose problem is it when usage spikes?

Model Who absorbs cost volatility Best fit Typical gross margin
Freemium You — the entire free tier is out of pocket Cheap per-call work: resizing, short summaries 50–70%
Subscription You, unless you cap usage Predictable frequency; daily-habit apps 60–80%
Credits The user — they pay for what they consume Expensive per-call work: video, batch processing 75–85%

Those margin figures are net of both store commission (15% for most indie developers on the Small Business Program) and AI cost of goods.

I settled on a subscription base with credits layered on top for the expensive operations. Subscription alone let heavy users eat the margin; credits alone suppressed first-time conversion, because "I don't know what this will cost me" is a real psychological barrier. Selling the reassurance of a flat monthly rate, then metering only the operations that spike, covers both weaknesses.

Actual price points for AI apps are not unusual:

Tier Monthly (US) What it includes
Lite $4.99–$9.99 Higher limits on core features
Standard $9.99–$19.99 Full features, higher-quality model
Pro $29.99–$49.99 Business use, export, API access

Annual plans are usually priced at 50–60% of twelve monthly payments. Annual subscribers churn less and pay you sooner. One caveat specific to AI apps: you collect annual revenue up front but incur the cost over twelve months, so a strong annual month can flatter your cash position more than your margins deserve.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
The formula for real LTV after AI cost of goods, and the CAC ceiling it implies
RevenueCat + Expo code that degrades quality at quota instead of blocking the user
Five weekly metrics — including gross margin and ARPU-to-COGS ratio — with concrete thresholds
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

AI Models2026-04-28
Monetize Rork AI Agents as SaaS — Three-Layer Revenue Model (Subscriptions + API Metering + Affiliate)
Field notes on running a Rork-built AI agent as a SaaS: how to reconcile two billing sources (Stripe and RevenueCat) into one entitlement, make webhooks idempotent, and automate recovery before a cancellation lands.
Business2026-04-14
Achieving $7,000/Month with Rork Max: A Complete Blueprint for Indie App Revenue
A systematic guide to building a $7,000/month indie app business with Rork Max — covering market selection, revenue model design, RevenueCat implementation, user acquisition, and KPI-driven optimization.
AI Models2026-06-27
Monetizing a Rork-Built App — Choosing Between Ads, Subscriptions, and Freemium
How to monetize an app built with Rork — from choosing between ads, subscriptions, freemium, and one-time purchase to the implementation details. Phased AdMob formats, treating ad-free as a single source of truth, and price anchoring, written from the indie-developer trenches.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links