Skip to content

Stripe: Create a credit note

Stripe creditNotes.postCreditNotes: arguments, response, policy and SDK examples.

← Credit notes operations · Get started

Operation stripe.postcreditnotes

Provider route: POST /v1/credit_notes. 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["creditNotes"]["postCreditNotes"]>[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.creditNotes.postCreditNotes(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.credit_notes.post_credit_notes(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.amountintegerOptionalThe integer amount in cents (or local equivalent) representing the total amount of the credit note. One of `amount`, `lines`, or `shipping_cost` must be provided.
body.credit_amountintegerOptionalThe integer amount in cents (or local equivalent) representing the amount to credit the customer’s balance, which will be automatically applied to their next invoice.
body.effective_atintegerOptionalThe date when this credit note is in effect. Same as `created` unless overwritten. When defined, this value replaces the system-generated ‘Date of issue’ printed on the credit note PDF.
Format: unix-time
body.email_typestringOptionalType of email to send to the customer, one of `credit_note` or `none` and the default is `credit_note`.
One of: credit_note, none
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.invoicestringRequired within parentID of the invoice.
Maximum length: 5000
body.linesarrayOptionalLine items that make up the credit note. One of `amount`, `lines`, or `shipping_cost` must be provided.
body.lines[]ModelEach itemExpand Create a credit note — request body — body lines item
body.memostringOptionalThe credit note’s memo appears on the credit note PDF.
Maximum length: 5000
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.out_of_band_amountintegerOptionalThe integer amount in cents (or local equivalent) representing the amount that is credited outside of Stripe.
body.reasonstringOptionalReason for issuing this credit note, one of `duplicate`, `fraudulent`, `order_change`, or `product_unsatisfactory`
One of: duplicate, fraudulent, order_change, product_unsatisfactory
body.refund_amountintegerOptionalThe integer amount in cents (or local equivalent) representing the amount to refund. If set, a refund will be created for the charge associated with the invoice.
body.refundsarrayOptionalRefunds to link to this credit note.
body.refunds[]objectEach item
body.refunds[].amount_refundedintegerOptional
body.refunds[].payment_record_refundobjectOptional
body.refunds[].payment_record_refund.payment_recordstringRequired within parentMaximum length: 5000
body.refunds[].payment_record_refund.refund_groupstringRequired within parentMaximum length: 5000
body.refunds[].refundstringOptional
body.refunds[].typestringOptionalOne of: payment_record_refund, refund
body.shipping_costobjectOptionalWhen shipping_cost contains the shipping_rate from the invoice, the shipping_cost is included in the credit note. One of `amount`, `lines`, or `shipping_cost` must be provided.
body.shipping_cost.shipping_ratestringOptionalMaximum length: 5000

Referenced models: Create a credit note — request body — body lines item

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

FieldTypePresenceDescription and constraints
$ModelRootExpand Void a credit note — response body

Referenced models: Void a credit note — response body

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

Create a credit note — request body — body lines item
FieldTypePresenceDescription and constraints
$objectRoot
amountintegerOptional
descriptionstringOptionalMaximum length: 5000
invoice_line_itemstringOptionalMaximum length: 5000
metadataobjectOptionalAdditional keys: see wildcard field
metadata.*stringAdditional keys
quantityintegerOptional
tax_amountsJSONOptional
tax_amounts (anyOf 1)arrayAlternative
tax_amounts (anyOf 1)[]objectEach item
tax_amounts (anyOf 1)[].amountintegerRequired within parent
tax_amounts (anyOf 1)[].tax_ratestringRequired within parentMaximum length: 5000
tax_amounts (anyOf 1)[].taxable_amountintegerRequired within parent
tax_amounts (anyOf 2)stringAlternativeOne of:
tax_ratesJSONOptional
tax_rates (anyOf 1)arrayAlternative
tax_rates (anyOf 1)[]stringEach itemMaximum length: 5000
tax_rates (anyOf 2)stringAlternativeOne of:
typestringRequired within parentOne of: custom_line_item, invoice_line_item
unit_amountintegerOptional
unit_amount_decimalstringOptionalFormat: decimal
Update an invoice's line item — response body — taxes The tax information of the line item item
FieldTypePresenceDescription and constraints
$objectRoot
amountJSONRequired within parent
amount (anyOf 1)integerAlternativeThe amount of the tax, in cents (or local equivalent).
amount (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
tax_behaviorstringRequired within parentWhether this tax is inclusive or exclusive.
Known values: exclusive, inclusive
tax_rate_detailsJSONOptional
tax_rate_details (anyOf 1)JSONAlternativeAdditional details about the tax rate. Only present when `type` is `tax_rate_details`.
tax_rate_details (anyOf 1) (anyOf 1)ModelAlternativeExpand Update an invoice's line item — response body — taxes The tax information of the line item item tax rate details value tax rate
tax_rate_details (anyOf 2)nullAlternative
taxability_reasonstringRequired within parentThe reasoning behind this tax, for example, if the product is tax exempt. The possible values for this field may be extended as new tax rules are supported.
Known values: customer_exempt, not_available, not_collecting, not_subject_to_tax, not_supported, portion_product_exempt, portion_reduced_rated, portion_standard_rated, product_exempt, product_exempt_holiday, proportionally_rated, reduced_rated, reverse_charge, standard_rated, taxable_basis_reduced, zero_rated
taxable_amountJSONOptional
taxable_amount (anyOf 1)JSONAlternative
taxable_amount (anyOf 1) (anyOf 1)integerAlternativeThe amount on which tax is calculated, in cents (or local equivalent).
taxable_amount (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
taxable_amount (anyOf 2)nullAlternative
typestringRequired within parentThe type of tax information.
Known values: tax_rate_details

Referenced models: Update an invoice's line item — response body — taxes The tax information of the line item item tax rate details value tax rate

Retrieve a credit note's line items — response body — data item
FieldTypePresenceDescription and constraints
$objectRootThe credit note line item object
amountJSONRequired within parent
amount (anyOf 1)integerAlternativeThe integer amount in cents (or local equivalent) representing the gross amount being credited for this line item, excluding (exclusive) tax and discounts.
amount (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
descriptionJSONOptional
description (anyOf 1)stringAlternativeDescription of the item being credited.
Maximum length: 5000
description (anyOf 2)nullAlternative
discount_amountJSONRequired within parent
discount_amount (anyOf 1)integerAlternativeThe integer amount in cents (or local equivalent) representing the discount being credited for this line item.
discount_amount (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
discount_amountsarrayRequired within parentThe amount of discount calculated per discount for this line item
discount_amounts[]ModelEach itemExpand Void a credit note — response body — discount amounts item
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
invoice_line_itemstringOptionalID of the invoice line item being credited
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: credit_note_line_item
pretax_credit_amountsarrayRequired within parentThe pretax credit amounts (ex: discount, credit grants, etc) for this line item.
pretax_credit_amounts[]ModelEach itemExpand Void a credit note — response body — pretax credit amounts item
quantityJSONOptional
quantity (anyOf 1)JSONAlternative
quantity (anyOf 1) (anyOf 1)integerAlternativeThe number of units of product being credited.
quantity (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
quantity (anyOf 2)nullAlternative
tax_ratesarrayRequired within parentThe tax rates which apply to the line item.
tax_rates[]ModelEach itemExpand Create a tax rate — response body
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
typestringRequired within parentThe type of the credit note line item, one of `invoice_line_item` or `custom_line_item`. When the type is `invoice_line_item` there is an additional `invoice_line_item` property on the resource the value of which is the id of the credited line item on the invoice.
Known values: custom_line_item, invoice_line_item
unit_amountJSONOptional
unit_amount (anyOf 1)JSONAlternative
unit_amount (anyOf 1) (anyOf 1)integerAlternativeThe cost of each unit of product being credited.
unit_amount (anyOf 1) (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
unit_amount (anyOf 2)nullAlternative
unit_amount_decimalJSONOptional
unit_amount_decimal (anyOf 1)stringAlternativeSame as `unit_amount`, but contains a decimal value with at most 12 decimal places.
Format: decimal
unit_amount_decimal (anyOf 2)nullAlternative

Referenced models: Update an invoice's line item — response body — taxes The tax information of the line item item, Void a credit note — response body — pretax credit amounts item, Void a credit note — response body — discount amounts item, Create a tax rate — response body

Delete a customer — response body
FieldTypePresenceDescription and constraints
$objectRoot
deletedbooleanRequired within parentAlways true for a deleted object
Known values: True
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: customer
Update an invoice's line item — response body — taxes The tax information of the line item item tax rate details value tax rate
FieldTypePresenceDescription and constraints
$objectRoot
tax_rateJSONRequired within parentID of the tax rate
tax_rate (anyOf 1)stringAlternativeMaximum length: 5000
tax_rate (anyOf 2)ModelAlternativeExpand Create a tax rate — response body

Referenced models: Create a tax rate — response body

Create a Payment Method — response body — zip
FieldTypePresenceDescription and constraints
$objectRoot

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