skills/zef-computers/drivers/stripe-treasury

stripe-treasury

SKILL.md

Stripe Treasury

Build embedded financial services with stored-value accounts, money movement, card issuing, and crypto capabilities.

Rule Priority Table

Priority Rule Impact Section
1 account-request-all-features HIGH Accounts
2 account-check-feature-status HIGH Accounts
3 account-match-capabilities HIGH Accounts
4 account-always-pass-stripe-account HIGH Accounts
5 account-expand-features-explicitly MEDIUM Accounts
6 money-use-outbound-payment HIGH Money Movement
7 money-check-balance-before-send HIGH Money Movement
8 money-handle-returns HIGH Money Movement
9 money-wire-requires-full-address HIGH Money Movement
10 money-check-cancelable-before-cancel MEDIUM Money Movement
11 money-use-test-helpers MEDIUM Money Movement
12 issuing-handle-authorization-fast HIGH Issuing
13 issuing-set-spending-controls HIGH Issuing
14 issuing-retrieve-card-securely HIGH Issuing
15 issuing-cancel-card-for-fraud-dispute HIGH Issuing
16 issuing-physical-cards-start-inactive MEDIUM Issuing
17 crypto-validate-wallet-address HIGH Crypto
18 crypto-check-geographic-eligibility MEDIUM Crypto
19 compliance-use-approved-terminology HIGH Compliance
20 compliance-disclose-bank-partner HIGH Compliance
21 compliance-separate-legal-agreements HIGH Compliance
22 compliance-retain-records-five-years HIGH Compliance
23 webhook-monitor-received-credits HIGH Webhooks
24 webhook-monitor-feature-activation MEDIUM Webhooks
25 webhook-monitor-authorization-health HIGH Webhooks

Capability Overview

Treasury Platform (requires Stripe Connect)
├─ Financial Accounts (stored-value wallets)
│  ├─ Receive funds (ACH, wire, internal)
│  ├─ Send funds (ACH, wire, internal)
│  └─ Hold balances in USD
├─ Issuing (cards funded from financial accounts)
│  ├─ Virtual cards (instant)
│  ├─ Physical cards (shipped)
│  └─ Spending controls & real-time authorization
├─ Crypto Onramp (fiat → crypto)
│  └─ Embedded widget for crypto purchase
└─ Compliance
   ├─ FDIC pass-through deposit insurance
   ├─ Required disclosures and terminology
   └─ 5-year record retention

Prerequisites

Treasury requires Stripe Connect. Your platform must:

  1. Be an approved Treasury platform (apply via Stripe dashboard)
  2. Use Connect with connected accounts
  3. Financial accounts are created per connected account

Quick Start: Create Financial Account

// 1. Create connected account with treasury capability
const account = await stripe.accounts.create({
  type: 'custom',
  country: 'US',
  capabilities: {
    treasury: { requested: true },
    card_issuing: { requested: true },
  },
});

// 2. Create financial account with all needed features
const fa = await stripe.treasury.financialAccounts.create(
  {
    supported_currencies: ['usd'],
    features: {
      card_issuing: { requested: true },
      deposit_insurance: { requested: true },
      financial_addresses: { aba: { requested: true } },
      inbound_transfers: { ach: { requested: true } },
      intra_stripe_flows: { requested: true },
      outbound_payments: {
        ach: { requested: true },
        us_domestic_wire: { requested: true },
      },
      outbound_transfers: {
        ach: { requested: true },
        us_domestic_wire: { requested: true },
      },
    },
  },
  { stripeAccount: account.id }
);

Money Movement Quick Reference

Direction Method Object Speed Use Case
Inbound ACH pull InboundTransfer 2-3 days Customer funds own account
Inbound ACH push ReceivedCredit When received External party sends funds
Inbound Wire push ReceivedCredit Same day External party sends funds
Inbound Stripe balance Payout 2 hours Payments revenue to FA
Outbound ACH (third party) OutboundPayment 1-2 days Pay vendors/customers
Outbound Wire (third party) OutboundPayment Same day Urgent vendor payments
Outbound ACH (self) OutboundTransfer 1-2 days Withdraw to own bank
Outbound Wire (self) OutboundTransfer Same day Urgent withdrawal

Send Money (Outbound Payment)

const payment = await stripe.treasury.outboundPayments.create(
  {
    financial_account: 'fa_xxx',
    amount: 50000,
    currency: 'usd',
    destination_payment_method: 'pm_xxx',
    description: 'Invoice #1234 payment',
  },
  { stripeAccount: 'acct_xxx' }
);

Card Issuing Quick Start

// Create cardholder
const cardholder = await stripe.issuing.cardholders.create(
  {
    name: 'Jenny Rosen',
    email: 'jenny@example.com',
    type: 'individual',
    billing: {
      address: { line1: '123 Main St', city: 'SF', state: 'CA', postal_code: '94111', country: 'US' },
    },
  },
  { stripeAccount: 'acct_xxx' }
);

// Create virtual card with spending controls
const card = await stripe.issuing.cards.create(
  {
    cardholder: cardholder.id,
    currency: 'usd',
    type: 'virtual',
    spending_controls: {
      spending_limits: [{ amount: 100000, interval: 'monthly' }],
    },
  },
  { stripeAccount: 'acct_xxx' }
);

Critical Webhooks

Event Action
treasury.financial_account.features_status_updated Check feature activation
treasury.inbound_transfer.succeeded Credit user balance in your app
treasury.outbound_payment.posted Mark payment as sent
treasury.outbound_payment.returned Handle return, restore funds
treasury.received_credit.created Handle incoming funds
treasury.received_debit.created Alert user of external debits
issuing_authorization.request Real-time approve/decline (2s timeout)
issuing_authorization.created Monitor webhook health
issuing_card.created Provision card in your UI

Compliance Quick Reference

DO DO NOT
"Financial account" "Bank account"
"Eligible for FDIC pass-through insurance" "FDIC insured"
Disclose bank partner name Hide bank partner name
Present ToS agreements separately Bundle all agreements
Retain records for 5 years Delete records early
Submit marketing for pre-approval Publish unapproved materials

References

  • references/financial-accounts.md - Account lifecycle, features, balances, closing accounts
  • references/money-movement.md - ACH, wire, internal transfers, test helpers, timing reference
  • references/financial-addresses.md - ABA routing, receiving funds, address lifecycle, bank details UI
  • references/issuing.md - Card creation, spending controls, real-time authorization, disputes, digital wallets
  • references/crypto-onramp.md - Fiat-to-crypto widget, session management, React component
  • references/compliance.md - KYC, FDIC insurance, marketing rules, record keeping, legal agreements
  • references/transactions.md - Transaction and TransactionEntry objects, reconciliation, balance reporting
Weekly Installs
3
First Seen
Feb 24, 2026
Installed on
gemini-cli3
codex3
cursor3
opencode3
qoder2
codebuddy2