Skip to content

Stripe: Update an invoice's line item

Stripe invoices.postInvoicesInvoiceLinesLineItemId: arguments, response, policy and SDK examples.

← Invoices operations · Get started

Operation stripe.postinvoicesinvoicelineslineitemid

Provider route: POST /v1/invoices/{invoice}/lines/{line_item_id}. 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["invoices"]["postInvoicesInvoiceLinesLineItemId"]>[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.invoices.postInvoicesInvoiceLinesLineItemId(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.invoices.post_invoices_invoice_lines_line_item_id(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
pathobjectRequired within parentAdditional keys: not allowed
path.invoicestringRequired within parentMaximum length: 5000
path.line_item_idstringRequired within parentMaximum length: 5000
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectOptionalAdditional keys: not allowed
body.amountintegerOptionalThe integer amount in cents (or local equivalent) of the charge to be applied to the upcoming invoice. If you want to apply a credit to the customer’s account, pass a negative amount.
body.descriptionstringOptionalAn arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking.
Maximum length: 5000
body.discountablebooleanOptionalControls whether discounts apply to this line item. Defaults to false for prorations or negative line items, and true for all other line items. Cannot be set to true for prorations.
body.discountsJSONOptionalThe coupons, promotion codes & existing discounts which apply to the line item. Item discounts are applied before invoice discounts. Pass an empty string to remove previously-defined discounts.
body.discounts (anyOf 1)arrayAlternative
body.discounts (anyOf 1)[]objectEach item
body.discounts (anyOf 1)[].couponstringOptionalMaximum length: 5000
body.discounts (anyOf 1)[].discountstringOptionalMaximum length: 5000
body.discounts (anyOf 1)[].promotion_codestringOptionalMaximum length: 5000
body.discounts (anyOf 2)stringAlternativeOne of:
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.metadataJSONOptionalSet 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`. For [type=subscription](/api/invoices/line_item) line items, the incoming metadata specified on the request is directly used to set this value, in contrast to [type=invoiceitem](/api/invoices/line_item) line items, where any existing metadata on the invoice line is merged with the incoming data.
body.metadata (anyOf 1)objectAlternativeAdditional keys: see wildcard field
body.metadata (anyOf 1).*stringAdditional keys
body.metadata (anyOf 2)stringAlternativeOne of:
body.periodModelOptionalExpand Create an invoice item — request body — body period
body.price_dataobjectOptionalData used to generate a new [Price](https://docs.stripe.com/api/prices) object inline.
body.price_data.currencystringRequired within parentFormat: currency
body.price_data.productstringOptionalMaximum length: 5000
body.price_data.product_dataModelOptionalExpand Update an invoice’s line item — request body — body price data product data
body.price_data.tax_behaviorstringOptionalOne of: exclusive, inclusive, unspecified
body.price_data.unit_amountintegerOptional
body.price_data.unit_amount_decimalstringOptionalFormat: decimal
body.pricingobjectOptionalThe pricing information for the invoice item.
body.pricing.pricestringOptionalMaximum length: 5000
body.quantityintegerOptionalNon-negative integer. The quantity of units for the line item. Use `quantity_decimal` instead to provide decimal precision. This field will be deprecated in favor of `quantity_decimal` in a future version.
body.quantity_decimalstringOptionalNon-negative decimal with at most 12 decimal places. The quantity of units for the line item.
Format: decimal
body.tax_amountsJSONOptionalA list of up to 20 tax amounts for this line item. This can be useful if you calculate taxes on your own or use a third-party to calculate them. You cannot set tax amounts if any line item has [tax_rates](https://docs.stripe.com/api/invoices/line_item#invoice_line_item_object-tax_rates) or if the invoice has [default_tax_rates](https://docs.stripe.com/api/invoices/object#invoice_object-default_tax_rates) or uses [automatic tax](https://docs.stripe.com/tax/invoicing). Pass an empty string to remove previously defined tax amounts.
body.tax_amounts (anyOf 1)arrayAlternative
body.tax_amounts (anyOf 1)[]ModelEach itemExpand Update an invoice’s line item — request body — body tax amounts array item
body.tax_amounts (anyOf 2)stringAlternativeOne of:
body.tax_ratesJSONOptionalThe tax rates which apply to the line item. When set, the `default_tax_rates` on the invoice do not apply to this line item. Pass an empty string to remove previously-defined tax rates.
body.tax_rates (anyOf 1)arrayAlternative
body.tax_rates (anyOf 1)[]stringEach itemMaximum length: 5000
body.tax_rates (anyOf 2)stringAlternativeOne of:

Referenced models: Create an invoice item — request body — body period, Update an invoice’s line item — request body — body price data product data, Update an invoice’s line item — request body — body tax amounts array item

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

FieldTypePresenceDescription and constraints
$ModelRootExpand Update an invoice’s line item — response body

Referenced models: Update an invoice’s line item — response body

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

Update an invoice's line item — response body
FieldTypePresenceDescription and constraints
$objectRootInvoice Line Items represent the individual lines within an [invoice](https://docs.stripe.com/api/invoices) and only exist within the context of an invoice.

Each line item is backed by either an [invoice item](https://docs.stripe.com/api/invoiceitems) or a [subscription item](https://docs.stripe.com/api/subscription_items).
amountJSONRequired within parent
amount (anyOf 1)integerAlternativeThe amount, in cents (or local equivalent).
amount (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).
Format: currency
descriptionJSONOptional
description (anyOf 1)stringAlternativeAn arbitrary string attached to the object. Often useful for displaying to users.
Maximum length: 5000
description (anyOf 2)nullAlternative
discount_amountsJSONOptional
discount_amounts (anyOf 1)arrayAlternativeThe amount of discount calculated per discount for this line item.
discount_amounts (anyOf 1)[]ModelEach itemExpand Void a credit note — response body — discount amounts item
discount_amounts (anyOf 2)nullAlternative
discountablebooleanRequired within parentIf true, discounts will apply to this line item. Always false for prorations.
discountsarrayRequired within parentThe discounts applied to the invoice line item. Line item discounts are applied before invoice discounts. Use `expand[]=discounts` to expand each discount.
discounts[]JSONEach item
discounts[] (anyOf 1)stringAlternativeMaximum length: 5000
discounts[] (anyOf 2)ModelAlternativeExpand Get Customers Customer Discount — response body
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
invoiceJSONOptional
invoice (anyOf 1)stringAlternativeThe ID of the invoice that contains this line item.
Maximum length: 5000
invoice (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`.
metadataobjectRequired within parentSet 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. Note that for line items with `type=subscription`, `metadata` reflects the current metadata from the subscription associated with the line item, unless the invoice line was directly updated with different metadata after creation.
Additional keys: see wildcard field
metadata.*stringAdditional keysMaximum length: 500
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: line_item
parentJSONOptional
parent (anyOf 1)JSONAlternativeThe parent that generated this line item.
parent (anyOf 1) (anyOf 1)ModelAlternativeExpand Update an invoice's line item — response body — parent / The parent that generated this line item / type: invoice item details, subscription item details
parent (anyOf 2)nullAlternative
periodModelRequired within parentExpand Create an invoice item — response body — period
pretax_credit_amountsJSONOptional
pretax_credit_amounts (anyOf 1)arrayAlternativeContains pretax credit amounts (ex: discount, credit grants, etc) that apply to this line item.
pretax_credit_amounts (anyOf 1)[]ModelEach itemExpand Update an invoice's line item — response body — pretax credit amounts array item
pretax_credit_amounts (anyOf 2)nullAlternative
pricingJSONOptional
pricing (anyOf 1)JSONAlternativeThe pricing information of the line item.
pricing (anyOf 1) (anyOf 1)ModelAlternativeExpand Update an invoice's line item — response body — pricing / The pricing information of the line item / type: price details
pricing (anyOf 2)nullAlternative
quantityJSONOptional
quantity (anyOf 1)JSONAlternative
quantity (anyOf 1) (anyOf 1)integerAlternativeQuantity of units for the invoice line item in integer format, with any decimal precision truncated. For the line item's full-precision decimal quantity, use `quantity_decimal`. This field will be deprecated in favor of `quantity_decimal` in a future version. If the line item is a proration or subscription, the quantity of the subscription that the proration was computed for.
quantity (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
quantity (anyOf 2)nullAlternative
quantity_decimalJSONOptional
quantity_decimal (anyOf 1)stringAlternativeNon-negative decimal with at most 12 decimal places. The quantity of units for the line item.
Format: decimal
quantity_decimal (anyOf 2)nullAlternative
subscriptionJSONOptional
subscription (anyOf 1)JSONAlternative
subscription (anyOf 1) (anyOf 1)stringAlternativeMaximum length: 5000
subscription (anyOf 1) (anyOf 2)ModelAlternativeExpand Pause a subscription — response body
subscription (anyOf 2)nullAlternative
subtotalJSONRequired within parent
subtotal (anyOf 1)integerAlternativeThe subtotal of the line item, in cents (or local equivalent), before any discounts or taxes.
subtotal (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
taxesJSONOptional
taxes (anyOf 1)arrayAlternativeThe tax information of the line item.
taxes (anyOf 1)[]ModelEach itemExpand Update an invoice's line item — response body — taxes The tax information of the line item item
taxes (anyOf 2)nullAlternative

Referenced models: Update an invoice's line item — response body — parent / The parent that generated this line item / type: invoice item details, subscription item details, Update an invoice's line item — response body — pricing / The pricing information of the line item / type: price details, Update an invoice's line item — response body — taxes The tax information of the line item item, Get Customers Customer Discount — response body, Void a credit note — response body — discount amounts item, Create an invoice item — response body — period, Update an invoice's line item — response body — pretax credit amounts array item, Pause a subscription — response body

Create an invoice item — request body — body period
FieldTypePresenceDescription and constraints
$objectRootThe period associated with this invoice item. When set to different values, the period will be rendered on the invoice. If you have [Stripe Revenue Recognition](https://docs.stripe.com/revenue-recognition) enabled, the period will be used to recognize and defer revenue. See the [Revenue Recognition documentation](https://docs.stripe.com/revenue-recognition/methodology/subscriptions-and-invoicing) for details.
endintegerRequired within parentFormat: unix-time
startintegerRequired within parentFormat: unix-time
Update an invoice's line item — request body — body price data product data
FieldTypePresenceDescription and constraints
$objectRoot
descriptionstringOptionalMaximum length: 40000
imagesarrayOptional
images[]stringEach item
metadataobjectOptionalAdditional keys: see wildcard field
metadata.*stringAdditional keys
namestringRequired within parentMaximum length: 5000
tax_codestringOptionalMaximum length: 5000
tax_detailsobjectOptional
tax_details.performance_locationstringOptionalMaximum length: 5000
tax_details.tax_codeJSONOptional
tax_details.tax_code (anyOf 1)stringAlternative
tax_details.tax_code (anyOf 2)stringAlternativeOne of:
unit_labelstringOptionalMaximum length: 12
Create an invoice item — response body — period
FieldTypePresenceDescription and constraints
$objectRoot
endJSONRequired within parent
end (anyOf 1)integerAlternativeThe end of the period, which must be greater than or equal to the start. This value is inclusive.
Format: unix-time
end (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
startJSONRequired within parent
start (anyOf 1)integerAlternativeThe start of the period. This value is inclusive.
Format: unix-time
start (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$

SDK function policy ID: stripe.postinvoicesinvoicelineslineitemid. Catalog operation: PostInvoicesInvoiceLinesLineItemId. 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.