# Create a credit note Issue a credit note to adjust the amount of a finalized invoice. A credit note will first reduce the invoice’s `amount_remaining` (and `amount_due`), but not below zero. This amount is indicated by the credit note’s `pre_payment_amount`. The excess amount is indicated by `post_payment_amount`, and it can result in any combination of the following: - Refunds: create a new refund (using `refund_amount`) or link existing refunds (using `refunds`). - Customer balance credit: credit the customer’s balance (using `credit_amount`) which will be automatically applied to their next invoice when it’s finalized. - Outside of Stripe credit: record the amount that is or will be credited outside of Stripe (using `out_of_band_amount`). The sum of refunds, customer balance credits, and outside of Stripe credits must equal the `post_payment_amount`. You may issue multiple credit notes for an invoice. Each credit note may increment the invoice’s `pre_payment_credit_notes_amount`, `post_payment_credit_notes_amount`, or both, depending on the invoice’s `amount_remaining` at the time of credit note creation. For invoices that also have refunds created through the [Refund API](https://docs.stripe.com/docs/api/refunds.md), the credit note API subtracts those refund amounts from the maximum creditable amount. This prevents the combined credit notes and refunds from exceeding the invoice amount. If you use both, ensure the combined total does not exceed the invoice’s paid amount. ## Prerequisites Before you can run the following code snippet, you need to call these APIs with the provided parameters to set up the prerequisite API object(s). - 1. createCustomer POST /v1/customers {"name":"Jenny Rosen","email":"jennyrosen@example.com"} - 2. createInvoice POST /v1/invoices {"customer":"${node.prerequisites.createCustomer.createCustomer:id}"} ## Request ```curl curl https://api.stripe.com/v1/credit_notes \ -u "<>" \ -d invoice={{INVOICE_ID}} ``` ### Response ```json { "id": "cn_1MxvRqLkdIwHu7ixY0xbUcxk", "object": "credit_note", "amount": 1099, "amount_shipping": 0, "created": 1681750958, "currency": "usd", "customer": "cus_NjLgPhUokHubJC", "customer_balance_transaction": null, "discount_amount": 0, "discount_amounts": [], "invoice": "in_1MxvRkLkdIwHu7ixABNtI99m", "lines": { "object": "list", "data": [ { "id": "cnli_1MxvRqLkdIwHu7ixFpdhBFQf", "object": "credit_note_line_item", "amount": 1099, "description": "T-shirt", "discount_amount": 0, "discount_amounts": [], "invoice_line_item": "il_1MxvRlLkdIwHu7ixnkbntxUV", "livemode": false, "quantity": 1, "tax_rates": [], "taxes": [], "type": "invoice_line_item", "unit_amount": 1099, "unit_amount_decimal": "1099" } ], "has_more": false, "url": "/v1/credit_notes/cn_1MxvRqLkdIwHu7ixY0xbUcxk/lines" }, "livemode": false, "memo": null, "metadata": {}, "number": "C9E0C52C-0036-CN-01", "out_of_band_amount": null, "pdf": "https://pay.stripe.com/credit_notes/acct_1M2JTkLkdIwHu7ix/test_YWNjdF8xTTJKVGtMa2RJd0h1N2l4LF9Oak9FOUtQNFlPdk52UXhFd2Z4SU45alpEd21kd0Y4LDcyMjkxNzU50200cROQsSK2/pdf?s=ap", "pre_payment_amount": 1099, "post_payment_amount": 0, "reason": null, "refunds": [], "shipping_cost": null, "status": "issued", "subtotal": 1099, "subtotal_excluding_tax": 1099, "total": 1099, "total_excluding_tax": 1099, "total_taxes": [], "type": "pre_payment", "voided_at": null } ``` ## Returns Returns a credit note object if the call succeeded. ## Parameters - `invoice` (string, required) ID of the invoice. - `amount` (integer, required conditionally) The integer amount in the smallest currency unit representing the total amount of the credit note. One of `amount`, `lines`, or `shipping_cost` must be provided. - `credit_amount` (integer, optional) The integer amount in the smallest currency unit representing the amount to credit the customer’s balance, which will be automatically applied to their next invoice. - `effective_at` (timestamp, optional) The 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. - `email_type` (enum, optional) Type of email to send to the customer, one of `credit_note` or `none` and the default is `credit_note`. Possible enum values: - `credit_note` credit note email - `none` no email - `lines` (array of objects, required conditionally) Line items that make up the credit note. One of `amount`, `lines`, or `shipping_cost` must be provided. - `lines.type` (enum, required) Type of the credit note line item, one of `invoice_line_item` or `custom_line_item`. `custom_line_item` is not valid when the invoice is set up with `automatic_tax[enabled]=true`. Possible enum values: - `custom_line_item` - `invoice_line_item` - `lines.amount` (integer, optional) The line item amount to credit. Only valid when `type` is `invoice_line_item`. If invoice is set up with `automatic_tax[enabled]=true`, this amount is tax exclusive - `lines.description` (string, optional) The description of the credit note line item. Only valid when the `type` is `custom_line_item`. - `lines.invoice_line_item` (string, optional) The invoice line item to credit. Only valid when the `type` is `invoice_line_item`. - `lines.metadata` (object, optional) Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) 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`. - `lines.quantity` (integer, optional) The line item quantity to credit. - `lines.tax_amounts` (array of objects, optional) A list of up to 10 tax amounts for the credit note line item. Not valid when `tax_rates` is used or if invoice is set up with `automatic_tax[enabled]=true`. - `lines.tax_amounts.amount` (integer, required) The amount, in the smallest currency unit, of the tax. - `lines.tax_amounts.tax_rate` (string, required) The id of the tax rate for this tax amount. The tax rate must have been automatically created by Stripe. - `lines.tax_amounts.taxable_amount` (integer, required) The amount on which tax is calculated, in the smallest currency unit. - `lines.tax_rates` (array of strings, optional) The tax rates which apply to the credit note line item. Only valid when the `type` is `custom_line_item` and `tax_amounts` is not used. - `lines.unit_amount` (integer, optional) The integer unit amount in the smallest currency unit of the credit note line item. This `unit_amount` will be multiplied by the quantity to get the full amount to credit for this line item. Only valid when `type` is `custom_line_item`. - `lines.unit_amount_decimal` (string, optional) Same as `unit_amount`, but accepts a decimal value in the smallest currency unit with at most 12 decimal places. Only one of `unit_amount` and `unit_amount_decimal` can be set. - `memo` (string, optional) The credit note’s memo appears on the credit note PDF. - `metadata` (object, optional) Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) 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`. - `out_of_band_amount` (integer, optional) The integer amount in the smallest currency unit representing the amount that is credited outside of Stripe. - `reason` (enum, optional) Reason for issuing this credit note, one of `duplicate`, `fraudulent`, `order_change`, or `product_unsatisfactory` Possible enum values: - `duplicate` Credit issued for a duplicate payment or charge - `fraudulent` Credit note issued for fraudulent activity - `order_change` Credit note issued for order change - `product_unsatisfactory` Credit note issued for unsatisfactory product - `refund_amount` (integer, optional) The integer amount in the smallest currency unit representing the amount to refund. If set, a refund will be created for the charge associated with the invoice. - `refunds` (array of objects, optional) Refunds to link to this credit note. - `refunds.amount_refunded` (integer, optional) Amount of the refund that applies to this credit note, in the smallest currency unit. Defaults to the entire refund amount. - `refunds.payment_record_refund` (object, optional) The PaymentRecord refund details to link to this credit note. Required when `type` is `payment_record_refund`. - `refunds.payment_record_refund.payment_record` (string, required) The ID of the PaymentRecord with the refund to link to this credit note. - `refunds.payment_record_refund.refund_group` (string, required) The PaymentRecord refund group to link to this credit note. For refunds processed off-Stripe, this will correspond to the `processor_details.custom.refund_reference` field provided when reporting the refund on the PaymentRecord. - `refunds.refund` (string, optional) ID of an existing refund to link this credit note to. Required when `type` is `refund`. - `refunds.type` (enum, optional) Type of the refund, one of `refund` or `payment_record_refund`. Defaults to `refund`. Possible enum values: - `payment_record_refund` The refund being linked to this credit note is a payment record refund - `refund` The refund being linked to this credit note is a regular refund - `shipping_cost` (object, required conditionally) When 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. - `shipping_cost.shipping_rate` (string, required if shipping cost should be included for credit note) The ID of the shipping rate to use for this order.