Pricing Flat rate. No percentage fees. Ever.

Free until your app earns $1,500 a month.

One SDK. Verified subscriptions, behavioural analytics, and runtime errors — on one customer timeline. Crossdeck is free forever up to $1,500 monthly app revenue, with unlimited apps, unlimited analytics, and the full revenue stack. Past that, three flat-rate tiers carry you to $100k. No per-app charges. No revenue cuts. The price you see is the price you pay.

No credit card to start Unlimited apps on every tier Cancel anytime

Free

Indie launches and prototypes

$0 forever

Up to $1,500 / month

Start free
  • Unlimited apps
  • iOS, Android & Web SDKs
  • Verified subscriptions, all rails
  • Real-time entitlements
  • Unlimited analytics events
  • Basic error capture (1k / month)
  • 90-day data retention
  • Community support

Indie

First revenue milestone

$49 / month

$1,500 – $5,000 / month

Start free

Everything in Free, plus

  • 50,000 errors / month
  • Plain-English error summaries
  • Breadcrumbs & source maps
  • 12-month data retention
  • 1-minute analytics refresh
  • Email support
Most popular

Pro

Full-time indies and scaling teams

$149 / month

$5,000 – $25,000 / month

Start free

Everything in Indie, plus

  • 500,000 errors / month
  • Audit logs
  • Priority email support

Scale

Category-leading subscription apps

$349 / month

$25,000 – $100,000 / month

Start free

Everything in Pro, plus

  • Dedicated support
  • SAML SSO
  • SQL access (ClickHouse)
  • Multiple workspaces

Above $100k a month? Talk to us — we'll keep the flat-rate model and price for your scale.

Why flat-rate matters

At $50,000 MRR, the difference is $326 every month.

RevenueCat charges 1% of revenue above $2,500 MRR. A developer at $50,000 MRR pays them $475 in fees on top of any base subscription. On Crossdeck, that same developer pays $149 — flat. As you grow, we don't grow with you.

See the full comparison →

RevenueCat

$475 / month

1% revenue cut above $2.5k MRR + base plan

Crossdeck Pro

$149 / month

Flat. No percentage. Same price at $5k MRR or $25k MRR.

On every tier

Foundation is unlimited. Free isn't crippled.

Every tier ships the same SDKs, the same identity model, and the same three-pillar engine. Subscriptions, analytics, and errors — including alerts — are real and complete on Free. Paid tiers add depth (plain-English error summaries, breadcrumbs, source maps), longer retention, and higher volume caps.

Verified subscriptions

Apple StoreKit 2, Google Play, and Stripe receipts signed and reconciled — never approximated.

Real-time entitlements

isEntitled checks resolve from a hot edge cache. Sub-50ms. No paywall flicker.

Cross-platform identity

Anonymous, developer, and Crossdeck customer IDs unify across iOS, Android, and web.

Privacy-first analytics

Sessions, page views, and custom events. No fingerprinting, no IP logging on event docs.

Real-time MRR

New, renewal, expansion, and churn MRR — broken out and refreshed on cadence by tier.

Funnels and cohorts

Conversion funnels and behaviour cohorts on every tier. The analytics product is the analytics product, regardless of plan.

Real-time error capture

Uncaught exceptions, unhandled promise rejections, and network failures — captured the moment they happen.

Slack and email alerts

New errors notify your team within seconds. Errors without alerts is a useless product, so alerts ship on every tier.

Unlimited apps

One developer account covers every iOS, Android, and web app you ship — no per-app fee, ever.

What changes by tier

The short list of differences.

Tiers move on volume and operational support — not feature gates. If you can use Crossdeck on Free, you can use the whole product.

  Free Indie Pro Scale
Monthly price $0 $49 $149 $349
Monthly app revenue < $1,500 $1,500 – $5k $5k – $25k $25k – $100k
Apps Unlimited Unlimited Unlimited Unlimited
Data retention 90 days 12 months 12 months 12 months
Error capture (basic) 1k / month 50k / month 500k / month Unlimited
Plain-English error summaries
Breadcrumbs & source maps
Real-time entitlements
Real-time error capture
Analytics dashboard refresh 5 min 1 min 1 min 30s
Slack & email alerts
Funnels & cohorts
SAML SSO
Direct SQL access
Support Community Email Priority email Dedicated
How fresh is your data?

Three pillars. Three different freshness contracts.

Crossdeck has three faces: revenue, behaviour, and errors. Each one has a different speed requirement. We don't apply one rule across all three — we honour what each one needs to actually be useful.

Revenue & entitlements — real-time, every tier

isEntitled() resolves sub-50ms across Free / Indie / Pro / Scale. New subscriptions, renewals, and refunds propagate instantly. Your paywall cannot wait. Non-negotiable on every plan.

Errors — real-time, every tier

Errors are useless if delayed. Captured → ingested → visible on the dashboard within ~5 seconds. Slack and email alerts fire within ~10 seconds, on every tier including Free. A 5-minute lag means the customer is already gone.

Analytics — refreshed on cadence by tier

Aggregations (KPI cards, MRR charts, funnels) refresh every 5 minutes on Free, every minute on Indie / Pro, and every 30 seconds on Scale. Events still ingest in real-time — only the dashboard rollup is batched. This is genuine cost optimisation, not a downgrade.

Frequently asked

The short answers to the big questions.

Still curious? Talk to a human — usually back within the hour.

How is monthly app revenue calculated?

Your MAR is computed in USD across every project you own, in production environment only, with three components added together:

1. Active paid subscriptions, normalised to a 30-day equivalent. Each subscription is normalised by its actual billing period — we divide its price by the period length and multiply by 30 days. A $120/year sub contributes $9.86. A $4.99/week sub contributes $21.39. A $9.99/month sub contributes $9.99. Subscriptions still count while Stripe is retrying a failed card or while Apple/Google are in their grace window — the customer is in a paid relationship and the retry usually succeeds.

2. One-off purchases paid in the trailing 30 days. A $49 lifetime unlock that landed yesterday adds $49 to your MAR for the next 30 days, then drops out. RevenueCat's MTR works the same way — without it, a developer with a one-off-purchase business model would never cross a tier on subscriptions alone.

3. Refunds and chargebacks subtract in the period the refund landed, even if the original purchase was outside the 30-day window. A $50 charge from 60 days ago that you refund today reduces this period's MAR by $50.

Trials don't count until they convert to a real charge. Sandbox transactions never count. Currencies other than USD are normalised via a daily FX rate snapshot.

Do trials count toward MAR?

No. A trial is a promise of money, not money. Your MAR clock on a customer starts the moment their trial converts to a real paid charge — same way your bank statement only shows the line item when money has actually moved. If a customer trials your $9.99/mo plan for 14 days, that customer contributes $0 to your MAR for those 14 days. As soon as the first paid charge lands, $9.99 starts contributing.

How do I upgrade when my app's revenue grows?

Crossdeck monitors your trailing-30-day MAR continuously and surfaces an upgrade prompt the moment you cross the next tier line. The actual tier change requires seven consecutive daily snapshots above the threshold before it fires — a deliberate buffer against launch-day spikes, one-off pack promotions, and timezone artefacts at month boundaries. If your MAR drops back below the line even once during those seven days, the counter resets. Conservative on your behalf.

If you cross and a payment method is on file, the upgrade fires automatically and we email you the receipt. If no card is on file when you qualify, the dashboard flips to read-only and we surface a card-required prompt — your subscriptions, entitlements, errors, and analytics ingestion all keep running. We never break your app over billing. The moment you add a card, the upgrade processes immediately without re-waiting the seven days.

What happens if my revenue drops back under a threshold?

Nothing automatic. If your trailing-30-day MAR drops back under your current tier's band, your tier stays where it is for the rest of the billing cycle. Crossdeck doesn't auto-downgrade. The qualifying counter that was tracking your next-tier ascent resets to zero, but your active tier is unchanged. You can manually downgrade from the billing page at any time and the change takes effect at the next cycle boundary.

Do you take a percentage of my revenue?

Never. Crossdeck is a flat per-month subscription. Your Apple, Google, and Stripe payouts go straight to your accounts — Crossdeck never sits in the money path. We're infrastructure, not a payment processor.

What does "unlimited apps" actually mean?

One Crossdeck account covers every iOS, Android, and web app you ship. No per-app fee. No per-bundle-ID surcharge. If you're on the Free tier and ship five apps, all five run on the Free plan against your shared monthly revenue pool.

Is the Free plan really free forever?

Yes. The Free plan is permanent, not a trial. It's designed to cover an indie launch end-to-end up to $1,500 in monthly app revenue. You'll only see a paid tier when your app's revenue tells us you've earned it.

What if my app is earning over $100k a month?

Talk to us. We continue the flat-rate model for larger accounts — no percentage fees regardless of revenue scale. Pricing scales with operational support (region of choice, SLAs, named CSM, custom retention) rather than with your top-line.

How does Crossdeck compare to RevenueCat, TelemetryDeck, or Sentry?

Crossdeck unifies what those three tools split. RevenueCat is solid revenue infrastructure but charges a percentage of your revenue and has no behavioural or error depth. TelemetryDeck is excellent privacy-first telemetry but doesn't verify subscriptions or capture errors. Sentry is great at error capture but has no idea who your paying customer is. Crossdeck does all three, on one identity graph, on one customer timeline — so a question like "did a paying customer hit a JavaScript error during checkout?" is one query, not a join across three vendors.

What kinds of errors does Crossdeck capture?

Uncaught JavaScript exceptions, unhandled promise rejections, network failures (4xx/5xx from fetch and XHR), resource load failures, and anything you manually capture with Crossdeck.captureError(). On paid tiers we add breadcrumbs (the last 100 events the user did before the error), source map symbolication for de-minified stacks, and plain-English summaries that tell you which paying customer was affected and how badly it hurts. We're honest about what no browser SDK can capture — errors before init, cross-origin scripts, and ad-blocked transports — so you go in eyes open.

What are plain-English error summaries?

Sentry shows you TypeError: Cannot read property 'price' of undefined at calcTotal (checkout.js:47:12). We show you "A paying customer ($29/mo, ACTIVE 14 months) hit the checkout page, the price field didn't render, they bounced. 4th time today. Critical — these users are mid-payment when it breaks." Same data. Different audience. The summary is generated by an LLM that reads the error, the breadcrumbs, and the customer's subscription state. The technical detail is one toggle away when you need it. Available on every paid tier (Indie+).

How fresh is the data on each tier?

Three different contracts, by pillar. Revenue and entitlements are real-time on every tier (sub-50ms isEntitled resolution) — your paywall cannot wait. Errors are real-time on every tier (visible on the dashboard within 5 seconds) — errors are useless if delayed. Analytics aggregations (KPI cards, funnels, MRR charts) refresh every 5 minutes on Free, every minute on Indie/Pro, every 30 seconds on Scale. Events themselves always ingest in real-time — only the dashboard rollup is batched. This is genuine cost optimisation, not a degraded product.

What happens if I exceed an error cap on Free?

Email warnings at 80%, 100%, and 110% of your monthly cap. At 150% of cap, error ingestion pauses until the next cycle. No surprise bills, ever. Subscriptions, entitlement checks, and analytics ingestion continue uninterrupted — your customers' apps are never affected. We will not replicate Sentry's overage-bill surprise model.

Can I switch between tiers?

Yes — upgrades take effect immediately, pro-rated. Downgrades take effect at the end of your current cycle. No data migration, no fees, no sales calls.

Verified revenue. Real analytics. Real-time errors. One SDK.

Five-minute install. Free forever up to $1,500 in monthly app revenue. No credit card required. We make money when your app does.