How to Build a Real-Time AI Agent Revenue Dashboard from Stripe Data

A prompt that pulls your balances, subscriptions, and failed payments from Stripe, works out MRR, churn, and what actually landed this month — then sends one short number set to you instead of a dashboard you have to remember to open.

01The Problem

Why nobody trusts the revenue number

Not because the spreadsheet is wrong, but because it is three weeks old and nobody can say which definition of revenue it is using.

Every definition of MRR is defensible

Does a paused subscription count? A $19 monthly plan scaled to $200? A refund from eight months ago? A trial that converted? Any two finance teams will answer those differently and both be right, which means the number in the board deck and the number in the tool are not the same number — and the disagreement only surfaces when someone tries to reconcile them.

The spreadsheet is always behind the truth

Revenue does not wait for the reporting cycle. Chargebacks clear on their own schedule, annual plans invoice in lumps that make a single month look broken, and payouts land days after the sale they represent. A number that is accurate as of last Tuesday is the number most decisions get made on, which is a strange thing to build a plan around.

Nobody looks at a dashboard unprompted

This is the one that does the real damage. However good the reporting is, it gets opened when something looks wrong, which is precisely the moment it should already have told you. Revenue trouble compounds quietly — a failed payment, a downgrade, a cancellation you did not notice — and a system you have to remember to check will always be a system that finds it late.

02The How-To

The Stripe revenue AI agent prompt, step by step

Copy it once, paste it into Zaira, and it reads the same source of truth every morning: balances and payout timing, subscription movement, failed payments and downgrades, then a single reconciled summary in the definitions you actually use.

Revenue reporting
Access to the @Stripe MCP server. Act as my revenue reporting agent. My goal is one short, accurate number set delivered to me on a schedule, in my definitions — so I find out about a bad month in its first week rather than its last.

My definitions — state these explicitly

- What counts as MRR for us: [e.g., active subscriptions only, normalised to monthly, excluding paused and trialing] - What we exclude from revenue: [e.g., taxes, refunds, one-off setup fees, internal test accounts] - Currency and whether we report gross or net of fees: [e.g., USD, net of Stripe fees] - Churn definition: [e.g., logo churn, not revenue churn] - Who receives this and where: [e.g., me and the CFO in Slack each morning]

Step 0: Check tools

List the Stripe tools you have and map them to the steps (balance summary, list metrics, explain metric, metric drilldown, reports, account info). Only report what the tools return — never estimate, extrapolate, or fill a gap with a plausible number. If something is unavailable, say so plainly rather than approximating.

Step 1: Read the current state

Pull the live balance and the payout state, and state clearly what is available now, what is still in flight, and when it lands. Then pull subscription movement for the last 30 days: new, upgraded, downgraded, paused, resumed, cancelled. Use the metric tools to confirm anything ambiguous rather than inferring it from a report.

Step 2: Compute against my definitions

Calculate current MRR, net new MRR, and month-over-month change using exactly the definitions I gave you — and show the calculation for the headline number so I can check it. Report gross and net separately. If my definitions are ambiguous on a specific line item, flag it and tell me which reading you used instead of choosing silently.

Step 3: Hunt the leaks

List every failed payment, past-due invoice, upcoming card expiry, downgrade, and cancellation from the last 30 days, with the amount at risk in each case and the customer on it. Rank by amount. This is usually the most valuable part of the report and the part a dashboard never surfaces on its own.

Step 4: Sanity-check before sending

Check every number against at least one other Stripe figure — if MRR rose 40%, verify it against net new subscriptions rather than a one-off annual plan. If any single month moves more than 15%, say so in the report and explain whether it looks like a real change or a billing artefact like an annual renewal or a refund.

Step 5: Deliver

Send a report under 250 words: the five headline numbers, anything that moved more than 10% with the likely cause, the leaks from Step 3 with amounts at risk, and one line on what I should do about it today. If the numbers are flat and unremarkable, say that in one line — a short quiet report is a good sign and should read like one.
03Why People're Using

What this does once it's running

Three stages, one goal. The numbers arrive on a schedule in the channel you already read, so a bad month is visible in the first week rather than the last.

A bad month shows up in week one

Because the report arrives on a schedule rather than waiting to be opened, revenue trouble gets surfaced while there is still time to act on it. A failed payment you learn about in week three is already a cancellation by week six.

One definition, agreed and applied

Putting your rules in writing — paused plans excluded, refunds stripped, one-off fees ignored — is what ends the recurring argument about which number is right. The calculation is shown for the headline figure, so it can be checked rather than trusted.

Leaks ranked by what they are worth

Failed payments, expiring cards, and downgrades collected into one list, sorted by amount at risk, is what turns a revenue report into a to-do. It is a short list of customers worth calling, rather than a chart of the last month.

04FAQ

Frequently asked questions

The practical questions people ask before trusting an agent with the numbers that matter.

Because it answers questions you have to think to ask, and the revenue problems that cost real money are the ones nobody thinks to ask about. A dashboard is excellent at showing you MRR and will not tell you that six cards expire this month or that a specific customer's downgrade was a cancellation in slow motion. The value here is the definitions, the leak list, and the fact that it arrives without being opened.

Exactly as accurate as your definitions — which is the point, and also the caveat. Stripe's raw data is the source of truth, but MRR is a definition layered on top, and two definitions can differ by a lot on the same data. The prompt shows the calculation for the headline figure so you can check the reading, and Step 2 flags any line item where your rules were ambiguous instead of choosing quietly.

That is Step 4, and it is the step worth not skipping. Before sending, every figure is cross-checked against a second Stripe figure, and anything moving more than 15% gets called out with the likely cause — often an annual renewal landing, a large refund, or a batch of trials converting together. Most alarming-looking months in a subscription business turn out to be billing artefacts, and the report tells you which is which before you react to it.

Not as written, and the prompt is scoped to read-only reporting — it pulls balances, metrics, and subscription movement and writes nothing back. If you later want it to act on the leak list, granting that permission is a deliberate step rather than something to slide into a reporting prompt, because a tool with refund access and a tool reading a balance are different risk levels entirely.

Somewhere you read without deciding to. Slack or email both work, and both beat a dashboard for the specific reason that revenue trouble has to reach you unprompted — a report in a tool you have to open is a report you open when something already looks wrong, which is the failure mode this replaces. If more than one person needs it, say so in the context section rather than copying them into the prompt.

Zaira reads Stripe through Stripe's own official MCP server — the permissioned connection offered to approved AI partners, not a scraper. There is no shadow account and no spoofed client; it operates strictly inside the access you authorized, and you can revoke it from your Stripe settings at any time. Because this reports rather than writes, it does not touch customer data beyond the aggregate figures it was given.