SuperFaktura MCP by usefulapi

Read SuperFaktura invoices, clients, expenses, bank and stock; create clients, expenses and drafts.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
80%
Naming quality
74%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (7)

  • LOWTool 'superfaktura_list_contact_persons' name length outside 3-30 rangein superfaktura_list_contact_persons
  • LOWTool 'superfaktura_list_expense_categories' name length outside 3-30 rangein superfaktura_list_expense_categories
  • LOWTool 'superfaktura_list_bank_accounts' name length outside 3-30 rangein superfaktura_list_bank_accounts
  • LOWTool 'superfaktura_list_cash_registers' name length outside 3-30 rangein superfaktura_list_cash_registers
  • LOWTool 'superfaktura_list_stock_movements' name length outside 3-30 rangein superfaktura_list_stock_movements
  • LOWTool 'superfaktura_get_response_by_checksum' name length outside 3-30 rangein superfaktura_get_response_by_checksum
  • LOWTool 'superfaktura_add_contact_person' name length outside 3-30 rangein superfaktura_add_contact_person

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,410Tokens (tool definitions)
~2.0 KBTypical response size
Significant attention impact (5.01% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "superfaktura": {
      "url": "https://superfaktura.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://superfaktura.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (25)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢superfaktura_get_company(all_companies)

The company the API key is working in (name, IČO, DIČ, IČ DPH, address, VAT-payer flag, bank accounts) and the remaining API quota (SuperFaktura's fair-use policy is 1000 requests per day and 31000 per month; every tool call here uses one request). Good first call. With all_companies=true also the other companies the user can access (their ids are the company_id of the login). GET /users/getUserCompaniesData.

Input Schema

{
  "type": "object",
  "properties": {
    "all_companies": {
      "description": "true = every company the user has access to, not only the current one.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_invoices(type, status, client_id, search, variable, ...)

List issued documents with client, items, totals and payment status. type selects the document kind (default regular = ordinary invoices; also proforma, estimate = quote, order, cancel = credit note, delivery, draft, reverse_order; several allowed). Without a date filter SuperFaktura returns only the CURRENT YEAR; use created_period='all' or a date range for older ones. status: issued, partially_paid, paid, overdue. search matches client name, number, VS ... Paged: pass next_page as page. GET /invoices/index.json.

Input Schema

{
  "type": "object",
  "properties": {
    "type": {
      "description": "Document types (default: regular).",
      "minItems": 1,
      "maxItems": 8,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "regular",
          "proforma",
          "estimate",
          "order",
          "cancel",
          "delivery",
          "draft",
          "reverse_order"
        ]
      }
    },
    "status": {
      "description": "Payment status.",
      "type": "string",
      "enum": [
        "issued",
        "partially_paid",
        "paid",
        "overdue"
      ]
    },
    "client_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Only documents of this client (superfaktura_list_clients)."
    },
    "search": {
      "description": "Text to search for (matched by SuperFaktura in names, numbers, e-mails ... of the records).",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "variable": {
      "description": "Variable symbol.",
      "type": "string",
      "minLength": 1,
      "maxLength": 40
    },
    "invoice_no": {
      "description": "Formatted document number, e.g. 2026001.",
      "type": "string",
      "minLength": 1,
      "maxLength": 40
    },
    "order_no": {
      "description": "Order number the document was created from.",
      "type": "string",
      "minLength": 1,
      "maxLength": 40
    },
    "amount_from": {
      "description": "Minimum amount.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "amount_to": {
      "description": "Maximum amount.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "created_period": {
      "description": "Issue date as a period (default this_year when no date filter is given).",
      "type": "string",
      "enum": [
        "all",
        "today",
        "yesterday",
        "this_week",
        "this_month",
        "last_month",
        "this_quarter",
        "last_quarter",
        "this_year",
        "last_year"
      ]
    },
    "created_since": {
      "description": "Issued on or after (yyyy-mm-dd).",
      "type": "string"
    },
    "created_to": {
      "description": "Issued on or before (yyyy-mm-dd).",
      "type": "string"
    },
    "modified_period": {
      "description": "Last changed in this period.",
      "type": "string",
      "enum": [
        "all",
        "today",
        "yesterday",
        "this_week",
        "this_month",
        "last_month",
        "this_quarter",
        "last_quarter",
        "this_year",
        "last_year"
      ]
    },
    "direction": {
      "description": "Sort direction (default DESC).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (the account's profile default when omitted).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_get_invoice(invoice_id)

One document (invoice, proforma, quote ...) with its header (number, dates, status, amounts, currency, symbols, comments), client, items, VAT summary, payments and related documents. The public access token and payment links of the document are not returned. GET /invoices/view/{id}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "invoice_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Invoice id (the id of a superfaktura_list_invoices row)."
    }
  },
  "required": [
    "invoice_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_clients(search, created_period, modified_period, direction, page, ...)

List the address book (clients and suppliers) with contact data and totals. search matches name, IČO, DIČ, IČ DPH, bank account, e-mail, address, city, phone, note and tags. Paged: pass next_page as page. GET /clients/index.json.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Text to search for (matched by SuperFaktura in names, numbers, e-mails ... of the records).",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "created_period": {
      "description": "Created in this period.",
      "type": "string",
      "enum": [
        "all",
        "today",
        "yesterday",
        "this_week",
        "this_month",
        "last_month",
        "this_quarter",
        "last_quarter",
        "this_year",
        "last_year"
      ]
    },
    "modified_period": {
      "description": "Changed in this period.",
      "type": "string",
      "enum": [
        "all",
        "today",
        "yesterday",
        "this_week",
        "this_month",
        "last_month",
        "this_quarter",
        "last_quarter",
        "this_year",
        "last_year"
      ]
    },
    "direction": {
      "description": "Sort direction (default DESC).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (the account's profile default when omitted).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_get_client(client_id)

One client with address, tax ids, bank data, default currency/due days/discount and statistics. GET /clients/view/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "client_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Client id (from superfaktura_list_clients)."
    }
  },
  "required": [
    "client_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_contact_persons(client_id)

The contact persons (name, e-mail, phone) stored for one client. GET /contact_people/getContactPeople/{client_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "client_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Client id."
    }
  },
  "required": [
    "client_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_expenses(status, type, category_id, client_id, search, ...)

List received documents (expenses: received invoices, bills, internal documents) with amounts, VAT, supplier and payment status. status: issued (new), partially_paid, paid, overdue. Without a date filter SuperFaktura applies its default period; pass created_period='all' for everything. Paged: pass next_page as page. GET /expenses/index.json.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Payment status.",
      "type": "string",
      "enum": [
        "issued",
        "partially_paid",
        "paid",
        "overdue"
      ]
    },
    "type": {
      "description": "Expense type (note the vendor's spelling recieved_credit_note).",
      "type": "string",
      "enum": [
        "invoice",
        "bill",
        "contribution",
        "internal",
        "nondeductible",
        "recieved_credit_note"
      ]
    },
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Expense category id (superfaktura_list_expense_categories)."
    },
    "client_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Supplier (client) id."
    },
    "search": {
      "description": "Text to search for (matched by SuperFaktura in names, numbers, e-mails ... of the records).",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "amount_from": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "amount_to": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "created_period": {
      "description": "Issue date as a period.",
      "type": "string",
      "enum": [
        "all",
        "today",
        "yesterday",
        "this_week",
        "this_month",
        "last_month",
        "this_quarter",
        "last_quarter",
        "this_year",
        "last_year"
      ]
    },
    "created_since": {
      "description": "Issued on or after (yyyy-mm-dd).",
      "type": "string"
    },
    "created_to": {
      "description": "Issued on or before (yyyy-mm-dd).",
      "type": "string"
    },
    "direction": {
      "description": "Sort direction (default DESC).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (the account's profile default when omitted).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_get_expense(expense_id)

One expense with its items, VAT rates, payments and supplier. Attachments are not returned. GET /expenses/view/{id}.json.

Input Schema

{
  "type": "object",
  "properties": {
    "expense_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Expense id (from superfaktura_list_expenses)."
    }
  },
  "required": [
    "expense_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_expense_categories

The expense category tree (id, name, parent) for the category_id of expenses. GET /expenses/expense_categories.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_bank_accounts

The company's bank accounts as stored in SuperFaktura (bank name, IBAN, SWIFT, default flag). GET /bank_accounts/index.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_bank_moves(date_period, date_since, date_to, move_type, amount_from, ...)

Bank transactions imported into SuperFaktura (date, amount, currency, variable symbol, counter account, matching state), newest first by default. Filter by date range, credit/debit or amount. Paged: pass next_page as page. GET /accounts/index.json.

Input Schema

{
  "type": "object",
  "properties": {
    "date_period": {
      "description": "Transaction date as a period.",
      "type": "string",
      "enum": [
        "all",
        "today",
        "yesterday",
        "this_week",
        "this_month",
        "last_month",
        "this_quarter",
        "last_quarter",
        "this_year",
        "last_year"
      ]
    },
    "date_since": {
      "description": "Transactions on or after (yyyy-mm-dd).",
      "type": "string"
    },
    "date_to": {
      "description": "Transactions on or before (yyyy-mm-dd).",
      "type": "string"
    },
    "move_type": {
      "description": "credit = incoming, debit = outgoing.",
      "type": "string",
      "enum": [
        "credit",
        "debit"
      ]
    },
    "amount_from": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "amount_to": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "search": {
      "description": "Text to search for (matched by SuperFaktura in names, numbers, e-mails ... of the records).",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "direction": {
      "description": "Sort direction.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (the account's profile default when omitted).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_cash_registers

The company's cash registers with currency, number of entries and current balance (read only). GET /cash_registers/getDetails.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_get_cash_register(cash_register_id)

One cash register with currency, number of entries and current balance (read only). GET /cash_registers/view/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "cash_register_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Cash register id (from superfaktura_list_cash_registers)."
    }
  },
  "required": [
    "cash_register_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_stock_items(search, sku, in_stock_only, price_from, price_to, ...)

List warehouse items (name, SKU, unit, price, VAT, quantity in stock). search matches name, SKU and description; sku matches the SKU. Paged: pass next_page as page. GET /stock_items/index.json.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "description": "Text to search for (matched by SuperFaktura in names, numbers, e-mails ... of the records).",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "sku": {
      "description": "Search by SKU.",
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "in_stock_only": {
      "description": "true = only items that are in stock.",
      "type": "boolean"
    },
    "price_from": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "price_to": {
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000000
    },
    "direction": {
      "description": "Sort direction.",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (the account's profile default when omitted).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_get_stock_item(stock_item_id)

One warehouse item with SKU, price, VAT, purchase price and quantity in stock. GET /stock_items/view/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "stock_item_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Stock item id (from superfaktura_list_stock_items)."
    }
  },
  "required": [
    "stock_item_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_stock_movements(stock_item_id, direction, page, per_page)

The stock log of one item (quantity changes, notes, related invoice or expense). Paged: pass next_page as page. GET /stock_items/movements/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "stock_item_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Stock item id."
    },
    "direction": {
      "description": "Sort direction (default ASC).",
      "type": "string",
      "enum": [
        "ASC",
        "DESC"
      ]
    },
    "page": {
      "description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (the account's profile default when omitted).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "required": [
    "stock_item_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_tags

The tags (id and name) usable on invoices, expenses and clients. GET /tags/index.json.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_sequences

The document numbering sequences per document type (id, name, mask, next formatted number, default flag); sequence ids are used when creating documents. GET /sequences/index.json.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_list_countries

SuperFaktura's country ids with ISO code and EU flag, for the country_id of clients. GET /countries/index/view_full:1.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢superfaktura_get_response_by_checksum(checksum)

If a superfaktura_create_invoice call timed out, fetch the reply of the ORIGINAL request by the checksum it was sent with (kept 3 months), so the document is not created twice. GET /api_logs/getResponseByChecksum/{checksum}.

Input Schema

{
  "type": "object",
  "properties": {
    "checksum": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._-]{1,32}$",
      "description": "The checksum given to superfaktura_create_invoice."
    }
  },
  "required": [
    "checksum"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴superfaktura_create_client(name, ico, dic, ic_dph, address, ...)

WRITE: adds a new client to the SuperFaktura address book (only the name is required). Nothing is sent to the client. Not idempotent: calling twice creates two clients, so check superfaktura_list_clients first. POST /clients/create.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Client name (company or person)."
    },
    "ico": {
      "description": "Company id (IČO).",
      "type": "string",
      "maxLength": 40
    },
    "dic": {
      "description": "Tax id (DIČ, Slovak).",
      "type": "string",
      "maxLength": 40
    },
    "ic_dph": {
      "description": "VAT id (IČ DPH in Slovakia, DIČ in the Czech Republic).",
      "type": "string",
      "maxLength": 40
    },
    "address": {
      "description": "Street and number.",
      "type": "string",
      "maxLength": 255
    },
    "city": {
      "type": "string",
      "maxLength": 255
    },
    "zip": {
      "type": "string",
      "maxLength": 20
    },
    "country_id": {
      "description": "Country id (superfaktura_list_countries); Slovakia is 191. Defaults to the instance's country.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "email": {
      "description": "Client e-mail (stored only; nothing is sent to it).",
      "type": "string",
      "maxLength": 254,
      "pattern": "^[^\\s@]+@[^\\s@]+$"
    },
    "phone": {
      "type": "string",
      "maxLength": 40
    },
    "comment": {
      "description": "Internal note on the client.",
      "type": "string",
      "maxLength": 2000
    },
    "iban": {
      "type": "string",
      "maxLength": 40
    },
    "swift": {
      "type": "string",
      "maxLength": 20
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴superfaktura_add_contact_person(client_id, name, email, phone)

WRITE: adds a contact person (name and e-mail, optional phone) to an existing client. Nothing is sent to that person. Not idempotent. POST /contact_people/add/api:1.

Input Schema

{
  "type": "object",
  "properties": {
    "client_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Existing client id."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Contact person's name."
    },
    "email": {
      "type": "string",
      "maxLength": 254,
      "pattern": "^[^\\s@]+@[^\\s@]+$",
      "description": "Contact person's e-mail (stored only)."
    },
    "phone": {
      "type": "string",
      "maxLength": 40
    }
  },
  "required": [
    "client_id",
    "name",
    "email"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴superfaktura_create_tag(name)

WRITE: adds a new tag name (usable on invoices, expenses and clients in the SuperFaktura app). A duplicate name is refused by SuperFaktura. POST /tags/add.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Tag name."
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴superfaktura_create_expense(name, amount, vat, currency, type, ...)

WRITE: records a received document (expense) with ONE total amount and VAT rate, e.g. a supplier invoice or a bill. It is created unpaid: no payment is recorded and nothing is sent. No attachments. Not idempotent: calling twice records two expenses. POST /expenses/add.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 250,
      "description": "Expense name / what it is for."
    },
    "amount": {
      "type": "number",
      "minimum": -1000000000000,
      "maximum": 1000000000000,
      "description": "Amount WITHOUT VAT."
    },
    "vat": {
      "description": "VAT rate in percent (default 0).",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "3-letter currency code, e.g. EUR, CZK."
    },
    "type": {
      "description": "Expense type (default invoice = received invoice).",
      "type": "string",
      "enum": [
        "invoice",
        "bill",
        "internal",
        "nondeductible"
      ]
    },
    "created": {
      "description": "Issue date (default today).",
      "type": "string"
    },
    "delivery": {
      "description": "Delivery date (default today).",
      "type": "string"
    },
    "due": {
      "description": "Due date (default today).",
      "type": "string"
    },
    "document_number": {
      "description": "The supplier's document number.",
      "type": "string",
      "maxLength": 60
    },
    "variable": {
      "description": "Variable symbol.",
      "type": "string",
      "maxLength": 40
    },
    "client_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Supplier (client) id from superfaktura_list_clients."
    },
    "category_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Expense category id from superfaktura_list_expense_categories."
    },
    "comment": {
      "description": "Comment.",
      "type": "string",
      "maxLength": 2000
    }
  },
  "required": [
    "name",
    "amount"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴superfaktura_create_invoice(type, name, client_id, client_name, client_ico, ...)

WRITE: creates ONE document in SuperFaktura for the user to review: type draft (concept, default), estimate (quote), order or proforma. A final regular invoice cannot be created here. It is NOT sent (no e-mail, no post), NOT marked paid or sent, and has no payment link or discount. Give an existing client_id (its name is read first with one extra GET /clients/view/{id}, so the call uses 2 requests of the daily quota) OR a new client's name (+ optional ico/dic/ic_dph/address...). Items: name, unit price without VAT, VAT rate, quantity. Not idempotent: pass a checksum (max 32 chars) so a timed-out call can be recovered with superfaktura_get_response_by_checksum instead of retried. POST /invoices/create.

Input Schema

{
  "type": "object",
  "properties": {
    "type": {
      "description": "Document type: draft (default), estimate, order or proforma.",
      "type": "string",
      "enum": [
        "draft",
        "estimate",
        "order",
        "proforma"
      ]
    },
    "name": {
      "description": "Document title (default generated from the number).",
      "type": "string",
      "minLength": 1,
      "maxLength": 250
    },
    "client_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Existing client id (superfaktura_list_clients). Give this OR client_name."
    },
    "client_name": {
      "description": "Name of a new/matching client (used when client_id is not given).",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "client_ico": {
      "description": "Client company id (IČO), with client_name.",
      "type": "string",
      "maxLength": 40
    },
    "client_dic": {
      "description": "Client tax id (DIČ), with client_name.",
      "type": "string",
      "maxLength": 40
    },
    "client_ic_dph": {
      "description": "Client VAT id, with client_name.",
      "type": "string",
      "maxLength": 40
    },
    "client_address": {
      "description": "Client street and number, with client_name.",
      "type": "string",
      "maxLength": 255
    },
    "client_city": {
      "description": "Client city, with client_name.",
      "type": "string",
      "maxLength": 255
    },
    "client_zip": {
      "description": "Client ZIP, with client_name.",
      "type": "string",
      "maxLength": 20
    },
    "client_country_id": {
      "description": "Client country id (superfaktura_list_countries), with client_name.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 1000
    },
    "client_email": {
      "description": "Client e-mail, with client_name (stored only; nothing is sent).",
      "type": "string",
      "maxLength": 254,
      "pattern": "^[^\\s@]+@[^\\s@]+$"
    },
    "items": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 250,
            "description": "Item name."
          },
          "description": {
            "description": "Item description shown on the document.",
            "type": "string",
            "maxLength": 5000
          },
          "quantity": {
            "description": "Quantity (default 1).",
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000000
          },
          "unit": {
            "description": "Unit, e.g. ks, h, m.",
            "type": "string",
            "maxLength": 20
          },
          "unit_price": {
            "type": "number",
            "minimum": -1000000000,
            "maximum": 1000000000,
            "description": "Unit price WITHOUT VAT (the full price when the company is not a VAT payer)."
          },
          "tax": {
            "description": "VAT rate in percent, e.g. 20 (use 0 when the company is not a VAT payer).",
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        },
        "required": [
          "name",
          "unit_price"
        ]
      },
      "description": "1-100 items."
    },
    "created": {
      "description": "Issue date (default today).",
      "type": "string"
    },
    "delivery": {
      "description": "Delivery date.",
      "type": "string"
    },
    "due": {
      "description": "Due date.",
      "type": "string"
    },
    "invoice_currency": {
      "type": "string",
      "pattern": "^[A-Z]{3}$",
      "description": "3-letter currency code, e.g. EUR, CZK."
    },
    "variable": {
      "description": "Variable symbol (the document number when empty).",
      "type": "string",
      "maxLength": 40
    },
    "constant": {
      "description": "Constant symbol.",
      "type": "string",
      "maxLength": 10
    },
    "specific": {
      "description": "Specific symbol.",
      "type": "string",
      "maxLength": 20
    },
    "order_no": {
      "description": "Order number.",
      "type": "string",
      "maxLength": 40
    },
    "sequence_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Numbering sequence id (superfaktura_list_sequences)."
    },
    "header_comment": {
      "description": "Comment above the items (shown on the document).",
      "type": "string",
      "maxLength": 5000
    },
    "comment": {
      "description": "Comment on the document.",
      "type": "string",
      "maxLength": 5000
    },
    "internal_comment": {
      "description": "Internal comment (not shown on the document).",
      "type": "string",
      "maxLength": 5000
    },
    "checksum": {
      "description": "Your own unique token (max 32 chars) to recover the reply if the call times out.",
      "type": "string",
      "pattern": "^[A-Za-z0-9._-]{1,32}$"
    }
  },
  "required": [
    "items"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded25 tools