PricingOpen the demo

● Kepra for SaaS & subscriptions

Judge channels on payback, not first payment.

Stripe MRR meets ad spend – CAC payback per channel, runway that includes marketing, and fixes that execute inside Meta and Google the moment you approve them.

Sample data · no signup · OAuth setup in minutes

MRR grows. Cash shrinks. Nobody can explain why.

Subscription revenue arrives monthly; ad spend leaves daily. Kepra puts MRR, Stripe balance and marketing spend on the same screen, so growth and burn stop living in separate tools.

CAC payback is a spreadsheet nobody updates.

We compute payback per channel and campaign continuously from Stripe and your ad accounts – the day a channel drifts past your threshold, it shows up as a leak, not at the quarterly review.

Churn quietly eats your ROAS.

A trial-signup campaign with fast churn looks great in every ads manager. Cohorts follow the customers each channel brought in, so acquisition is judged on revenue retained – not accounts created.

A subscription business, on sample data

● Money Today · subscriptionsDemo data

Flowdesk ApS – this month

MRR

€486,400

392 accounts · ARPA €1,240

Net new MRR

+€30,600

new + expansion − contraction − churn

Runway

14 months

€2,940,000 cash · €214,000/mo net burn

Net revenue retention

97.7%

expansion minus churn, excluding new

New+€41,200
Expansion+€18,700
Contraction−€6,400
Churn−€22,900
▲ CAC payback by channelDemo data

How long until each channel pays you back

Acquisition cost ÷ monthly gross profit per account. Anything past 12 months is financed growth, not profitable growth.

Google Ads · brandCAC €4490.5 mo
Google Ads · genericCAC €2,1662.5 mo
Meta · retargetingCAC €1,0951.4 mo
Meta · prospectingCAC €9,33313.2 mo

Meta · prospecting takes 13.2 months to return its own acquisition cost. On reported ROAS it looks like the second-best channel in the account.

Note the opposite case too: brand search pays back in under a month, which is almost always a sign you are buying customers who were already typing your name – not a channel to scale.

From verdict to executed fix

The channel drifts. The fix ships. You stayed in one tab.

Knowing a channel’s payback crossed twelve months is analysis. Pausing the campaign that caused it – without opening Ads Manager, without a CSV, without typing a budget wrong – is the part that saves the money. Kepra closes that gap through MCP.

Wired into the ad platforms over MCP

Meta and Google are exposed to the agent as typed, permissioned tools. When a channel's payback drifts past your threshold, the proposed fix executes against the platform's API in about a second – after you approve it.

No context-switching tax

The verdict, the evidence and the fix live on one screen. No Ads Manager safari, no exported CSV to reconcile, no budget typo at 23:40 on a Thursday.

Approval is contractual, not configurable

Nothing reaches your ad accounts without a human approving that specific change. Our terms commit to it – there is no autopilot switch to leave on by mistake.

An audit trail your CFO will like

Who proposed it, the numbers it cited, who approved it, what the platform answered – and one-click revert. Written down, permanently.

◆ The loop, on Google Ads
Google Ads logo

Google Ads → Kepra

K
  1. Reading

    spend + matched orders

  2. Deciding

    profit after COGS and LTV

  3. Your call

    nothing moves until you say so

  4. Pushing

    executed over MCP, logged

Verdict: The keyword "løbesko" has spent €8,400 in 30 days for €0 profit – the clicks convert on brand searches you already win.

Pause keywordawaiting your approval

Fair questions.

▸We already have a BI dashboard. Why this?

A dashboard reports; it does not decide or act. Kepra returns verdicts – this channel's payback drifted past 12 months, pause this campaign – and executes the fix inside the ad platform once you approve. The gap between knowing and doing is where most SaaS marketing budgets leak.

▸How do you compute CAC payback?

Acquisition cost per channel divided by monthly gross profit per account – ARPA times your subscription gross margin. Continuously, from Stripe and your ad accounts, not from a spreadsheet that was true in March.

▸Does it handle expansion and contraction?

Yes. Net new MRR is broken into new, expansion, contraction and churn, and retention is measured as net revenue retention – expansion minus churn against opening MRR, excluding new business.

▸What can it not tell me?

Whether a customer would have signed up anyway – that is the incrementality question, and it needs a holdout test, not attribution. And runway is an estimate from connected cash sources until bank feeds ship. We label both rather than rounding them off.

Run it next to your current stack.

The demo is open – no signup. When the beta opens, early subscribers lock their price for life.

One email when the beta opens. No newsletter, no sharing your address.

Selling physical products too? Shopify lives in the same profit view →