Commerce

AI agent for Stripe: check reported ROAS against the money that arrived

TL;DR

Every ROAS figure in an ads dashboard is reported by the platform that was paid to produce it. Stripe is the other side of that claim. The agent reads what actually settled, and on a read_write connection it can also prepare customers, products, prices, coupons, promotion codes and payment links — created inactive, switched on only by a person. Nothing in this connector can charge a card, issue a refund or move money.

Connecting it, and what it asks for

  1. 1Connect on the Stripe card and authorize on Stripe's own domain.
  2. 2The consent screen names the scope this deployment requests: read_write, the scope Stripe grants a Connect platform (a deployment can still request read_only if Stripe has enabled that for it).
  3. 3Revocation stays on your side, from your own Stripe dashboard — and when the last workspace removes the account, the token is revoked at Stripe as well.
A wider token is not a wider product. The REST client sends a POST or DELETE only to the catalogue endpoints on its census; charges, payment intents, refunds, payouts, transfers, subscriptions, invoices, balances, disputes and account settings are not reachable from any lane. A first goal worth typing: Compare what each ad platform reported as revenue last month against the charges that actually settled, refunds netted out.

What the agent does with Stripe

  • Aggregates revenue server-side over a window: gross, refunded, net, order count, AOV, refund rate and a per-day series.
  • Reads charges, customers, subscriptions, invoices, payouts, disputes, refunds, balance transactions, checkout sessions, coupons, promotion codes and payment links.
  • Groups chargebacks by reason and currency, so a dispute rate means something.
  • Counts subscriptions that are still active but set to cancel — churn already decided but not yet happened.
  • Builds a payment link's shareable URL with UTM codes appended, and says whether the link redirects after purchase (the only way the landing page sees them).
  • Joins all of it to Google Ads, Meta, Microsoft Advertising and TikTok spend in a single task.
  • Raises the same threshold alerts on settled revenue that it raises on platform metrics.

Catalogue writes, and why none of them moves money

A refund, a subscription cancellation and a voided invoice all move money. An approval dialog in front of an agent is not the right control for that, so none of them is a tool — on the app, on a schedule or over MCP.

What the agent can change is the catalogue an ad points at: customers (no payment method, balance or discount), products, prices, coupons, promotion codes and payment links. Every create is inactive — a product is created archived, a price and a promotion code inactive, and a payment link is deactivated in the same call — and tagged created_by=agent_planners.

  • Switching anything on is a person's decision. Activating a product, price, promotion code or payment link, and deleting a customer or a coupon, wait for a person on every lane — never auto-approved, never inside a batch.
  • Money arguments are major units. 19.99 means 19.99, converted once with the currency's own decimals, and capped by STRIPE_MAX_AMOUNT_MAJOR.
  • Every write is bound to your account. The target and every object it references are read first with your connection's token; an id from another account or the other mode is refused.
That is also why this connects over Stripe Connect OAuth rather than a pasted secret key. A pasted sk_live key is a full-power credential that cannot be scoped down after the fact — and it travels through a form and a clipboard to get here.

Why platform ROAS and settled revenue differ

They are measuring different events. An ad platform credits revenue to the date of the click that preceded it; Stripe records it on the date the charge succeeded. Refunds land days or weeks later and most platforms never subtract them. A conversion value passed back from a pixel is an estimate of a payment; a Stripe charge is the payment.

So a gap between the two is expected, and its size is the useful number — not whether one matches the other. The agent reports both figures over the same window and the same currency and names the gap, instead of quoting one as if it settled the question.

Money is handled exactly

Stripe returns amounts in the minor currency unit — 1999 means 19.99 in a two-decimal currency and 1999 in a zero-decimal one like JPY. The conversion happens in the tool, with the currency named, so a figure is never off by a factor of 100.

Multi-currency accounts are reported per currency and never summed. Adding a EUR balance to a JPY balance produces a number that is not any amount of money, and a report that does it looks confident and is wrong.

Test-mode connections are labelled TEST in the account list and in every tool result. Test revenue that reads like live revenue is the worst thing a payments connector can produce.

Frequently asked questions

Can the agent issue refunds or cancel subscriptions in Stripe?
No. Nothing that moves money is a tool in the Stripe connection — not refunds, charges, payouts, transfers, subscriptions or invoices — on any lane, whatever the connection's scope. Moving money stays a human action in your own Stripe dashboard.
What can it change in Stripe, then?
The catalogue: customers, products, prices, coupons, promotion codes and payment links. Everything it creates starts inactive, and a person approves switching anything on, as well as deleting a customer or a coupon.
Do you ask for my Stripe secret key?
No. The connection runs over Stripe Connect OAuth: you authorize on Stripe's own domain and can revoke us from your Stripe dashboard without rotating a key the rest of your stack depends on.
Why does Stripe revenue not match my ad platform's reported conversion value?
Because they measure different events. The platform credits the click's date and rarely subtracts refunds; Stripe records the date the charge succeeded and nets refunds out. The agent reports both over the same window and names the gap rather than picking a winner.
What happens with multiple currencies?
Every figure is reported per currency and never summed across them. A cross-currency total would not be an amount of money, so the tools refuse to produce one.
Does it work with a Stripe test account?
Yes, and it says so — the account is labelled TEST in the integrations list and every result carries livemode, so test numbers cannot be quietly reported as revenue.
Connect Stripe and try it on your own account

Start free — 2,500 credits a month, no credit card. Reads are free; every write waits for you.

Related platforms

How the agent works