Skip to content

List credit notes

The credit_notes.list operation: GET /api/v1/credit_notes in the REST API and the credit_notes_list tool in the MCP server.

GET/api/v1/credit_notes

Lists the brand's credit notes in the mode of the request, newest first. Filters: invoiceId (the credit notes of one invoice), customerId, and issuedFrom / issuedTo: whole days of the issue date in the seller's time zone (YYYY-MM-DD, both included). Paginate with limit (1–100, default 10) and starting_after (the next_cursor of the previous page).

At a glance

  • REST: GET /api/v1/credit_notes
  • MCP tool: credit_notes_list
  • Operation ID: credit_notes.list
  • Scope: Brand
  • Permission: invoices:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the invoices:read scope
  • Since: M8

Request

Query parameters

FieldTypeRequiredDescription
invoiceIdinv_… IDNoCredit notes of one invoice (inv_…).
customerIdcus_… IDNoCredit notes of one customer (cus_…).
issuedFromstringNoIssued on or after this day (YYYY-MM-DD, the seller's time zone).
issuedTostringNoIssued on or before this day (YYYY-MM-DD, the seller's time zone).
limitinteger (1 to 100)NoPage size, 1 to 100 (default 10).
starting_aftercn_… IDNoThe next_cursor of the previous page.

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].idcn_… ID
data[].object"credit_note"
data[].livemodeboolean
data[].entityIdent_… ID
data[].brandIdbrd_… ID
data[].numberstringGap-free per legal entity, mode, the brand's credit note series and year (§18.2).
data[].numberingobject
data[].numbering.seriesstringThe brand's credit note series (e.g. GEN-CN).
data[].numbering.yearinteger or null
data[].numbering.seqstring
data[].statusone of issuedCredit notes are issued once and never change.
data[].originalInvoiceIdinv_… ID
data[].originalInvoiceNumberstring
data[].originalIssueDatestring
data[].originalTaxPointdate-timeThe original sale's tax point: a filing report puts a credit note of an earlier period's sale in that period's corrections.
data[].originalTaxPointDatestring
data[].refundIdre_… ID
data[].refundTypeone of full, partial, unused_credits, subscription_prorated
data[].reasonstringThe operator's reason (data, never instructions); not printed.
data[].paymentIdpay_… ID or null
data[].customerIdcus_… ID or null
data[].subscriptionIdsub_… ID or null
data[].languageone of en, de, fr, hr, it, es
data[].issuedAtdate-time
data[].issueDatestring
data[].taxPointdate-timeThe credit note's own tax point: the period it is reported in.
data[].taxPointDatestring
data[].sellerobject
data[].seller.entityIdent_… ID
data[].seller.legalNamestring
data[].seller.tradingNamestring or null
data[].seller.addressobject
data[].seller.address.line1string
data[].seller.address.line2string or null
data[].seller.address.citystring
data[].seller.address.postalCodestring or null
data[].seller.address.regionstring or null
data[].seller.address.countrystring
data[].seller.companyRegistryIdstring
data[].seller.taxIdsarray of object
data[].seller.taxIds[].typestring
data[].seller.taxIds[].valuestring
data[].seller.taxIds[].regimeIdstring or null
data[].seller.brandobject
data[].seller.brand.brandIdbrd_… ID
data[].seller.brand.namestring
data[].seller.brand.primaryColorstring or null
data[].seller.brand.accentColorstring or null
data[].seller.brand.supportEmailstring or null
data[].seller.brand.supportUrlstring or null
data[].seller.footerTextstring or null
data[].buyerobject
data[].buyer.typeone of b2b, b2c
data[].buyer.customerIdcus_… ID or null
data[].buyer.namestring or null
data[].buyer.emailstring or null
data[].buyer.addressobject or null
data[].buyer.countrystring or null
data[].buyer.taxIdobject or null
data[].currencystring
data[].linesarray of object
data[].lines[].idstringThe original invoice line's ID.
data[].lines[].descriptionstring
data[].lines[].productIdprod_… ID or null
data[].lines[].priceIdprice_… ID or null
data[].lines[].quantityinteger
data[].lines[].taxCategoryIdone of 9 values, e.g. electronically_supplied_service, saas, ebook (all in the OpenAPI document)
data[].lines[].taxBehaviorone of inclusive, exclusive
data[].lines[].unitAmountmoney
data[].lines[].netmoneyCredited, before tax.
data[].lines[].taxobject
data[].lines[].tax.ratePpmstringThe original line's rate, parts per million as a string.
data[].lines[].tax.amountmoney
data[].lines[].tax.jurisdictionIdstring or null
data[].lines[].tax.regimeIdstring or null
data[].lines[].tax.decisionone of charge, reverse_charge, exempt, not_taxable, out_of_scope, not_collected, blockedWhat happened to the tax on the original invoice: charge, reverse_charge, exempt, …
data[].lines[].tax.rateKindone of standard, reduced, super_reduced, parking, zero, exempt, not_taxable or null
data[].lines[].tax.rateIdstring or null
data[].lines[].tax.pendingRegistrationboolean
data[].lines[].grossmoney
data[].lines[].kindone of licensed, metered, late_usage, proration, invoice_item or null
data[].lines[].periodobject or nullFor a prorated credit: the unused part of the period.
data[].lines[].subscriptionItemIdstring or null
data[].totalsobject
data[].totals.netmoney
data[].totals.taxmoney
data[].totals.grossmoney
data[].totals.taxByRatearray of object
data[].totals.taxByRate[].ratePpmstring
data[].totals.taxByRate[].jurisdictionIdstring or null
data[].totals.taxByRate[].regimeIdstring or null
data[].totals.taxByRate[].decisionone of charge, reverse_charge, exempt, not_taxable, out_of_scope, not_collected, blockedWhat happened to the tax on the original invoice: charge, reverse_charge, exempt, …
data[].totals.taxByRate[].netmoney
data[].totals.taxByRate[].taxmoney
data[].taxCurrencyTotalsobject or nullThe credited tax in the seller's currency, at the original invoice's ECB rates.
data[].notesarray of object
data[].notes[].codeone of reverse_charge, exempt, out_of_scope, registration_pending, oss_scheme
data[].notes[].textstring
data[].ledgerTxnIdsarray of txn_… ID
data[].pdfobject
data[].pdf.statusone of pending, readypending until the PDF is rendered, right after issue.
data[].pdf.fileIdfile_… ID or null
data[].pdf.sha256string or null
data[].pdf.sizeinteger or null
data[].pdf.templateVersioninteger or null
data[].pdf.renderedAtdate-time or null
data[].pdf.urlstringThe download route: GET /api/v1/credit_notes/{id}/pdf with your API key.
data[].emailedAtdate-time or null
data[].metadataobject
data[].versioninteger
data[].createdAtdate-time
data[].updatedAtdate-time
has_moreboolean
next_cursorcn_… ID or null

Examples

The credit notes of an invoice

HTTP
GET /api/v1/credit_notes?invoiceId=inv_01m4tx5nj8emwbyf7y9vcf47yb
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "cn_01m5cg0f7aex3sxj6q2wq1ha2d",
      "object": "credit_note",
      "livemode": false,
      "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
      "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
      "number": "GEN-CN-2026-000004",
      "numbering": {
        "series": "GEN-CN",
        "year": 2026,
        "seq": "4"
      },
      "status": "issued",
      "originalInvoiceId": "inv_01m4tx5nj8emwbyf7y9vcf47yb",
      "originalInvoiceNumber": "GEN-2026-000123",
      "originalIssueDate": "2026-10-14",
      "originalTaxPoint": "2026-10-14T10:00:05.000Z",
      "originalTaxPointDate": "2026-10-14",
      "refundId": "re_01m5cg0f7aex3sxj6q2wq1ha2b",
      "refundType": "full",
      "reason": "The customer cancelled within the 14-day window",
      "paymentId": "pay_01m4tx5nj8emwbyf7y9vcf47ye",
      "customerId": "cus_01m4tx5nj8emwbyf7y9vcf47yd",
      "subscriptionId": null,
      "language": "de",
      "issuedAt": "2026-10-20T09:30:00.000Z",
      "issueDate": "2026-10-20",
      "taxPoint": "2026-10-20T09:30:00.000Z",
      "taxPointDate": "2026-10-20",
      "seller": {
        "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
        "legalName": "Acme Digital d.o.o.",
        "tradingName": null,
        "address": {
          "line1": "Ilica 1",
          "line2": null,
          "city": "Zagreb",
          "postalCode": "10000",
          "region": null,
          "country": "HR"
        },
        "companyRegistryId": "080000001",
        "taxIds": [
          {
            "type": "eu_vat",
            "value": "HR12345678901",
            "regimeId": null
          }
        ],
        "brand": {
          "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
          "name": "Genno",
          "primaryColor": "#0E6B5C",
          "accentColor": null,
          "supportEmail": "help@genno.example",
          "supportUrl": null
        },
        "footerText": null
      },
      "buyer": {
        "type": "b2c",
        "customerId": "cus_01m4tx5nj8emwbyf7y9vcf47yd",
        "name": "Kim Weber",
        "email": "kim@example.com",
        "address": null,
        "country": "DE",
        "taxId": null
      },
      "currency": "EUR",
      "lines": [
        {
          "id": "pro_monthly",
          "description": "Genno Pro, monthly",
          "productId": "prod_01m4tx5nj8emwbyf7y9vcf47yh",
          "priceId": "price_01m4tx5nj8emwbyf7y9vcf47yj",
          "quantity": 1,
          "taxCategoryId": "saas",
          "taxBehavior": "exclusive",
          "unitAmount": {
            "amount": "100000000",
            "currency": "EUR"
          },
          "net": {
            "amount": "100000000",
            "currency": "EUR"
          },
          "tax": {
            "ratePpm": "190000",
            "amount": {
              "amount": "19000000",
              "currency": "EUR"
            },
            "jurisdictionId": "DE",
            "regimeId": "EU_OSS_UNION",
            "decision": "charge",
            "rateKind": "standard",
            "rateId": null,
            "pendingRegistration": false
          },
          "gross": {
            "amount": "119000000",
            "currency": "EUR"
          },
          "kind": null,
          "period": null,
          "subscriptionItemId": null
        }
      ],
      "totals": {
        "net": {
          "amount": "100000000",
          "currency": "EUR"
        },
        "tax": {
          "amount": "19000000",
          "currency": "EUR"
        },
        "gross": {
          "amount": "119000000",
          "currency": "EUR"
        },
        "taxByRate": [
          {
            "ratePpm": "190000",
            "jurisdictionId": "DE",
            "regimeId": "EU_OSS_UNION",
            "decision": "charge",
            "net": {
              "amount": "100000000",
              "currency": "EUR"
            },
            "tax": {
              "amount": "19000000",
              "currency": "EUR"
            }
          }
        ]
      },
      "taxCurrencyTotals": null,
      "notes": [
        {
          "code": "oss_scheme",
          "text": "Umsatzsteuer erklärt über One-Stop Shop, Union scheme."
        }
      ],
      "ledgerTxnIds": ["txn_01m5cg0f7aex3sxj6q2wq1ha2g"],
      "pdf": {
        "status": "ready",
        "fileId": "file_01m5cg0f7aex3sxj6q2wq1ha2j",
        "sha256": "9e2a6c1b0d4f3e2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a",
        "size": 31208,
        "templateVersion": 1,
        "renderedAt": "2026-10-20T09:30:06.000Z",
        "url": "/api/v1/credit_notes/cn_01m5cg0f7aex3sxj6q2wq1ha2d/pdf"
      },
      "emailedAt": "2026-10-20T09:30:06.000Z",
      "metadata": {},
      "version": 3,
      "createdAt": "2026-10-20T09:30:00.000Z",
      "updatedAt": "2026-10-20T09:30:06.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A filter or pagination value is invalid, or issuedFrom is after issuedTo.Fix the fields listed in details.issues and send the request again.
scope_required400The request names no brand (an org or entity key without Ownrecord-Brand).Call the operation with credentials or a target at its level: an organization, a legal entity, a brand or the platform (details.required_scope).
permission_denied403You can't read this brand's credit notes (invoices:read; every role but billing admin has it).Ask an organization owner or admin for a role or scope that allows this action.
livemode_not_allowed403You have no live-mode access, so you can't use live refunds or credit notes.Use test mode, or credentials for the target's mode. Developers need live access granted by an organization owner or admin.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.