Stripe Payments

Data & APIs

Manage customers, payments, invoices, subscriptions, checkout sessions, and payouts in Stripe via the Stripe API. Use this skill when users want to process payments, manage subscriptions, handle refunds, create invoices, or automate financial workflows in Stripe.

Install

openclaw skills install clawlink-stripe

Stripe Payments

Stripe Payments

Manage Stripe customers, payments, invoices, subscriptions, checkout sessions, and payouts via the Stripe API.

This skill uses ClawLink for hosted connection flows and credentials so you do not need to configure Stripe API access yourself.

Setup in 3 Steps

Step 1: InstallStep 2: Pair AccountStep 3: Connect Stripe
InstallPairApp-specific connection GIF coming soon
Run the install command in OpenClawSign in and approve the deviceOpen the dashboard and connect Stripe

How It Works

┌─────────────────┐     ┌──────────────┐     ┌──────────────────┐
│   OpenClaw      │────▶│   ClawLink   │────▶│   Stripe API      │
│   (User Chat)   │     │   (OAuth)    │     │                  │
└─────────────────┘     └──────────────┘     └──────────────────┘
         │                       │                       │
         │  1. Install Plugin    │                       │
         │  2. Pair Device       │                       │
         │  3. Connect Stripe    │                       │
         │                       │  4. Secure Token     │
         │                       │  5. Proxy Requests   │
         │                       │                       │
         ▼                       ▼                       ▼
   ┌──────────┐           ┌──────────┐           ┌──────────┐
   │  SKILL   │           │ Dashboard│           │  Stripe  │
   │  File    │           │ Auth     │           │  Account │
   └──────────┘           └──────────┘           └──────────┘

Install

Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.

openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart

Then tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for Stripe again."

Quick Start

# List customers
clawlink_call_tool --tool "stripe_list_customers" --params '{"limit": 10}'

# Get a payment intent
clawlink_call_tool --tool "stripe_get_payment_intent" --params '{"payment_intent_id": "pi_1234567890"}'

# List subscriptions
clawlink_call_tool --tool "stripe_list_subscriptions" --params '{"limit": 10}'

Authentication

All Stripe tool calls are authenticated automatically by ClawLink using the user's connected Stripe account OAuth token.

No API key is required in chat. ClawLink stores the API key securely and injects it into every Stripe API request on the user's behalf.

Getting Connected

  1. Install the ClawLink plugin (see Install above).
  2. Pair the plugin with clawlink_begin_pairing if it is not configured yet.
  3. Open https://claw-link.dev/dashboard?add=stripe and connect Stripe.
  4. Call clawlink_list_integrations to verify the connection is active.

Connection Management

List Connections

clawlink_list_integrations

Response: Returns all connected integrations. Look for stripe in the list.

Verify Connection

clawlink_list_tools --integration stripe

Response: Returns the live tool catalog for Stripe.

Reconnect

If Stripe tools are missing or the connection shows an error:

  1. Direct the user to https://claw-link.dev/dashboard?add=stripe
  2. After they confirm, call clawlink_list_integrations to verify
  3. Then call clawlink_list_tools --integration stripe

Security & Permissions

  • Access is scoped to the Stripe account connected during OAuth setup and the permissions granted.
  • All write operations require explicit user confirmation. Refunds, cancellations, and chargebacks are high-impact — confirm explicitly.
  • Never commit payment amounts or fee calculations from memory — always pull from Stripe.
  • Test mode and live mode operate on separate data — confirm which mode is in use.

Tool Reference

Customers

ToolDescriptionMode
stripe_list_customersList customers with pagination and filtersRead
stripe_get_customerGet customer details including balance and metadataRead
stripe_create_customerCreate a new customer recordWrite
stripe_update_customerUpdate customer information or metadataWrite
stripe_delete_customerPermanently delete a customerWrite
stripe_create_customer_balance_transactionManually adjust a customer's balanceWrite
stripe_create_customer_sessionCreate a customer session for portal accessWrite
stripe_search_customersSearch customers by email, name, or metadataRead

Payment Intents & Charges

ToolDescriptionMode
stripe_list_payment_intentsList payment intents with status filtersRead
stripe_get_payment_intentGet payment intent details and statusRead
stripe_create_payment_intentCreate a payment intent to collect paymentWrite
stripe_confirm_payment_intentConfirm a payment intent and initiate paymentWrite
stripe_capture_payment_intentCapture funds from an uncaptured payment intentWrite
stripe_cancel_payment_intentCancel an uncaptured payment intentWrite
stripe_get_balanceGet Stripe account balanceRead
stripe_list_balance_transactionsList balance transactionsRead
stripe_create_chargeCreate a direct chargeWrite
stripe_capture_chargeCapture an uncaptured chargeWrite
stripe_create_refundCreate a full or partial refundWrite

Subscriptions

ToolDescriptionMode
stripe_list_subscriptionsList active and past subscriptionsRead
stripe_get_subscriptionGet subscription details and scheduleRead
stripe_create_subscriptionCreate a subscription for a customerWrite
stripe_update_subscriptionUpdate a subscription's plan, quantity, or statusWrite
stripe_cancel_subscriptionCancel a subscription (at period end or immediately)Write
stripe_pause_subscriptionPause an active subscriptionWrite
stripe_resume_subscriptionResume a paused subscriptionWrite
stripe_list_subscription_itemsList items on a subscriptionRead
stripe_create_subscription_itemAdd an item to an existing subscriptionWrite
stripe_delete_subscription_itemRemove an item from a subscriptionWrite

Invoices

ToolDescriptionMode
stripe_list_invoicesList invoices with status and customer filtersRead
stripe_get_invoiceGet invoice details including line itemsRead
stripe_create_invoiceCreate a new draft invoiceWrite
stripe_finalize_invoiceFinalize a draft invoice for sendingWrite
stripe_send_invoiceSend a finalized invoice to the customerWrite
stripe_void_invoiceVoid an invoiceWrite
stripe_delete_invoicePermanently delete a draft invoiceWrite
stripe_create_preview_invoicePreview an upcoming invoiceRead
stripe_add_invoice_linesAdd line items to a draft invoiceWrite
stripe_create_invoice_itemAdd a charge or credit to a customerWrite
stripe_list_invoice_itemsList invoice items for a customerRead
stripe_create_credit_noteCreate a credit note for an invoiceWrite

Checkout Sessions

ToolDescriptionMode
stripe_create_checkout_sessionCreate a hosted checkout pageWrite
stripe_get_checkout_sessionGet checkout session detailsRead
stripe_expire_checkout_sessionExpire an unfinished checkout sessionWrite

Products & Pricing

ToolDescriptionMode
stripe_list_productsList all productsRead
stripe_get_productGet product detailsRead
stripe_create_productCreate a new productWrite
stripe_update_productUpdate a product's metadata or statusWrite
stripe_delete_productArchive a productWrite
stripe_create_priceCreate a price for a productWrite
stripe_list_pricesList prices for a productRead

Coupons & Discounts

ToolDescriptionMode
stripe_create_couponCreate a discount couponWrite
stripe_list_couponsList all couponsRead
stripe_delete_couponPermanently delete a couponWrite
stripe_create_promotion_codeCreate a customer-redeemable codeWrite

Billing Portal

ToolDescriptionMode
stripe_create_billing_portal_sessionCreate a customer portal sessionWrite
stripe_create_billing_portal_configurationConfigure the billing portalWrite

Disputes & Fraud

ToolDescriptionMode
stripe_list_disputesList chargebacks and disputesRead
stripe_get_disputeGet dispute detailsRead
stripe_close_disputeAccept and close a disputeWrite

Payouts

ToolDescriptionMode
stripe_list_payoutsList payouts to the bank accountRead
stripe_get_payoutGet payout details and statusRead
stripe_create_payoutCreate a payout to the bank accountWrite
stripe_cancel_payoutCancel a pending payoutWrite

Payment Methods

ToolDescriptionMode
stripe_list_payment_methodsList payment methods attached to a customerRead
stripe_attach_payment_methodAttach a payment method to a customerWrite
stripe_detach_payment_methodRemove a payment method from a customerWrite
stripe_create_payment_methodCreate a payment method from card detailsWrite

Setup Intents

ToolDescriptionMode
stripe_create_setup_intentCreate a setup intent for saving payment detailsWrite
stripe_confirm_setup_intentConfirm a setup intentWrite
stripe_cancel_setup_intentCancel a setup intentWrite

Code Examples

List recent customers

clawlink_call_tool --tool "stripe_list_customers" \
  --params '{
    "limit": 10,
    "email": "example.com"
  }'

Create a payment intent

clawlink_call_tool --tool "stripe_create_payment_intent" \
  --params '{
    "amount": 5000,
    "currency": "usd",
    "customer": "cus_1234567890",
    "description": "Order #12345"
  }'

Create a customer

clawlink_call_tool --tool "stripe_create_customer" \
  --params '{
    "email": "customer@example.com",
    "name": "Jane Doe",
    "metadata": {
      "internal_id": "CUST-001"
    }
  }'

Create a checkout session

clawlink_call_tool --tool "stripe_create_checkout_session" \
  --params '{
    "mode": "subscription",
    "line_items": [
      {
        "price": "price_1234567890",
        "quantity": 1
      }
    ],
    "success_url": "https://example.com/success",
    "cancel_url": "https://example.com/cancel"
  }'

Create a refund

clawlink_call_tool --tool "stripe_create_refund" \
  --params '{
    "charge": "ch_1234567890",
    "amount": 2500
  }'

Create a subscription

clawlink_call_tool --tool "stripe_create_subscription" \
  --params '{
    "customer": "cus_1234567890",
    "items": [
      {
        "price": "price_1234567890"
      }
    ],
    "payment_behavior": "default_incomplete"
  }'

Discovery Workflow

  1. Call clawlink_list_integrations to confirm Stripe is connected.
  2. Call clawlink_list_tools --integration stripe to see the live catalog.
  3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.
  4. If the user describes a capability but the exact tool is unclear, call clawlink_search_tools with a short query and integration stripe.
  5. If no Stripe tools appear, direct the user to https://claw-link.dev/dashboard?add=stripe.

Execution Workflow

┌─────────────────────────────────────────────────────────────┐
│  READ OPERATIONS (Safe)                                     │
│  list → get → search → describe                            │
│                                                             │
│  Example: List customers → Get customer → Show details    │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  WRITE OPERATIONS (Require Confirmation)                    │
│  describe → preview → confirm → call                      │
│                                                             │
│  Example: Preview refund → User approves → Process refund   │
└─────────────────────────────────────────────────────────────┘
  1. For unfamiliar tools, ambiguous requests, or any write action, call clawlink_describe_tool first.
  2. Use the returned guidance, schema, whenToUse, askBefore, safeDefaults, examples, and followups to shape the call.
  3. Prefer read, list, get, and search operations before writes when that reduces ambiguity.
  4. For writes or anything marked as requiring confirmation, call clawlink_preview_tool first.
  5. Execute with clawlink_call_tool. Pass confirmation only after the preview matches the user's intent.
  6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.

Notes

  • All monetary amounts in Stripe are in the smallest currency unit (cents for USD).
  • Payment intents must be confirmed before processing — check the status after creation.
  • Subscriptions can have multiple items (prices) — always specify the price ID, not just the product ID.
  • Refunds can only be processed on captured charges — uncaptured charges must be cancelled instead.
  • Dispute/chargeback responses must be submitted through the Stripe dashboard, not the API.
  • Test mode and live mode are completely separate — confirm which environment is in use.

Error Handling

Status / ErrorMeaning
Tool not foundThe tool name does not exist in the current catalog. Verify with clawlink_list_tools --integration stripe.
Missing connectionStripe is not connected. Direct the user to https://claw-link.dev/dashboard?add=stripe.
customer_not_foundThe customer ID does not exist in the account.
payment_intent_not_foundThe payment intent ID is invalid or was deleted.
charge_not_foundThe charge ID is invalid.
subscription_not_foundThe subscription ID does not exist.
idempotency_conflictA request with the same idempotency key was recently made.
card_declinedThe card was declined by the issuer.
insufficient_fundsThe customer's balance is insufficient for the operation.
already_refundedThe charge has already been fully refunded.
Write rejectedUser did not confirm a write action. Always confirm before executing writes.

Troubleshooting: Tools Not Visible

  1. Check that the ClawLink plugin is installed:
    openclaw plugins list
    
  2. If the plugin is installed but tools are missing, tell the user to send /new as a standalone message to reload the catalog.
  3. If a fresh chat does not help, run:
    openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
    openclaw gateway restart
    
  4. After restart, tell the user to send /new again and retry.

Troubleshooting: Payment Fails

  1. Verify the customer exists and has valid payment methods attached.
  2. Check the PaymentIntent status — some require additional confirmation steps.
  3. Confirm the amount is in the smallest currency unit (cents), not dollars.
  4. Ensure the currency matches the payment method type.

Resources


Powered by ClawLink — an integration hub for OpenClaw

ClawLink Logo