← ClaudeAtlas

stripesolid

Read and write customers, charges, payment intents, invoices, subscriptions and refunds in your Stripe account via the Stripe API. Use when the user asks about payments, revenue, a customer's billing, a failed charge, an invoice, or a subscription.
intentic/intentic · ★ 46 · AI & Automation · score 82
Install: claude install-skill intentic/intentic
# Stripe (connected) Key in `$STRIPE_API_KEY`. Base is `https://api.stripe.com/v1`. Requests are **form-encoded, never JSON**, and a GET wants its parameters in the query string, so define this helper once per shell: ```sh stripe() { local m="$1" p="$2"; shift 2 curl -s $([ "$m" = GET ] && echo -G) -X "$m" -H "Authorization: Bearer $STRIPE_API_KEY" \ "https://api.stripe.com/v1/$p" "$@"; } ``` `-G` folds each `-d` into the query string on a GET, so `stripe GET charges -d limit=20` is one call and `--data-urlencode` is what a value holding quotes or spaces needs. **Amounts are in the currency's smallest unit.** `amount: 1050` on a `usd` charge is $10.50 — divide by 100 before quoting a figure. Zero-decimal currencies (`jpy`, `krw`) are the exception: 1050 is ¥1050. **Say which account you read.** `sk_test_…` is test mode and touches no real money; `sk_live_…` is the real one: `case "$STRIPE_API_KEY" in sk_live*) echo live;; *) echo test;; esac`, and `stripe GET account | jq '{id, name: .settings.dashboard.display_name}'` names it. **A restricted key refuses per resource.** A 403 naming a resource means the key was not granted that scope, not that the data is missing. Report it that way and ask for a wider key rather than concluding the account is empty. - List customers: `stripe GET customers -d limit=20 | jq -c '.data[] | {id, email, name, created}'` - Find one by email: `stripe GET customers/search --data-urlencode "query=email:'<EMAIL>'" | jq -c '.data[] | {id,