MCP Server

credit-note

io.github.theluckystrike/credit-note
Business & Operations Finance & Investing Public & reachable MCP 2026-07-28

What this MCP does

Creates, edits, finalizes, lists, summarizes, and renders credit notes linked to invoices or issued standalone.

credit_note_create
Issue a credit note
Issue a credit note against an invoice, or standalone: the recipient, the reason (returned goods, overcharge, discount correction, service issue, other), line items with quantity, unit price and tax rate, and the currency. Returns a draft you can still revise; credit_note_finalize burns the final CN number.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['recipient', 'reason', 'currency', 'lines'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'quantity', 'unit_price_minor'], 'properties': {'quantity': {'type': 'number', 'maximum': 1000000, 'description': 'How many, e.g. 3 or 2.5 hours', 'exclusiveMinimum': 0}, 'tax_rate': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Tax rate in percent, e.g. 23 for 23%. Default 0'}, 'description': {'type': 'string', 'maxLength': 500, 'description': 'What is being credited, e.g. Returned: 3 x USB-C cable'}, 'unit_price_minor': {'type': 'integer', 'maximum': 100000000000000, 'minimum': 0, 'description': 'Unit price in whole minor units (integer cents). 10420 is EUR 104.20'}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1, 'description': 'What is being credited, line by line'}, 'notes': {'type': 'string', 'maxLength': 2000, 'description': 'Text printed at the foot of the document, e.g. how the credit will be settled'}, 'reason': {'enum': ['returned_goods', 'overcharge', 'discount_correction', 'service_issue', 'other'], 'type': 'string', 'description': 'Why the credit is issued: returned_goods, overcharge, discount_correction, service_issue or other'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'ISO code the credit is in'}, 'recipient': {'type': 'string', 'maxLength': 200, 'description': 'Who the credit is for, e.g. Acme GmbH'}, 'issue_date': {'type': 'string', 'maxLength': 10, 'description': 'The date the credit is issued, YYYY-MM-DD. Default today; a future date is refused'}, 'invoice_ref': {'type': 'string', 'maxLength': 200, 'description': 'The invoice this credits, e.g. INV-2026-0042. Omit for a standalone credit'}, 'duplicate_ok': {'type': 'boolean', 'description': 'Create it even though an identical draft or note exists, for a genuinely repeated credit. Default false'}, 'reason_detail': {'type': 'string', 'maxLength': 200, 'description': 'One line of specifics, e.g. Client was billed 10 seats, used 7'}}, 'additionalProperties': False}
credit_note_delete
Delete a draft credit note
Delete a draft credit note entered wrongly, by its draft id. A finalized note is refused by name: it is a document the client may have seen, and deleting it would leave their copy pointing at nothing.
Destructive
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'description': 'The draft id, e.g. CN-DRAFT-2026-0001'}}, 'additionalProperties': False}
credit_note_finalize
Finalize a credit note
Finalize a draft: burn the final CN-YYYY-NNNN number and freeze the note. From here it cannot be edited or deleted, only rendered and listed, because it is now the document the client sees. Free tier: 10 finalized credit notes; Pro removes the limit.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'description': 'The draft id, e.g. CN-DRAFT-2026-0001'}}, 'additionalProperties': False}
credit_note_get
Read one credit note in full
Return one credit note by its CN number or draft id: every line with quantity, unit price and tax, the totals per tax rate, the reason, the invoice it credits, and the notes. Reads only; use credit_note_list for the ids.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'description': 'The credit note number CN-2026-0001 or draft id CN-DRAFT-2026-0001'}}, 'additionalProperties': False}
credit_note_list
List credit notes
List credit notes: number or draft id, recipient, reason, status, issue date and total. Filter by recipient (a part of the name is enough), by reason, by status draft or final, and by issue-date period with from and to.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last issue date to include, YYYY-MM-DD'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First issue date to include, YYYY-MM-DD'}, 'limit': {'type': 'integer', 'maximum': 2000, 'minimum': 1, 'description': 'Maximum notes listed, default and ceiling 2000'}, 'reason': {'enum': ['returned_goods', 'overcharge', 'discount_correction', 'service_issue', 'other'], 'type': 'string', 'description': 'Only notes with this reason'}, 'status': {'enum': ['draft', 'final'], 'type': 'string', 'description': 'Only drafts or only finalized notes'}, 'recipient': {'type': 'string', 'maxLength': 200, 'description': 'Match the recipient, case-insensitive, a part of the name is enough'}}, 'additionalProperties': False}
credit_note_render
Render a credit note as Markdown or printable HTML
Turn a credit note into the document: Markdown to paste into an email or ticket, or a self-contained printable HTML page with every style inline. Drafts render with a DRAFT banner so a half-finished credit cannot be sent by mistake. Writes nothing. Free; the free tier stamps a one-line footer.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'description': 'The credit note number CN-2026-0001 or draft id CN-DRAFT-2026-0001'}, 'format': {'enum': ['markdown', 'html'], 'type': 'string', 'description': 'markdown (default) or html, a self-contained printable page'}}, 'additionalProperties': False}
credit_note_summary
Total credited by period, currency and reason
How much you have credited: totals per currency over finalized credit notes, broken down by reason and by month, in an optional issue-date period. Drafts count for nothing until they are finalized. Currencies are never added together.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last issue date to include, YYYY-MM-DD. Default: today'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First issue date to include, YYYY-MM-DD. Default: the beginning'}}, 'additionalProperties': False}
credit_note_update
Revise a draft credit note
Change a draft credit note while it is still a draft: recipient, reason, lines, currency, invoice reference, issue date or notes. Pass only what changes; new lines replace all old ones. A finalized note is immutable and is refused by name.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'description': 'The draft id, e.g. CN-DRAFT-2026-0001'}, 'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['description', 'quantity', 'unit_price_minor'], 'properties': {'quantity': {'type': 'number', 'maximum': 1000000, 'description': 'How many, e.g. 3 or 2.5 hours', 'exclusiveMinimum': 0}, 'tax_rate': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Tax rate in percent, e.g. 23 for 23%. Default 0'}, 'description': {'type': 'string', 'maxLength': 500, 'description': 'What is being credited, e.g. Returned: 3 x USB-C cable'}, 'unit_price_minor': {'type': 'integer', 'maximum': 100000000000000, 'minimum': 0, 'description': 'Unit price in whole minor units (integer cents). 10420 is EUR 104.20'}}, 'additionalProperties': False}, 'maxItems': 100, 'minItems': 1, 'description': 'The full new line set, replacing every existing line'}, 'notes': {'anyOf': [{'type': 'string', 'maxLength': 2000}, {'type': 'null'}], 'description': 'New notes text, or null to remove the notes'}, 'reason': {'enum': ['returned_goods', 'overcharge', 'discount_correction', 'service_issue', 'other'], 'type': 'string'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'ISO code. Changing it reprices nothing: the stored minor units carry over, so only change it to fix a wrong currency'}, 'recipient': {'type': 'string', 'maxLength': 200}, 'issue_date': {'type': 'string', 'maxLength': 10}, 'invoice_ref': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'description': 'New invoice reference, or null to detach the note from its invoice'}, 'reason_detail': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}}, 'additionalProperties': False}
license_activate
Activate license
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'License key from checkout, MCPL1.<payload>.<signature>'}}, 'additionalProperties': False}
license_status
License status
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Added
license_activate
Sept. 24, 2026, 2:40 a.m.
Added
license_status
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_summary
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_render
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_delete
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_get
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_list
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_finalize
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_update
Sept. 24, 2026, 2:40 a.m.
Added
credit_note_create
Sept. 24, 2026, 2:40 a.m.