Skip to content

Stripe: Create a reversal Transaction

Stripe tax.postTaxTransactionsCreateReversal: arguments, response, policy and SDK examples.

← Tax operations · Get started

Operation stripe.posttaxtransactionscreatereversal

Provider route: POST /v1/tax/transactions/create_reversal. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["tax"]["postTaxTransactionsCreateReversal"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.tax.postTaxTransactionsCreateReversal(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_stripe import StripeIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.tax.post_tax_transactions_create_reversal(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectRequired within parentAdditional keys: not allowed
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.flat_amountintegerOptionalA flat amount to reverse across the entire transaction, in the [smallest currency unit](https://docs.stripe.com/currencies#minor-units) in negative. This value represents the total amount to refund from the transaction, including taxes.
body.line_itemsarrayOptionalThe line item amounts to reverse.
body.line_items[]objectEach item
body.line_items[].amountintegerRequired within parent
body.line_items[].amount_taxintegerRequired within parent
body.line_items[].metadataobjectOptionalAdditional keys: see wildcard field
body.line_items[].metadata.*stringAdditional keys
body.line_items[].original_line_itemstringRequired within parentMaximum length: 5000
body.line_items[].quantityintegerOptional
body.line_items[].referencestringRequired within parentMaximum length: 500
body.metadataobjectOptionalSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
Additional keys: see wildcard field
body.metadata.*stringAdditional keys
body.modestringRequired within parentIf `partial`, the provided line item or shipping cost amounts are reversed. If `full`, the original transaction is fully reversed.
One of: full, partial
body.original_transactionstringRequired within parentThe ID of the Transaction to partially or fully reverse.
Maximum length: 5000
body.referencestringRequired within parentA custom identifier for this reversal, such as `myOrder_123-refund_1`, which must be unique across all transactions. The reference helps identify this reversal transaction in exported [tax reports](https://docs.stripe.com/tax/reports).
Maximum length: 500
body.shipping_costobjectOptionalThe shipping cost to reverse.
body.shipping_cost.amountintegerRequired within parent
body.shipping_cost.amount_taxintegerRequired within parent

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Create a reversal Transaction — response body

Referenced models: Create a reversal Transaction — response body

6 more schemas are linked from the tables above, on the schema pages.

Create a reversal Transaction — response body
FieldTypePresenceDescription and constraints
$objectRootA Tax Transaction records the tax collected from or refunded to your customer.

Related guide: [Calculate tax in your custom payment flow](https://docs.stripe.com/tax/custom#tax-transaction)
createdJSONRequired within parent
created (anyOf 1)integerAlternativeTime at which the object was created. Measured in seconds since the Unix epoch.
Format: unix-time
created (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
currencystringRequired within parentThree-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
Maximum length: 5000
customerJSONOptional
customer (anyOf 1)stringAlternativeThe ID of an existing [Customer](https://docs.stripe.com/api/customers/object) used for the resource.
Maximum length: 5000
customer (anyOf 2)nullAlternative
customer_detailsModelRequired within parentExpand Create a Calculation — response body — customer details
idstringRequired within parentUnique identifier for the transaction.
Maximum length: 5000
line_itemsJSONOptional
line_items (anyOf 1)objectAlternativeThe tax collected or refunded, by line item.
line_items (anyOf 1).dataarrayRequired within parentDetails about each object.
line_items (anyOf 1).data[]ModelEach itemExpand Retrieve a Transaction's line items — response body — data item
line_items (anyOf 1).has_morebooleanRequired within parentTrue if this list has another page of items after this one that can be fetched.
line_items (anyOf 1).objectstringRequired within parentString representing the object's type. Objects of the same type share the same value. Always has the value `list`.
Known values: list
line_items (anyOf 1).urlstringRequired within parentThe URL where this list can be accessed.
Maximum length: 5000
Pattern: ^/v1/tax/transactions/[^/]+/line_items
line_items (anyOf 2)nullAlternative
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
metadataJSONOptional
metadata (anyOf 1)objectAlternativeSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
Additional keys: see wildcard field
metadata (anyOf 1).*stringAdditional keysMaximum length: 500
metadata (anyOf 2)nullAlternative
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: tax.transaction
posted_atJSONRequired within parent
posted_at (anyOf 1)integerAlternativeThe Unix timestamp representing when the tax liability is assumed or reduced.
Format: unix-time
posted_at (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
referencestringRequired within parentA custom unique identifier, such as 'myOrder_123'.
Maximum length: 5000
reversalJSONOptional
reversal (anyOf 1)JSONAlternativeIf `type=reversal`, contains information about what was reversed.
reversal (anyOf 1) (anyOf 1)ModelAlternativeExpand Create a reversal Transaction — response body — reversal value original transaction
reversal (anyOf 2)nullAlternative
ship_from_detailsJSONOptional
ship_from_details (anyOf 1)JSONAlternativeThe details of the ship from location, such as the address.
ship_from_details (anyOf 1) (anyOf 1)ModelAlternativeExpand Create a Calculation — response body — ship from details value address
ship_from_details (anyOf 2)nullAlternative
shipping_costJSONOptional
shipping_cost (anyOf 1)JSONAlternativeThe shipping cost details for the transaction.
shipping_cost (anyOf 1) (anyOf 1)ModelAlternativeExpand Create a reversal Transaction — response body — shipping_cost / The shipping cost details for the transaction / tax_behavior: exclusive, inclusive
shipping_cost (anyOf 2)nullAlternative
tax_dateJSONRequired within parent
tax_date (anyOf 1)integerAlternativeThe calculation uses the tax rules and rates that are in effect at this timestamp. You can use a date up to 31 days in the past or up to 31 days in the future. If you use a future date, Stripe doesn't guarantee that the expected tax rules and rate being used match the actual rules and rate that will be in effect on that date. We deploy tax changes before their effective date, but not within a fixed window.
Format: unix-time
tax_date (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
typestringRequired within parentIf `reversal`, this transaction reverses an earlier transaction.
Known values: reversal, transaction

Referenced models: Retrieve a Transaction's line items — response body — data item, Create a Calculation — response body — customer details, Create a Calculation — response body — ship from details value address, Create a reversal Transaction — response body — reversal value original transaction, Create a reversal Transaction — response body — shipping_cost / The shipping cost details for the transaction / tax_behavior: exclusive, inclusive

Retrieve a Transaction's line items — response body — data item
FieldTypePresenceDescription and constraints
$objectRootA Tax Transaction Line Item represents an individual item in a Tax Transaction.
amountJSONRequired within parent
amount (anyOf 1)integerAlternativeThe line item amount in the [smallest currency unit](https://docs.stripe.com/currencies#minor-units). If `tax_behavior=inclusive`, then this amount includes taxes. Otherwise, taxes were calculated on top of this amount.
amount (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
amount_taxJSONRequired within parent
amount_tax (anyOf 1)integerAlternativeThe amount of tax calculated for this line item, in the [smallest currency unit](https://docs.stripe.com/currencies#minor-units).
amount_tax (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
metadataJSONOptional
metadata (anyOf 1)objectAlternativeSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
Additional keys: see wildcard field
metadata (anyOf 1).*stringAdditional keysMaximum length: 500
metadata (anyOf 2)nullAlternative
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: tax.transaction_line_item
productJSONOptional
product (anyOf 1)stringAlternativeThe ID of an existing [Product](https://docs.stripe.com/api/products/object).
Maximum length: 5000
product (anyOf 2)nullAlternative
quantityJSONRequired within parent
quantity (anyOf 1)integerAlternativeThe number of units of the item being purchased. For reversals, this is the quantity reversed.
quantity (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
referencestringRequired within parentA custom identifier for this line item in the transaction.
Maximum length: 5000
reversalJSONOptional
reversal (anyOf 1)JSONAlternativeIf `type=reversal`, contains information about what was reversed.
reversal (anyOf 1) (anyOf 1)ModelAlternativeExpand Retrieve a Transaction's line items — response body — data item reversal value original line item
reversal (anyOf 2)nullAlternative
tax_behaviorstringRequired within parentSpecifies whether the `amount` includes taxes. If `tax_behavior=inclusive`, then the amount includes taxes.
Known values: exclusive, inclusive
tax_codestringRequired within parentThe [tax code](https://docs.stripe.com/tax/tax-categories) ID used for this resource.
Maximum length: 5000
typestringRequired within parentIf `reversal`, this line item reverses an earlier transaction.
Known values: reversal, transaction

Referenced models: Retrieve a Transaction's line items — response body — data item reversal value original line item

Create a Calculation — response body — ship from details value address
FieldTypePresenceDescription and constraints
$objectRoot
addressModelRequired within parentExpand Create a Calculation — response body — ship from details value address address

Referenced models: Create a Calculation — response body — ship from details value address address

SDK function policy ID: stripe.posttaxtransactionscreatereversal. Catalog operation: PostTaxTransactionsCreateReversal. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"Stripe-Version": "2026-09-30.endive"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.