Credit notes against an invoice or standalone: drafts, finalization, rendering, totals.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <Pro license key or anonymous token from GET https://mcp.zovo.one/mcp/token>
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
What is being credited, line by line
Why the credit is issued: returned_goods, overcharge, discount_correction, service_issue or other
ISO code the credit is in
Who the credit is for, e.g. Acme GmbH
Text printed at the foot of the document, e.g. how the credit will be settled
The date the credit is issued, YYYY-MM-DD. Default today; a future date is refused
The invoice this credits, e.g. INV-2026-0042. Omit for a standalone credit
Create it even though an identical draft or note exists, for a genuinely repeated credit. Default false
One line of specifics, e.g. Client was billed 10 seats, used 7
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| lines* | array | What is being credited, line by line |
| notes | string | Text printed at the foot of the document, e.g. how the credit will be settled |
| reason* | string | Why the credit is issued: returned_goods, overcharge, discount_correction, service_issue or other |
| currency* | string | ISO code the credit is in |
| recipient* | string | Who the credit is for, e.g. Acme GmbH |
| issue_date | string | The date the credit is issued, YYYY-MM-DD. Default today; a future date is refused |
| invoice_ref | string | The invoice this credits, e.g. INV-2026-0042. Omit for a standalone credit |
| duplicate_ok | boolean | Create it even though an identical draft or note exists, for a genuinely repeated credit. Default false |
| reason_detail | string | One line of specifics, e.g. Client was billed 10 seats, used 7 |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | The draft id, e.g. CN-DRAFT-2026-0001 |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | The draft id, e.g. CN-DRAFT-2026-0001 |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | The credit note number CN-2026-0001 or draft id CN-DRAFT-2026-0001 |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| to | string | Last issue date to include, YYYY-MM-DD |
| from | string | First issue date to include, YYYY-MM-DD |
| limit | integer | Maximum notes listed, default and ceiling 2000 |
| reason | string | Only notes with this reason |
| status | string | Only drafts or only finalized notes |
| recipient | string | Match the recipient, case-insensitive, a part of the name is enough |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | The credit note number CN-2026-0001 or draft id CN-DRAFT-2026-0001 |
| format | string | markdown (default) or html, a self-contained printable page |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| to | string | Last issue date to include, YYYY-MM-DD. Default: today |
| from | string | First issue date to include, YYYY-MM-DD. Default: the beginning |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | The draft id, e.g. CN-DRAFT-2026-0001 |
| lines | array | The full new line set, replacing every existing line |
| notes | any | New notes text, or null to remove the notes |
| reason | string | |
| currency | string | ISO code. Changing it reprices nothing: the stored minor units carry over, so only change it to fix a wrong currency |
| recipient | string | |
| issue_date | string | |
| invoice_ref | any | New invoice reference, or null to detach the note from its invoice |
| reason_detail | any |
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.
| Argument | Type | Description |
|---|---|---|
| key* | string | License key from checkout, MCPL1.<payload>.<signature> |
{
"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
}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.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}{
"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
}