Agent Skills: Stripe API

Stripe API for payments. Use when user mentions "Stripe", "payment",

UncategorizedID: vm0-ai/vm0-skills/stripe

Install this agent skill to your local

pnpm dlx add-skill https://github.com/vm0-ai/vm0-skills/tree/HEAD/stripe

Skill Files

Browse the full folder contents for stripe.

Download Skill

Loading file tree…

stripe/SKILL.md

Skill Metadata

Name
stripe
Description
Stripe API for payments. Use when user mentions "Stripe", "payment",

Stripe API

Manage payments, customers, subscriptions, and billing with the Stripe API.

Official docs: https://docs.stripe.com/api

When to Use

  • Manage customers (create, update, list, delete)
  • Create products and prices for billing
  • Manage subscriptions and invoices
  • Create and track payment intents
  • View account balance and transactions
  • List charges and events

Important: Stripe Uses Form-Encoded Bodies

Stripe API accepts application/x-www-form-urlencoded for POST requests, not JSON. Write request bodies to a .txt file using key=value&key=value format. Nested params use bracket syntax: items[0][price]=price_xxx.

Core APIs

Get Account Info

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/account" | jq '{id, business_profile, charges_enabled, payouts_enabled}'

Docs: https://docs.stripe.com/api/accounts/retrieve


List Customers

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/customers?limit=10" | jq '.data[] | {id, name, email}'

Docs: https://docs.stripe.com/api/customers/list

Get Customer

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/customers/<customer-id>" | jq '{id, name, email, created}'

Create Customer

Write to /tmp/stripe_request.txt:

name=John Doe&email=john@example.com
curl -s -u "$(printenv STRIPE_TOKEN):" -X POST "https://api.stripe.com/v1/customers" -d @/tmp/stripe_request.txt | jq '{id, name, email}'

Docs: https://docs.stripe.com/api/customers/create

Update Customer

Write to /tmp/stripe_request.txt:

name=Jane Doe
curl -s -u "$(printenv STRIPE_TOKEN):" -X POST "https://api.stripe.com/v1/customers/<customer-id>" -d @/tmp/stripe_request.txt | jq '{id, name, email}'

Delete Customer

curl -s -u "$(printenv STRIPE_TOKEN):" -X DELETE "https://api.stripe.com/v1/customers/<customer-id>" | jq '{id, deleted}'

Docs: https://docs.stripe.com/api/customers/delete


List Products

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/products?limit=10" | jq '.data[] | {id, name, active}'

Docs: https://docs.stripe.com/api/products/list

Get Product

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/products/<product-id>" | jq '{id, name, description, active}'

Create Product

Write to /tmp/stripe_request.txt:

name=Premium Plan&description=Full access to all features
curl -s -u "$(printenv STRIPE_TOKEN):" -X POST "https://api.stripe.com/v1/products" -d @/tmp/stripe_request.txt | jq '{id, name, description}'

Docs: https://docs.stripe.com/api/products/create


List Prices

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/prices?limit=10" | jq '.data[] | {id, product, unit_amount, currency, recurring}'

Docs: https://docs.stripe.com/api/prices/list

Create Price

Write to /tmp/stripe_request.txt:

unit_amount=2000&currency=usd&recurring[interval]=month&product=<product-id>
curl -s -u "$(printenv STRIPE_TOKEN):" -X POST "https://api.stripe.com/v1/prices" -d @/tmp/stripe_request.txt | jq '{id, unit_amount, currency, recurring}'

Docs: https://docs.stripe.com/api/prices/create


List Subscriptions

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/subscriptions?limit=10" | jq '.data[] | {id, customer, status, items: .items.data[0].price.id}'

Docs: https://docs.stripe.com/api/subscriptions/list

Get Subscription

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/subscriptions/<subscription-id>" | jq '{id, customer, status, current_period_start, current_period_end}'

Create Subscription

Write to /tmp/stripe_request.txt:

customer=<customer-id>&items[0][price]=<price-id>
curl -s -u "$(printenv STRIPE_TOKEN):" -X POST "https://api.stripe.com/v1/subscriptions" -d @/tmp/stripe_request.txt | jq '{id, customer, status}'

Docs: https://docs.stripe.com/api/subscriptions/create

Cancel Subscription

curl -s -u "$(printenv STRIPE_TOKEN):" -X DELETE "https://api.stripe.com/v1/subscriptions/<subscription-id>" | jq '{id, status}'

Docs: https://docs.stripe.com/api/subscriptions/cancel


List Invoices

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/invoices?limit=10" | jq '.data[] | {id, customer, status, amount_due, currency}'

Docs: https://docs.stripe.com/api/invoices/list

Get Invoice

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/invoices/<invoice-id>" | jq '{id, customer, status, amount_due, amount_paid}'

List Payment Intents

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/payment_intents?limit=10" | jq '.data[] | {id, amount, currency, status}'

Docs: https://docs.stripe.com/api/payment_intents/list

Create Payment Intent

Write to /tmp/stripe_request.txt:

amount=2000&currency=usd&payment_method_types[]=card
curl -s -u "$(printenv STRIPE_TOKEN):" -X POST "https://api.stripe.com/v1/payment_intents" -d @/tmp/stripe_request.txt | jq '{id, amount, currency, status}'

Docs: https://docs.stripe.com/api/payment_intents/create

Get Payment Intent

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/payment_intents/<payment-intent-id>" | jq '{id, amount, currency, status}'

List Charges

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/charges?limit=10" | jq '.data[] | {id, amount, currency, status, customer}'

Docs: https://docs.stripe.com/api/charges/list

Get Charge

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/charges/<charge-id>" | jq '{id, amount, currency, status, paid}'

Get Balance

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/balance" | jq '{available, pending}'

Docs: https://docs.stripe.com/api/balance/balance_retrieve

List Balance Transactions

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/balance_transactions?limit=10" | jq '.data[] | {id, amount, currency, type, status}'

Docs: https://docs.stripe.com/api/balance_transactions/list


List Events

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/events?limit=10" | jq '.data[] | {id, type, created}'

Docs: https://docs.stripe.com/api/events/list

Get Event

curl -s -u "$(printenv STRIPE_TOKEN):" "https://api.stripe.com/v1/events/<event-id>" | jq '{id, type, data: .data.object.id}'

Docs: https://docs.stripe.com/api/events/retrieve

Guidelines

  1. Stripe authenticates via HTTP Basic Auth: -u "$(printenv STRIPE_TOKEN):" (colon after key, no password)
  2. POST bodies use form-encoded format (key=value&key=value), not JSON
  3. Nested params use bracket syntax: items[0][price]=price_xxx
  4. Write request bodies to /tmp/stripe_request.txt before sending
  5. Use <placeholder> for dynamic IDs that the user must replace
  6. Empty list responses ({"data": [], "has_more": false}) are normal for test-mode accounts
  7. All monetary amounts are in the smallest currency unit (e.g., cents for USD)