Stripe: Create a Transaction from a Calculation
Stripe tax.postTaxTransactionsCreateFromCalculation: arguments, response, policy and SDK examples.
← Tax operations · Get started
Operation stripe.posttaxtransactionscreatefromcalculation
Provider route: POST /v1/tax/transactions/create_from_calculation. Alter supplies the connection’s credentials and routing.
Call through Alter
Section titled “Call through Alter”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"]["postTaxTransactionsCreateFromCalculation"]>[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.postTaxTransactionsCreateFromCalculation(input); const result = await call.wait(); return result.bodyJson(); } finally { await app.close(); }}import osfrom alter_sdk import Appfrom 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_from_calculation(arguments) result = await call.wait() return result.body_json()| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
headers | object | Optional | Additional keys: not allowed |
headers.Idempotency-Key | string | Optional | Minimum length: 1 Maximum length: 255 |
body | object | Required within parent | Additional keys: not allowed |
body.calculation | string | Required within parent | Tax Calculation ID to be used as input when creating the transaction. Maximum length: 5000 |
body.expand | array | Optional | Specifies which fields in the response should be expanded. |
body.expand[] | string | Each item | Maximum length: 5000 |
body.metadata | object | Optional | Set 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.* | string | Additional keys | |
body.posted_at | integer | Optional | The Unix timestamp representing when the tax liability is assumed or reduced, which determines the liability posting period and handling in tax liability reports. The timestamp must fall within the `tax_date` and the current time, unless the `tax_date` is scheduled in advance. Defaults to the current time. Format: unix-time |
body.reference | string | Required within parent | A custom order or sale identifier, such as ‘myOrder_123’. Must be unique across all transactions, including reversals. Maximum length: 500 |
Response
Section titled “Response”Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | Model | Root | Expand Create a reversal Transaction — response body |
Referenced models: Create a reversal Transaction — response body
Schemas
Section titled “Schemas”6 more schemas are linked from the tables above, on the schema pages.
Create a reversal Transaction — response body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | A 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) |
created | JSON | Required within parent | |
created (anyOf 1) | integer | Alternative | Time at which the object was created. Measured in seconds since the Unix epoch. Format: unix-time |
created (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
currency | string | Required within parent | Three-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 |
customer | JSON | Optional | |
customer (anyOf 1) | string | Alternative | The ID of an existing [Customer](https://docs.stripe.com/api/customers/object) used for the resource. Maximum length: 5000 |
customer (anyOf 2) | null | Alternative | |
customer_details | Model | Required within parent | Expand Create a Calculation — response body — customer details |
id | string | Required within parent | Unique identifier for the transaction. Maximum length: 5000 |
line_items | JSON | Optional | |
line_items (anyOf 1) | object | Alternative | The tax collected or refunded, by line item. |
line_items (anyOf 1).data | array | Required within parent | Details about each object. |
line_items (anyOf 1).data[] | Model | Each item | Expand Retrieve a Transaction's line items — response body — data item |
line_items (anyOf 1).has_more | boolean | Required within parent | True if this list has another page of items after this one that can be fetched. |
line_items (anyOf 1).object | string | Required within parent | String 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).url | string | Required within parent | The URL where this list can be accessed. Maximum length: 5000 Pattern: ^/v1/tax/transactions/[^/]+/line_items |
line_items (anyOf 2) | null | Alternative | |
livemode | boolean | Required within parent | If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`. |
metadata | JSON | Optional | |
metadata (anyOf 1) | object | Alternative | Set 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).* | string | Additional keys | Maximum length: 500 |
metadata (anyOf 2) | null | Alternative | |
object | string | Required within parent | String representing the object's type. Objects of the same type share the same value. Known values: tax.transaction |
posted_at | JSON | Required within parent | |
posted_at (anyOf 1) | integer | Alternative | The Unix timestamp representing when the tax liability is assumed or reduced. Format: unix-time |
posted_at (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
reference | string | Required within parent | A custom unique identifier, such as 'myOrder_123'. Maximum length: 5000 |
reversal | JSON | Optional | |
reversal (anyOf 1) | JSON | Alternative | If `type=reversal`, contains information about what was reversed. |
reversal (anyOf 1) (anyOf 1) | Model | Alternative | Expand Create a reversal Transaction — response body — reversal value original transaction |
reversal (anyOf 2) | null | Alternative | |
ship_from_details | JSON | Optional | |
ship_from_details (anyOf 1) | JSON | Alternative | The details of the ship from location, such as the address. |
ship_from_details (anyOf 1) (anyOf 1) | Model | Alternative | Expand Create a Calculation — response body — ship from details value address |
ship_from_details (anyOf 2) | null | Alternative | |
shipping_cost | JSON | Optional | |
shipping_cost (anyOf 1) | JSON | Alternative | The shipping cost details for the transaction. |
shipping_cost (anyOf 1) (anyOf 1) | Model | Alternative | Expand Create a reversal Transaction — response body — shipping_cost / The shipping cost details for the transaction / tax_behavior: exclusive, inclusive |
shipping_cost (anyOf 2) | null | Alternative | |
tax_date | JSON | Required within parent | |
tax_date (anyOf 1) | integer | Alternative | The 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) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
type | string | Required within parent | If `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
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | A Tax Transaction Line Item represents an individual item in a Tax Transaction. |
amount | JSON | Required within parent | |
amount (anyOf 1) | integer | Alternative | The 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) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
amount_tax | JSON | Required within parent | |
amount_tax (anyOf 1) | integer | Alternative | The amount of tax calculated for this line item, in the [smallest currency unit](https://docs.stripe.com/currencies#minor-units). |
amount_tax (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
id | string | Required within parent | Unique identifier for the object. Maximum length: 5000 |
livemode | boolean | Required within parent | If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`. |
metadata | JSON | Optional | |
metadata (anyOf 1) | object | Alternative | Set 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).* | string | Additional keys | Maximum length: 500 |
metadata (anyOf 2) | null | Alternative | |
object | string | Required within parent | String representing the object's type. Objects of the same type share the same value. Known values: tax.transaction_line_item |
product | JSON | Optional | |
product (anyOf 1) | string | Alternative | The ID of an existing [Product](https://docs.stripe.com/api/products/object). Maximum length: 5000 |
product (anyOf 2) | null | Alternative | |
quantity | JSON | Required within parent | |
quantity (anyOf 1) | integer | Alternative | The number of units of the item being purchased. For reversals, this is the quantity reversed. |
quantity (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
reference | string | Required within parent | A custom identifier for this line item in the transaction. Maximum length: 5000 |
reversal | JSON | Optional | |
reversal (anyOf 1) | JSON | Alternative | If `type=reversal`, contains information about what was reversed. |
reversal (anyOf 1) (anyOf 1) | Model | Alternative | Expand Retrieve a Transaction's line items — response body — data item reversal value original line item |
reversal (anyOf 2) | null | Alternative | |
tax_behavior | string | Required within parent | Specifies whether the `amount` includes taxes. If `tax_behavior=inclusive`, then the amount includes taxes. Known values: exclusive, inclusive |
tax_code | string | Required within parent | The [tax code](https://docs.stripe.com/tax/tax-categories) ID used for this resource. Maximum length: 5000 |
type | string | Required within parent | If `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
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
address | Model | Required within parent | Expand Create a Calculation — response body — ship from details value address address |
Referenced models: Create a Calculation — response body — ship from details value address address
Policy, approvals and errors
Section titled “Policy, approvals and errors”SDK function policy ID: stripe.posttaxtransactionscreatefromcalculation. Catalog operation: PostTaxTransactionsCreateFromCalculation. 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"}