Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
Start an integration
Products
Global Payouts
Capital
Issuing cards
Treasury
    Overview
    How Treasury works
    Eligibility requirements
    Get Started
    Get started with API access
    Onboarding users
    Managing fraud
    Marketing and compliance guidelines
    Sample integrations
    Use Treasury to set up financial accounts and cards
    Use Treasury to move money
    Issuing and Treasury sample application
    Stripe Issuing and Treasury
    Webhooks for Stripe Issuing and Stripe Treasury
    Working with Stripe Issuing cards
    Account management
    Stripe Treasury accounts structure
    Working with connected accounts
    Working with financial accounts
    Financial account features
    Platform financial accounts
    Working with balances and transactions
    Moving money
    Payouts and top-ups from Stripe Payments
    Working with SetupIntents, PaymentMethods, and BankAccounts
    Moving money into financial accounts
    Moving money out of financial accounts
      Moving money with Treasury using OutboundTransfer objects
      Moving money with Treasury using OutboundPayment objects
      Moving money with Treasury using ReceivedDebit objects
      Moving money with Treasury using DebitReversal objects
    Money movement timelines
    Bank partners
    Fifth Third Bank overview
    Get started with Fifth Third Bank
Manage money
HomeMoney managementTreasuryMoving money out of financial accounts

Moving money with Treasury using ReceivedDebit objects

Learn how external account holders can pull funds from a Treasury financial account.

Copy page

Certain processes initiated outside of Stripe Treasury result in money being pulled out of a Treasury financial account. This includes:

  • Spending money on a card through Stripe Issuing
  • Pulling money out of a financial account into an external account using ACH debits
  • Pulling money out of a platform’s financial account into that platform’s Stripe Payments balance using top-ups

These money movements result in the creation of ReceivedDebit objects. You don’t create ReceivedDebits directly, rather you observe ReceivedDebit object creation with webhooks. If there are insufficient funds in the account, the ReceivedDebit fails in most cases.

Retrieve a ReceivedDebit

Use GET /v1/treasury/received_debits/{{RECEIVED_DEBIT_ID}} to retrieve the ReceivedDebit with the associated ID.

Command Line
cURL
curl https://api.stripe.com/v1/treasury/received_debits/{{RECEIVED_DEBIT_ID}} \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Account:
{{CONNECTED_ACCOUNT_ID}}
"

If successful, the response returns the ReceivedDebit object with the associated ID. Some of the parameters in the response have additional details that are only returned when you add them as values to the expand[] parameter. The fields that you can expand have an “Expandable” comment in the following response example. See Expanding Responses to learn more about expanding object responses.

JSON (commented)
{ "id": "{{RECEIVED_DEBIT_ID}}", "object": "received_debit", "livemode": Boolean, "created": Timestamp, // The FinancialAccount funds have been pulled from "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", // Expandable "amount": 1000, "currency": "usd", "description": "Testing",

List ReceivedDebits

Use GET /v1/treasury/received_debits to retrieve all ReceivedDebits for a financial account. You must specify a financial account ID for the financial_account parameter. You can filter the results by the standard list parameters or by status.

{ // Standard list parameters "limit", "starting_after", "ending_before", // Filter by FinancialAccount (Required) "financial_account": "{{FINANCIAL_ACCOUNT_ID}}", // Filter by status "status": "succeeded" | "failed" }

The following request retrieves the last successful ReceivedDebit object that occurred before the provided ReceivedDebit for the financial account identified.

Command Line
cURL
curl -G https://api.stripe.com/v1/treasury/received_debits \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -H "Stripe-Account:
{{CONNECTED_ACCOUNT_ID}}
"
\ -d financial_account=
{{FINANCIAL_ACCOUNT_ID}}
\ -d limit=1 \ -d ending_before={{RECEIVED_DEBIT_ID}}

Test ReceivedDebits

Stripe Treasury provides test endpoints for ReceivedDebit objects. In testing environments, use POST /v1/test_helpers/treasury/received_debits to simulate ReceivedDebit creation. You can’t create ReceivedDebit objects in live mode, so using this endpoint enables you to test the flow of funds when a third party initiates creation of a ReceivedDebit. Set financial_account to the ID of the financial account to send money from. Set network to ach and optionally provide the ABA financial address details for the source_details.aba parameter. As in live mode, test ReceivedDebits fail if there are insufficient funds available.

ReceivedDebit webhooks

Stripe emits the following ReceivedDebit events to your webhook endpoint:

  • treasury.received_debit.created on ReceivedDebit creation.
Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc