First-party app
Stripe

Stripe

Manage Stripe customers, payments, refunds, invoices, subscriptions and catalogue.

stable Commerce & PaymentsFinance & Accounting

About

Stripe ships in the w6w first-party pack. It declares 25 actions, 2 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.stripe
Version
0.2.4
Author
w6w
Licence
MIT
Categories
Commerce & Payments · Finance & Accounting

Overview

Stripe covers the core objects a payments workflow needs — customers can be created, updated, searched, fetched and deleted; payment intents can be created, captured, canceled or read back; and refunds can be issued directly against a charge.

Subscriptions and invoicing are both supported end to end: a subscription can be created, fetched or canceled, and an invoice can be created, finalized and paid as three distinct steps, matching how Stripe’s own invoicing lifecycle actually works rather than collapsing it into one call. Products and prices can both be created to build out a workflow’s catalogue, and prices can be listed to check what’s already configured; a Checkout Session can be created to hand a customer a hosted payment page.

A fit for automating subscription lifecycle events, reconciling payments and refunds with an external ledger, or generating invoices and checkout links as part of a larger sales or billing workflow.

Build with Stripe

Three routes to the same 25 actions. The Workflow tab is generated from Stripe's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

Get Balance

balance-get

Retrieve the account's current balance, split into available and pending funds.

Get Charge

charge-get

Retrieve a charge by id.

List Charges

charge-get-many

List charges, newest first, optionally scoped to one customer.

Create Checkout Session

checkout-session-create

A Stripe-hosted payment page. Returns a URL to redirect to — the only way to start a subscription for a customer with no saved card.

Create Customer

customer-create

Create a customer record.

Delete Customer

customer-delete

Delete a customer. This immediately cancels their subscriptions; past charges are retained.

Get Customer

customer-get

Retrieve a customer by id.

List Customers

customer-get-many

List customers, newest first. Filter by exact email, or use Search for anything else.

Search Customers

customer-search

Search customers with Stripe's query language. The index lags writes by up to a minute.

Update Customer

customer-update

Update a customer. Only the fields you fill in are sent.

Create Invoice

invoice-create

Create a draft invoice from the customer's pending invoice items. Nothing is billed until it is finalised.

Finalize Invoice

invoice-finalize

Move a draft invoice to open. This freezes its line items and issues its number — it cannot be edited afterwards.

Get Invoice

invoice-get

Retrieve an invoice by id.

Pay Invoice

invoice-pay

Attempt payment of an open invoice, or record that it was paid elsewhere.

Cancel Payment Intent

payment-intent-cancel

Cancel a payment intent that has not been captured. A captured payment must be refunded instead.

Capture Payment Intent

payment-intent-capture

Capture a manually-captured payment intent. Capturing less than authorised releases the remainder.

Create Payment Intent

payment-intent-create

Start a payment. Handles SCA / 3-D Secure, unlike the legacy Charges API.

Get Payment Intent

payment-intent-get

Retrieve a payment intent and its current status.

Create Price

price-create

Attach a price to a product. Prices are immutable — to change an amount, create a new one.

List Prices

price-get-many

Find a product's prices — by product id, or directly by lookup key.

Create Product

product-create

Create a catalogue product. Attach prices to it with `price-create`.

Create Refund

refund-create

Refund a charge or payment intent, in full or in part. Give exactly one of the two ids.

Cancel Subscription

subscription-cancel

Cancel now, or schedule cancellation for the end of the current period (which is reversible).

Create Subscription

subscription-create

Subscribe a customer to a price.

Get Subscription

subscription-get

Retrieve a subscription and its current period.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Stripe's real ids.

{
  "manifestVersion": "2",
  "name": "stripe-example",
  "steps": [
    {
      "id": "charge-get",
      "uses": {
        "app": "io.w6w.stripe",
        "action": "charge-get",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "chargeId": "<chargeId>"
      }
    }
  ]
}

Here are some of the things you can do

  • Get Charge

    read
    charge-get
  • Get Balance

    read
    balance-get
  • List Charges

    search
    charge-get-many
  • Create Checkout Session

    perform
    checkout-session-create
  • Create Customer

    perform
    customer-create

+20 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Stripe, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Stripe. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "payment-intent-create",
  payload: {
    amount: "<value>",
    currency: "<value>",
    // customerId: "<value>",
    // paymentMethod: "<value>",
    // description: "<value>",
    // receiptEmail: "<value>",
    // captureMethod: "<value>",
    // confirm: "<value>",
    // metadata: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action payment-intent-create --payload '{"amount":"<value>","currency":"<value>"}'

Give an AI agent Stripe — without giving it Stripe's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.stripe#charge-get",
    "input": {
      "chargeId": "<chargeId>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Stripe connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Stripe's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Stripe itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Stripe declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Stripe platform status

Stripe's own status API, reporting api / webhooks / dashboard / checkout separately. Unauthenticated and unsigned.

quota

API quota headroom