Skip to content

RecipesStripe

Stripe revenue

Free

MRR, new customers, failed payments, and revenue by product on one board. Your agent holds a Stripe restricted key. Botopticon is not affiliated with Stripe.

Access

Stripe restricted key, read-only

Required. Env STRIPE_API_KEY. Mode either.

  • Subscriptions: Read
  • Charges: Read
  • Invoices: Read
  • Customers: Read
  • Products: Read
  • Prices: Read
  • Balance: Read

In the Stripe Dashboard open Developers, then API keys, then Create restricted key. Name it Botopticon board. Set Read on Subscriptions, Charges, Invoices, Customers, Products, Prices, and Balance. Leave every Write at None. The key starts with rk_live_ or rk_test_. Never use a full secret key.

If the agent already has Stripe MCP, use that instead of raw HTTP. Same read-only rule.

Botopticon never stores this key. Paste it into the agent, cron host, or MCP config. Revoke it any time.

Board

Sample · not your account.

MRR

Sample · Active subscriptions

$42k

+$2.8k

Updated just nownowStripe

MRR 7d

Sample · Last 7 days

$42,000.00

min $39,200.00max $42,000.00

SunMonTueWedThuFriSat

Updated just nownowStripe

New customers

Sample · Last 24 hours

12cust

+3

Updated just nownowStripe

Recent payments

Sample · Newest first

  1. 11:42$290 · Acme · invo_1842
  2. 10:05$29 · North · invo_1841
  3. 09:18$29 failed · West · ch_9912

Updated just nownowStripe

By product

Sample · MRR rank

  1. 1Pro
    28,000USD+8%
  2. 2Team
    9,000USD+2%
  3. 3Free add-on
    5,000USD-1%

Updated just nownowStripe

Command Tiles

Pro

Sample · not your account. The agent puts the ask on the board. You answer there. How Command Tiles work

  • Refund the charge

    Needs you

    Sample data

    Approval · Stripe

    Refund the failed $240 charge?

    Three failed payments in 24 hours. Largest is $240.

    Updated just nownowStripe

    Needs you
  • Which fail first?

    Needs you

    Sample data

    Question · Stripe

    Which failed payment should Stripe retry first?

    Updated just nownowStripe

    Needs you

Tiles

  • MRR
  • MRR 7d
  • New customers
  • Failed paymentsneeds you
  • Recent payments
  • By product
  • MRR. Sum active subscription Price amounts. Monthly as-is; yearly / 12.
  • Failed payments. Set needs_you true when failed charges in the last 24 hours are greater than 0.

Setup

  1. 01

    Mint a read-only Stripe key

    Create a key that can only read. Never grant write. Keep it in the env var named on this page, on the agent or cron host. Botopticon never stores this key. Paste it into the agent, cron host, or MCP config. Revoke it any time.

  2. 02

    Create a Botopticon token

    In the app, open Connection tokens and create one named after this board. Copy it. It is shown once. That token posts to Botopticon. It is not the source key.

  3. 03

    Paste the prompt into your agent

    Open the tab for Grok Bot, Muse, MCP, Cursor, Claude, or curl. Replace $BOTOPTICON_TOKEN. The agent fetches the source, maps the fields in the brief, and posts. Do not paste canned sample JSON as live data.

  4. 04

    Wait for the first live post

    These numbers are sample. They flip when your agent posts with the key. Each tile keeps the sample label until that tile is replaced.

Snippets

Same recipe, one tab per platform. Replace $BOTOPTICON_TOKEN with a connection token. The prompt fetches the source and posts. Do not paste the sample numbers as live data.

Grok Bot

Paste this into Grok Bot. Replace $BOTOPTICON_TOKEN with a Botopticon connection token. Connect MCP at https://www.botopticon.com/api/mcp if this client can. If it cannot, POST /api/ingest with curl instead.

Keep the Botopticon board "Stripe revenue" current.

Source: Stripe.
You hold STRIPE_API_KEY (Stripe restricted key, read-only). Botopticon never stores this key. Paste it into the agent, cron host, or MCP config. Revoke it any time.
In the Stripe Dashboard open Developers, then API keys, then Create restricted key. Name it Botopticon board. Set Read on Subscriptions, Charges, Invoices, Customers, Products, Prices, and Balance. Leave every Write at None. The key starts with rk_live_ or rk_test_. Never use a full secret key.
Scopes (read-only): Subscriptions: Read, Charges: Read, Invoices: Read, Customers: Read, Products: Read, Prices: Read, Balance: Read.
If the agent already has Stripe MCP, use that instead of raw HTTP. Same read-only rule.

What to fetch and how to map it:
Read the current Stripe docs. Objects: Subscription, Charge, Invoice, Customer, Product, Price, Balance.
MRR: sum active subscriptions (status active or trialing) times their Price. Monthly interval as-is; year divided by 12. Post format currency on the MRR kpi.
MRR 7d: one point per day for the last 7 days, same formula on that day's active set.
New customers: Customer objects created in the last 24 hours.
Failed payments: Charge or PaymentIntent with status failed in the last 24 hours. Set needs_you true when that count is greater than 0.
Recent payments: newest Charges as a feed. Label amount and customer email or id. Never post card numbers, bank accounts, or the Stripe key.
By product: rank Products by MRR from their active subscriptions.

Tiles:
- MRR — bot Stripe, tile mrr-now, type kpi. Sum active subscription Price amounts. Monthly as-is; yearly / 12.
- MRR 7d — bot Stripe, tile mrr-week, type trend.
- New customers — bot Stripe, tile new-cust, type kpi.
- Failed payments — bot Stripe, tile failed-pay, type kpi. Set needs_you true when failed charges in the last 24 hours are greater than 0. Sample shows needs_you true.
- Recent payments — bot Stripe, tile pay-feed, type feed.
- By product — bot Stripe, tile by-product, type leaderboard.

Post each tile to https://www.botopticon.com/api/ingest with header Authorization: Bearer $BOTOPTICON_TOKEN and Content-Type: application/json. Fields: bot, tile, type, title, subtitle, props, needs_you, ttl_seconds.
If you can call MCP, connect to https://www.botopticon.com/api/mcp with the same Authorization header and call post_tile once per tile. The arguments are those JSON fields.
Do not invent numbers. Do not post the same body again just to keep a tile fresh. Set ttl_seconds to how often the value really changes. A quiet tile should show as stale.
When needs_you is true, say who is asking, what it is about, and the ask.

FAQ

Which pane turns amber?
Failed payments. When that count is greater than 0 the agent sets needs_you. The other tiles stay money and mix.
Does this run on the Free plan?
Yes. Every tile in this recipe is a Free type. A Free workspace still has one board and 8 live tiles. Using this recipe adds the sample tiles to that board.
Does Botopticon store the Stripe key?
Botopticon never stores this key. Paste it into the agent, cron host, or MCP config. Revoke it any time.
How does the board stay current?
Your agent fetches the source and posts when a number changes. Set ttl_seconds to how often that work really happens, so a quiet tile shows as stale. Use a timer only for data no agent touches, and then at most daily. Never post the same content again just to keep a tile fresh.