For AI SaaS founders
Some customerscost you morethan they pay.
MarginWard joins your LLM costs with Stripe revenue. Gross margin per customer, before your API invoice lands.
Read-only Stripe key · No credit card · ~15 minutes
Margin per customer · this month
sample data
client-artemis
Pro · $49 · cost $51.29
−4.7%client-borealis
Pro · $49 · cost $27.80
43.3%client-cassini
Starter · $29 · cost $8.12
72.0%
client-artemis consumed 105% of their subscription in AI costs
Stripe knows your revenue.
Your provider bill knows your costs.
Nobody joins the two. Until now.
AI cost vs. subscription
Try the math
What does one customer really earn you?
Static example. The product computes this from your real Stripe and usage data.
gross margin
63.3%Healthy. This customer funds your growth.
AI ate the SaaS margin.
average gross margin of AI products, versus 80%+ in classic SaaS.
ICONIQ, 2026
of AI-core companies do not track their LLM API costs at all.
Mavvrik, 2025
1 flat plan
plus unlimited power users equals customers who lose you money, invisibly.
Fifteen minutes, three moves.
Connect Stripe, read-only
A restricted key you create yourself. MarginWard can read customers and subscriptions. It can never write, charge or modify.
rk_live_5fK2b8••••••••
Plug in your costs
Langfuse with zero code changes, OpenRouter, or our ingestion API with one POST per LLM call. Known models priced automatically.
POST /api/ingest
{ user_id, model, tokens }
Read your margin
Per customer, per plan, month by month. An email or Slack alert when anyone crosses the threshold you set.
Numbers that never lie.
Unknown model? Flagged, not guessed
A call on a model we cannot price is marked unpriced and shown in the interface. No invented cost, ever.
Orphan costs stay visible
A user we cannot match to a Stripe customer is not dropped. It sits in a mapping queue with its full cost.
Prices checked at the source
Our price table is maintained against official provider pages. You can override it with your negotiated rates.
Your keys never leave
Stripe and Langfuse keys are encrypted at rest with AES-256-GCM, never logged, revocable on your side at any time.
Flat pricing, never a percentage of your spend
Free
$0
See your margin this month
- ✓25 tracked customers
- ✓30 days of history
- ✓1 cost source
- ✓Email alerts
Starter
$29/mo
For SaaS that are growing
- ✓250 tracked customers
- ✓12 months of history
- ✓Email + Slack alerts
- ✓Founder support
Growth
$79/mo
For multi-product teams
- ✓2,500 tracked customers
- ✓Unlimited history
- ✓Multiple cost sources
- ✓Price overrides
No commitment. Cancel in two clicks from settings.
Works with your stack
Stripe for revenue. Anthropic, OpenAI, Google and Mistral priced from official pages. Your usage data via Langfuse, OpenRouter or our ingestion API.
I run an AI SaaS. One month I realised my biggest customers were also my least profitable, and Stripe never told me. So I built the tool I wanted. If it saves you one bad pricing call, it paid for itself.
Among the first?
MarginWard just opened. Early users get founder support and a direct say in what ships next.
Frequently asked questions
What access do you get to my Stripe?+
Zero write access, ever. You create a restricted read-only key (Customers, Subscriptions, Products). MarginWard cannot charge, modify or create anything. The key is encrypted at rest and revocable from Stripe at any time.
I do not use Langfuse. Can I still use this?+
Yes. The ingestion API takes your LLM calls as simple POSTs (user_id, model, tokens), one call or batches of 500. OpenRouter connects in one click for account-level cost by model. And with Langfuse it is even simpler: zero code changes. Per-customer margin needs a per-user source (Langfuse or the ingestion API).
Which models are priced?+
Anthropic, OpenAI, Google and Mistral, with a price table checked against official provider pages. An unknown model is never guessed: it is flagged unpriced and visible in the UI. You can set your own prices for negotiated or fine-tuned models.
How do you link an LLM cost to a Stripe customer?+
Automatically when your user_id is the Stripe customer ID or an unambiguous email. Everything else lands in a mapping queue showing each orphan user_id with its cost. You map it once, retroactively.
I sell in euros but pay my APIs in dollars+
Provider costs are in USD, converted daily to your Stripe account currency using ECB rates. Your margin shows in your currency.
Can I cancel anytime?+
Yes, in two clicks from settings, no email required, no retention tricks. The free plan stays free forever, no credit card.