stripe-treasury

Implement Stripe Treasury for embedded financial services: financial accounts, money movement, card issuing, and crypto onramp. Use when: (1) Building banking-as-a-service (BaaS) features, (2) Creating stored-value accounts for users, (3) Moving money via ACH, wire, or internal transfers, (4) Issuing virtual or physical cards funded from financial accounts, (5) Integrating crypto on-ramp for fiat-to-crypto conversion, (6) Managing financial addresses for receiving funds, (7) Building wallet or ledger functionality. Triggers on: treasury, financial account, BaaS, banking as a service, card issuing, issuing, crypto onramp, ACH transfer, wire transfer, stored value, wallet, financial address, embedded finance.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "stripe-treasury" with this command: npx skills add zef-computers/drivers/zef-computers-drivers-stripe-treasury

Stripe Treasury

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

Rule Priority Table

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

DirectionMethodObjectSpeedUse Case
InboundACH pullInboundTransfer2-3 daysCustomer funds own account
InboundACH pushReceivedCreditWhen receivedExternal party sends funds
InboundWire pushReceivedCreditSame dayExternal party sends funds
InboundStripe balancePayout2 hoursPayments revenue to FA
OutboundACH (third party)OutboundPayment1-2 daysPay vendors/customers
OutboundWire (third party)OutboundPaymentSame dayUrgent vendor payments
OutboundACH (self)OutboundTransfer1-2 daysWithdraw to own bank
OutboundWire (self)OutboundTransferSame dayUrgent 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

EventAction
treasury.financial_account.features_status_updatedCheck feature activation
treasury.inbound_transfer.succeededCredit user balance in your app
treasury.outbound_payment.postedMark payment as sent
treasury.outbound_payment.returnedHandle return, restore funds
treasury.received_credit.createdHandle incoming funds
treasury.received_debit.createdAlert user of external debits
issuing_authorization.requestReal-time approve/decline (2s timeout)
issuing_authorization.createdMonitor webhook health
issuing_card.createdProvision card in your UI

Compliance Quick Reference

DODO NOT
"Financial account""Bank account"
"Eligible for FDIC pass-through insurance""FDIC insured"
Disclose bank partner nameHide bank partner name
Present ToS agreements separatelyBundle all agreements
Retain records for 5 yearsDelete records early
Submit marketing for pre-approvalPublish 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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

stripe-connect

No summary provided by upstream source.

Repository SourceNeeds Review
General

stripe-expert

No summary provided by upstream source.

Repository SourceNeeds Review
General

stripe-revenue

No summary provided by upstream source.

Repository SourceNeeds Review
General

stripe-payments

No summary provided by upstream source.

Repository SourceNeeds Review