Which of your apps actually makes money?

DevMargin is a portfolio cockpit for solo founders running several products. It pulls revenue from every billing rail you use, subtracts each product’s real running costs, and shows the one number the dashboards you already have leave out: net margin. It keeps the monthly history too, so you can see what a product earned this year and since it started — not only at this instant.

Start free →
Pulls fromStripeLemon SqueezyPolarPaddleGumroadFreemiusDodoCreemShopifyShopify PartnersAdaptyRevenueCatApp Store ConnectGoogle Play+ your own app

See how that compares →

Net /mo
+$190
MRR
$412
Costs /mo
$222
Earned 2026
$3,180
This year
$3,180
Total
$21,940
vs 2025
+38%
earned coststhe gap is your margin
UbytqoMRR $214
1,208 users
+$186 /mo netearned $1,940 total
earned $620 in 2026
$214
FakturqaMRR $150
 
−$28 /mo netearned $12,400 total
earned $1,780 in 2026
$150
StopaMRR $48
3,140 users
+$32 /mo netearned $2,610 total
earned $780 in 2026
$48
Your portfolio · demo data

Revenue dashboards lie by omission.

Every tool shows MRR going up. None of them subtract the hosting, database and AI bills that eat it, and none of them keep a history you can check. DevMargin does three things they don’t:

01 · Net margin after costs

Enter what you actually pay — hosting, databases, AI credits — and each product shows revenue minus its share. A bill several products rely on, like an Apple licence, is entered once and split across them; a yearly bill keeps its yearly figure. A product that bleeds shows −red rather than a rising vanity curve, and anything unknown stays an honest , never a convenient zero.

02 · A history you can audit

Every pull writes a dated snapshot with the FX rates it used, and each rail’s own monthly reports become settled actuals — so “earned this year” is measured, not extrapolated. For what a product earned before DevMargin, state its opening total per channel: it counts towards the lifetime figure and never towards a yearly one, because a lump sum has no months inside it.

03 · Built for your agent

Your portfolio is exposed over MCP — read-only — so Claude answers from your editor instead of you opening a dashboard to look something up.

claude mcp add --transport http devmargin devmargin.app/api/mcp
› “Which of my apps is losing money after costs?”

Costs get a chart of their own.

Bills are one or two orders of magnitude smaller than revenue, so on a shared axis they vanish. They keep their own zero-anchored axis instead, with earnings behind them as a shape and a floor the bars never cross — because a crossing point would read as “costs passed earnings” when it means nothing. The real comparison is the percentage, and it turns red above 100%.

Costs /mo
$222
Of earnings
40%
Shared bills
$33
earnings · 0-anchored · dashed = month still open
Jancosts $92earned $38024% of earningsFebcosts $92earned $45520% of earningsMarcosts $92earned $42022% of earningsAprcosts $124earned $57022% of earningsMaycosts $124earned $68018% of earningsJuncosts $124earned $64019% of earningsJulcosts $178earned $82022% of earningsAugcosts $222earned $430 · so farshare once the month closes
costs · own axis earnings · shape only, no scale month cost more than it earned
The Costs view · demo data

Publish the numbers you pick. Only those.

Build in public without exporting a screenshot every month. Your portfolio gets a page at devmargin.app/open/you, and you choose twice what appears on it: which projects, and which figures — MRR, earned revenue, costs, net margin, users, the trend. Everything starts off, a new project is private until you say otherwise, and nothing is ever published as a side effect of anything else.

What makes it worth reading is the line most public dashboards cannot print: each figure says which rails it came from and the date of the snapshot it was read out of. Anyone can type a number into a design tool. Yours can show where it came from.

Safe to connect.

Read-only by design

Restricted, read-only API keys — or a read-only OAuth grant where a rail offers one. DevMargin can never move money, issue refunds or modify your accounts, because the credential itself does not allow it.

Encrypted at rest

Credentials live in Supabase Vault, encrypted, decrypted only server-side at pull time. Never sent to the browser, never logged.

EU hosting

Data stays in the EU (Frankfurt). Your figures are yours: every number traces to a dated snapshot with its FX rates.

Compared with what you might already use.

Six tools overlap with this one; three are here — the closest rival, an established analytics suite, and a native app that keeps everything on your own machine. Their figures were read from their own sites on 13 August 2026. If one has gone stale that is an error rather than a tactic, and we would like to hear about it.

 DevMarginTrackMRRChartMogulTotals
PriceFree, or $9/mo · $90/yr$9/mo, or $29 onceFree under $10k MRR, then $59/mo$19.99 once
Billing rails14, plus your own app31 free; 5 from $99/mo5
Net margin after costsYes, per project
App store revenueApp Store, Play, RevenueCat, AdaptyVia RevenueCat
Agent access (MCP)Read-only MCP server
Push APIUsers, costs, earned months
AppsiOS, iPadOS, macOS — in TestFlightiOS and Android, shippedmacOS, shipped
Works without an accountYes — nothing leaves your Mac

The last two rows are the ones where something else wins, and they are the reason to believe the six above: a comparison written by the seller is worth exactly as much as its least convenient row. All six, in full — including App Tracker, Baremetrics and SoleOS →

A portfolio your agent reads — and your app writes to.

Every tool in this category aggregates revenue for a person to look at. This one has two doors, pointing opposite ways. An agent reads the portfolio over MCP. Your own product writes to it over the push API — reporting the figures no billing rail will ever know, because they are not billing events.

metrics
What a product is earning right now, and how many people use it. User counts are the clearest case: no rail reports them, so without this they stay unknown. Latest state — each push replaces the last.
earned
What a given month actually earned, and whether that is gross or proceeds — stated by you, never assumed, because the same number means two different things. This is what gives a product an Earned history rather than only a rate.
cost
A running bill, upserted by its label, so re-pushing the same one daily updates a row instead of stacking duplicates. Costs land in net margin immediately — no pull needed.
curl -X POST https://devmargin.app/api/push \
  -H "Authorization: Bearer $DEVMARGIN_PUSH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"channel":"<channel-id>","metrics":{"users":1234}}'

The push token (dmp_…) is write-only: it reports figures and cannot read your portfolio back, so one that leaks out of a deploy log exfiltrates nothing. Sixty pushes an hour is the ceiling, and once a day is plenty — the snapshot that reads them runs daily.

Pricing

One paid plan, and the only thing it changes is how far back you can look. Every rail, every project, every cost, the daily pull, the MCP server and the push API are in the free plan — it is history and trends you pay for.

Free
$0forever

No card required.

  • Last 30 days of history
  • All 14 billing rails, unlimited connected accounts
  • Unlimited projects, channels and costs
  • Net margin after costs, in your currency
  • Daily pull with dated snapshots
  • MCP server, push API and the iOS app
Pro
$9per month

Or $90 a year — two months free. Cancel anytime.

  • Full history and trends
  • Everything in Free
  • Weekly digest, milestones and alerts — by email, Slack or Discord
  • Refresh on demand, not just the daily pull
  • CSV and JSON export, unlimited API tokens
Start free →

Founding price: $49 a year for the first 100 accounts — 100 left — and it stays that price for as long as the subscription runs. It is the yearly plan with a discount Stripe caps at 100 redemptions, so when they are gone the checkout stops offering it rather than this page quietly going out of date. Start free, then upgrade under Account.

Nothing is deleted on the free plan. Your snapshots keep being recorded every day whatever you pay, so upgrading shows your whole past immediately — the limit is on reading it, not on keeping it.

Prices in USD, excluding any VAT that applies to you. Stripe is the merchant of record, so it handles payment, invoicing and EU VAT — card details never reach DevMargin. Upgrading and cancelling both happen under Account; cancelling takes effect immediately and drops you back to the free plan. Weighing this against something else? See how it compares — including what the others do better.

Stop guessing which app pays rent.

Connect a rail with a read-only key and see your real portfolio in minutes.

Start free →