Legacy
Moving money using CreditReversal objects Legacy
Learn how you can return funds from received credits that add money to your financial account.
Legacy integration
The v1 version of Treasury for platforms is a legacy integration that doesn’t support many of the features introduced in Treasury for platforms v2. Don’t build a new v1 integration.
Reversing a ReceivedCredit creates a CreditReversal. You can reverse ReceivedCredits only in some scenarios (detailed in the following table). Whether you can reverse a ReceivedCredit depends on the network and source flow.
The reversal_details sub-hash on the ReceivedCredit object can have the following combination of values, which determines if you can reverse the ReceivedCredit.
| the related setting the related setting | the related setting (the related setting the related setting) | the related setting the related setting |
|---|---|---|
source_flow_restricted | null | A Stripe network ReceivedCredit that’s the result of a flow other than an OutboundPayment. Stripe restricts users from reversing such ReceivedCredits. |
network_restricted | null | Network constraints prevent Stripe from allowing reversal on some ReceivedCredits, such as a ReceivedCredit from a wire transfer or a Real-Time Payments (RTP) transfer. |
null | {{the related setting}} | A ReceivedCredit, which is reversible, but only until the timestamp in deadline. ACH ReceivedCredits have a deadline that determines how long you have to reverse them. |
deadline_passed | {{the related setting}} | A ReceivedCredit that’s reversible before the timestamp in deadline, but is no longer reversible because the deadline has passed. ACH ReceivedCredits have a limited time of when they’re reversible after they’re created. |
already_reversed | null | A ReceivedCredit that’s already reversed has this restricted_reason. It might have a non-null deadline value. |
null | null | You can reverse ReceivedCredits anytime if they have null for both restricted_reason and deadline. |
Create a CreditReversal
Use POST /the relevant part of the product to create a CreditReversal. Set the received_credit parameter in the body of the request to the value of the ReceivedCredit ID to reverse.
Note
You can’t update CreditReversals, so you must set any optional metadata on creation.
The following request creates a CreditReversal based on the ReceivedCredit ID value on the required received_credit parameter. The request also sets an optional metadata value.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
If successful, the response returns the new CreditReversal object.
{
"id": "{{CREDIT_REVERSAL_ID}}",
"object": "credit_reversal",
"amount": 1000,
"currency": "usd",
"financial_account": "{{FINANCIAL_ACCOUNT_ID}}",
"hosted_regulatory_receipt_url": "https://payments.stripe.com/regulatory-receipt/{{URL_ID}}",
"livemode": false,
"metadata": {
"csr_id": "CSR-12"
Retrieve a CreditReversal
Use GET /the relevant part of the product/{{the related setting}} to retrieve the CreditReversal with the associated ID.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
The response returns the specific CreditReversal object.
Select a language
JSON (commented)
JSON
No results
{
"id": "{{CREDIT_REVERSAL_ID}}",
"object": "credit_reversal",
"livemode": "{{Boolean}}",
"created": "{{Timestamp}}",
"financial_account": "{{FINANCIAL_ACCOUNT_ID}}",
"amount": 1000,
"currency": "usd",
// The ReceivedCredit that was reversed
"received_credit": "{{RECEIVED_CREDIT_ID}}",
// The rails used to reversed. Always the same as that of the ReceivedCredit
"network": "ach",
"status": "processing" | "posted",
"status_transitions": {
"posted_at": null | "{{Timestamp}}"
},
// Transaction representing balance impact of the CreditReversal
"transaction": "{{TRANSACTION_ID}}",
// A unique, Stripe-hosted direct link to the regulatory receipt for the CreditReversal
"hosted_regulatory_receipt_url": "{{Url}}",
// A map of String-String intended for users to use custom data
"metadata": {}
}
List CreditReversals
Use GET /the relevant part of the product to retrieve a list of CreditReversals for the financial account with the ID provided in the required financial_account parameter. You can filter the list by standard list parameters, status, or by ReceivedCredit ID using the received_credit parameter.
{
// Standard list parameters
"limit", "starting_after", "ending_before",
// Filter by status
"status": "processing" | "posted",
// Filter by FinancialAccount (Required)
"financial_account": "{{FINANCIAL_ACCOUNT_ID}}",
// Filter by ReceivedCredit
"received_credit": "{{RECEIVED_CREDIT_ID}}"
}
The following request returns the three most recent credit reversals with a status of posted for the specified financial account.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
If successful, the response returns the relevant list of CreditReversal objects.
Test CreditReversals
To test CreditReversals, you must first create test ReceivedCredits. Then use POST /the relevant part of the product and specify the test ReceivedCredit ID in the received_credit parameter to create a test CreditReversal.
CreditReversal webhooks
Stripe emits the following CreditReversal events to your webhook endpoint:
- treasury. credit _ reversal. created on CreditReversal creation.
- treasury. credit _ reversal. posted when the CreditReversal posts.
