Stripe plugin

The Stripe plugin lets a Vaubaan Gateway mission use Stripe without handing the agent a credential. Billing operations on a Stripe account : catalog, customers, subscriptions, invoices, refunds, payouts, webhooks — test and live modes as separate resources.

One account is one Stripe account, given as a test key, a live key, or both; each mode is its own resource, labelled test or live by the plugin. Every permission is held per mode, so a mission can work freely in test mode and touch live billing only within its limits and after your yes.

Permissions

Each permission is a named risk of the plugin's catalog: a mission holds an explicit list of them, never "all". The severity is computed from the permission's six axes (undo, blast radius, data, cost, visible to, lasts); nothing is decided from it.

PermissionWhat it allowsSeverityWhy it is a risk
stripe.read-catalogRead catalog (products, prices, coupons, promotion codes)low (only for test, live)Inventory of the commercial catalog. Public metadata by construction (prices are shown on the marketing site). No PII, no secret.
stripe.read-billing-historyRead billing history (subscriptions, invoices, charges, payment intents)low (only for test, live)Reads the transactional history. No card number leaves Stripe, but amounts, dates and descriptions per customer reveal the commercial trajectory. Distinct from read-customer-pii so anonymised statistics can be allowed without identities.
stripe.read-customer-piiRead customer PII (email, name, address, phone)medium (only for test, live)Reads the personal fields of customers (`email`, `name`, `address`, `phone`, `shipping`). GDPR/CCPA surface : any consumption by an agent triggers a minimisation duty. Emitted alongside the business payload of every customer read, so a mission without it cannot read customers.
stripe.read-balanceRead balance, ledger and events (cash position)low (only for test, live)Available and pending balance, ledger history, event feed. Real-time cash position : sensitive for finance, no PII. Distinct from read-billing-history so an "ops monitoring" agent needs no customer details.
stripe.catalog-writeCreate / update products, prices, coupons, promotion codesmedium (only for test, live)Changes the commercial catalog. Reversible (archive and recreate), no effect on existing payments, but every future checkout sees it. A soft posture shift on the offer.
stripe.subscription-createCreate a subscription (may charge immediately)medium (only for test, live)Creates a subscription. With immediate proration (the default without `billing_cycle_anchor`) Stripe charges the customer at creation. The classifier also emits `payment-intent.W` for that cash side effect ; this entry covers both slices (the second used to fall to the fallback, which presets no longer carry — catalog v3).
stripe.subscription-updateUpdate a subscription (plan, quantity, pause, metadata)medium (only for test, live)Changes an existing subscription : plan, quantity, metadata, `pause_collection`. Costly when proration charges or credits the customer. Posture shift on recurring billing.
stripe.subscription-cancelCancel a subscription (stops future charges)medium (only for test, live)Stops future billing. Semantically irreversible : resubscribing creates a new subscription and loses the history. The customer loses access at the end of the period.
stripe.invoice-create-draftCreate a draft invoice (no customer notification)low (only for test, live)Creates an invoice in draft state. No notification, no money movement, deletable until finalised. Acceptable surface for a billing assistant.
stripe.invoice-finalizeFinalize an invoice (locks it, notifies, attempts collection)medium (only for test, live)Locks the draft, emails the customer by default and attempts collection when `auto_advance` is set. Costly to revert : voiding leaves a trace.
stripe.invoice-voidVoid a finalized invoice (cannot be undone)medium (only for test, live)Voids a finalised invoice. Irreversible by design (the paper trail stays, the invoice is inert for ever). No direct money movement but the receivable is written off : accounting impact.
stripe.refund-createCreate a refund (real money out of the merchant account)high (only for test, live)Issues a refund. Real money leaves the account ; bounded per call by the charge amount, unbounded over N calls. Irreversible : a refund is not reversed, the customer has to be charged again and may refuse. The cardinal financial-exfiltration vector of a compromised or prompt-injected agent.
stripe.payout-createCreate a payout (moves the balance to the bank account on file)high (only for test, live)Sends funds from the Stripe balance to the external account on file. Cancellable only while pending, then irreversible ; the amount is bounded by the balance, not by a limit of the mission. In test mode no money moves.
stripe.customer-deleteDelete a customer (cancels its subscriptions, cannot be undone)high (only for test, live)Permanently deletes a customer and immediately cancels every active subscription. Irreversible ; erases personal data (a GDPR erasure path) and recurring revenue in one call.
stripe.webhook-endpoint-writeCreate / update / delete a webhook endpoint configurationmedium (only for test, live)Configures the URL and the events an endpoint receives. Posture shift : a misconfigured endpoint routes events (customer data included) to an attacker. Distinct from mint-webhook-secret because an update does not regenerate the secret.
stripe.mint-webhook-secretMint a webhook signing secret (create_webhook_endpoint)medium (only for test, live)Credential creation. The `whsec_*` secret is returned once, at creation, and authenticates every event received. Same intention as creating an endpoint, asymmetric secret-bearing effect.
stripe.uncategorized-writeUncategorized Stripe writehigh (only for test, live; the catch-all: touched only by a call no other permission covers)Catch-all for writes without a dedicated entry. Seen in production, it means a tool classifies to a slice no entry covers : add the entry.

Presets

A preset pre-fills the permissions of a mission for one account, with a limit per period, a rate and whether each permission runs freely or asks the mission creator first. The person creating the mission adjusts it; the mission stores the explicit list.

Read-only

read-only — Catalog, billing history and cash position of the selected mode. No PII, no write.

PermissionWhat it allowsLimit per periodRateRuns
stripe.read-catalogRead catalog (products, prices, coupons, promotion codes)2000120 per minuteruns freely
stripe.read-billing-historyRead billing history (subscriptions, invoices, charges, payment intents)2000120 per minuteruns freely
stripe.read-balanceRead balance, ledger and events (cash position)50060 per minuteruns freely

Test-mode developer

test-mode-developer — Everything on the test-mode resource, generous budgets, nothing on live.

PermissionWhat it allowsLimit per periodRateRuns
stripe[test].read-catalog5000120 per minuteruns freely
stripe[test].read-billing-history5000120 per minuteruns freely
stripe[test].read-customer-pii5000120 per minuteruns freely
stripe[test].read-balance100060 per minuteruns freely
stripe[test].catalog-write100060 per minuteruns freely
stripe[test].subscription-create50030 per minuteruns freely
stripe[test].subscription-update50030 per minuteruns freely
stripe[test].subscription-cancel20030 per minuteruns freely
stripe[test].invoice-create-draft50030 per minuteruns freely
stripe[test].invoice-finalize20030 per minuteruns freely
stripe[test].invoice-void10030 per minuteruns freely
stripe[test].refund-create10010 per minuteruns freely
stripe[test].payout-create205 per minuteruns freely
stripe[test].customer-delete10030 per minuteruns freely
stripe[test].webhook-endpoint-write5010 per minuteruns freely
stripe[test].mint-webhook-secret2010 per minuteruns freely

Finance operator

finance-operator — Live-mode billing operations; refunds, payouts, cancellations, voids and deletions ask first.

PermissionWhat it allowsLimit per periodRateRuns
stripe[live].read-catalog2000120 per minuteruns freely
stripe[live].read-billing-history2000120 per minuteruns freely
stripe[live].read-customer-pii50060 per minuteruns freely
stripe[live].read-balance50060 per minuteruns freely
stripe[live].subscription-create5010 per minuteruns freely
stripe[live].subscription-update10010 per minuteruns freely
stripe[live].subscription-cancel505 per minuteask me first
stripe[live].invoice-create-draft20020 per minuteruns freely
stripe[live].invoice-finalize10010 per minuteruns freely
stripe[live].invoice-void205 per minuteask me first
stripe[live].refund-create203 per minuteask me first
stripe[live].payout-create52 per minuteask me first
stripe[live].customer-delete102 per minuteask me first

Tools

ToolWhat it does
stripe__list_productsList products
stripe__list_pricesList prices
stripe__list_customersList customers
stripe__retrieve_customerRead a customer
stripe__list_subscriptionsList subscriptions
stripe__list_invoicesList invoices
stripe__list_chargesList charges
stripe__list_payment_intentsList payment intents
stripe__get_balanceRead the balance
stripe__list_eventsList events
stripe__create_productCreate a product
stripe__update_productChange a product
stripe__create_priceCreate a price
stripe__update_priceChange a price
stripe__create_couponCreate a coupon
stripe__create_promotion_codeCreate a promotion code
stripe__create_subscriptionCreate a subscription
stripe__update_subscriptionChange a subscription
stripe__cancel_subscriptionCancel a subscription
stripe__pause_subscriptionPause a subscription
stripe__create_invoiceCreate a draft invoice
stripe__finalize_invoiceFinalize an invoice
stripe__void_invoiceVoid an invoice
stripe__create_refundRefund a payment
stripe__create_webhook_endpointCreate a webhook endpoint
stripe__create_payoutPay out to the bank account
stripe__delete_customerDelete a customer

Health

Health: not enough reports yet. A plugin version is deemed validated by the community with at least 200 reports and 90 % of them successful, over the last 90 days, as reported by the instances whose operators turned community telemetry on. It is a community signal, not a security guarantee.

Last changed 2026-10-16. This page as Markdown: /plugins/stripe.md