Skip to content

Stripe

The Stripe connector is broad — it covers the core payments API, Connect (marketplace onboarding and payouts), and Issuing (cards). Because agents that move money are the most sensitive class of integration, every Stripe operation requires tool_decision.rego to approve it.

  • Developers → API keys — note restricted key for TapPass
  • Create a restricted key scoped to only the resources you’ll let agents touch (read vs write per resource)
Terminal window
STRIPE_API_KEY=rk_live_...
# For Connect:
STRIPE_CONNECT_CLIENT_ID=ca_...
# For webhooks:
STRIPE_WEBHOOK_SECRET=whsec_...
GroupOperationsDefault policy
readretrieve_charge, list_customers, get_invoice, …Allowed
payments.createcreate_payment_intent, create_chargeDenied — requires explicit rule
payments.refundcreate_refund, cancel_payment_intentDenied — requires explicit rule
subscriptions.writecreate_subscription, cancel_subscriptionDenied — requires explicit rule
connect.onboardcreate_account, create_account_linkAllowed for onboarding agents
issuing.createcreate_card, approve_authorizationDenied

Default-deny for write ops is deliberate: opt in explicitly.

# Read
customers = agent.call_provider(
provider="stripe",
operation="list_customers",
params={"limit": 10},
)
# Write (will be denied unless a policy approves it)
agent.call_provider(
provider="stripe",
operation="create_refund",
params={"charge": "ch_123...", "amount": 500},
)

Allow refunds up to €50 for tier-1 support agents only:

package tool_decision
allow {
input.provider == "stripe"
input.operation == "create_refund"
input.agent.role == "support-tier-1"
input.params.amount <= 5000 # cents
}

TapPass automatically sets Idempotency-Key headers for Stripe write operations, derived from the audit event ID. Safe to retry — Stripe will return the original result.

Stripe offers EU data residency (the request stays in EU regions) — enable it in your Stripe dashboard under Settings → Data residency.