LatticeStripe.CreditNote exposes Stripe's credit-note endpoints directly: create,
retrieve, update, list, preview, void, and both issued and preview line-item access.
Credit notes are lower-level billing primitives. This guide stays Stripe-shaped on purpose: raw params go in, typed structs come back out.
Lifecycle constraints
- Credit notes can only be created from finalized invoices.
LatticeStripe.CreditNote.preview/3uses the same params shape as create and is the safest way to validate a request before creating anything.- Voiding is irreversible and is only valid while the credit note is attached to an open invoice.
Preview a credit note
Use LatticeStripe.CreditNote.preview/3 to validate the request and inspect the
typed response before creating anything.
{:ok, preview} =
LatticeStripe.CreditNote.preview(client, %{
"invoice" => "in_123",
"lines" => [
%{
"type" => "invoice_line_item",
"invoice_line_item" => "il_123",
"quantity" => 1
}
]
})For a custom credit line item:
{:ok, preview} =
LatticeStripe.CreditNote.preview(client, %{
"invoice" => "in_123",
"lines" => [
%{
"type" => "custom_line_item",
"description" => "Goodwill credit",
"quantity" => 1,
"unit_amount" => 500
}
]
})Create a credit note
LatticeStripe.CreditNote.create/3 accepts the same raw params map as preview.
{:ok, credit_note} =
LatticeStripe.CreditNote.create(client, %{
"invoice" => "in_123",
"lines" => [
%{
"type" => "custom_line_item",
"description" => "Goodwill credit",
"quantity" => 1,
"unit_amount" => 500
}
],
"memo" => "Applied after support review"
})Browse line items
Issued credit notes:
{:ok, response} = LatticeStripe.CreditNote.list_line_items(client, credit_note.id)
items = response.data.dataPreview line items:
{:ok, response} =
LatticeStripe.CreditNote.list_preview_line_items(client, %{
"invoice" => "in_123",
"lines" => [
%{
"type" => "invoice_line_item",
"invoice_line_item" => "il_123",
"quantity" => 1
}
]
})
items = response.data.dataUse stream!/3, stream_line_items!/4, or stream_preview_line_items!/3 when you want
auto-pagination.
Void a credit note
{:ok, voided} = LatticeStripe.CreditNote.void(client, credit_note.id)Voiding is irreversible and only applies to credit notes attached to open invoices.