Skip to main content
Glama
ohneben

Buchhaltungsbutler MCP

Invoices: create e-invoice

invoices_create_e_invoice

Create a structured electronic invoice for customers requiring formats like German XRechnung. Use this when a recipient needs an e-invoice instead of a standard PDF invoice.

Instructions

🟡 WRITE · creates data: Creates new records (receipts, transactions, postings, invoices, master data). Not idempotent: calling twice may create duplicates.

create e-invoice

Add an e-invoice for the specified customer.

Use when the recipient requires a structured electronic invoice, for example a German public-sector customer expecting XRechnung.

For an ordinary PDF invoice, use invoices_create.

Not idempotent. v1 offers no endpoint to list or cancel an e-invoice once created.

Endpoint: POST /invoices/create/e-invoice

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
zipYesThe zip of the recipient company. If specified, the field will be validated.
cityYesThe city of the recipient company. If specified, the field will be validated.
dateYesThe date of the invoice.
typeYesCan be either 'invoice' ("Rechnung"), 'credit' ("Gutschrift") or 'offer' ("Angebot").
emailYesThe email for sending the invoice. If specified, the field will be validated.
streetYesThe street of the recipient company. If specified, the field will be validated.
countryYesThe country of the recipient company. If specified, the field will be validated. Valid cases are only the German version of the country name [Dänemark] OR the two digit ISO code of the country [DK].
due_daysNoThe number of days between the invoice date and the due date. If not specified due date will be set to invoice date (due_days = 0).
languageNoThe language for translatable invoice labels (e.g. headings, table headers, payment terms). Can be either 'de_DE' ("Deutsch", default) or 'en_US' ("English"). If omitted, German is used.
item_nameYesAn array of invoice items. Usage: "item_name" : ['Item 1', 'Item 2']
item_unitYesAn array of invoice items units. Usage: "item_unit" : ['Std.', 'Stk.']
item_amountYesAn array of invoice item amounts. Usage: "item_amount" : ['10', '20']
company_nameYesThe company name of the recipient.
e_invoice_idYesBuyer reference (default: 0). If you do not have a reference, please enter "0". A valid is mandatory for e-invoices to public contracting authorities and is provided by the recipient.
discount_typeNoThe type of the discount. Can be either 'percent' or 'EUR'. If specified, the field will be validated.
invoicenumberNoThe invoicenumber for the invoice. If not specified, the default BHB number will be created. If specified, the field will be validated.
item_tax_typeYesAn array of invoice item tax types. Usage: "item_vat" : ['S', 'E'] Valid tax types are the following: S - VAT (standard rate) Z - 0% VAT AE - Reverse Charge (§13b) K - EU Supply (Intra-community supply) G - Third Country Supply (Export) E - VAT Exempt Supply & Services
show_bankdataNoShow the the bank data on the invoice. If specified, the field will be validated.
correspondenceNoThe optional correspondence to the invoice recipient. If specified, the field will be validated.
date_of_supplyNoDate or period of service/delivery. NOTE: The date_of_supply will be displayed on the PDF, but when the date AND the date_of_supply is specified in the format "YYYY-MM-DD", the date_of_supply will also be taken over as date_delivery of the receipt in the 'Belege' or 'Belege/Buchen' view. IMPORTANT: Due to the DATEV compatibility, we cannot accept a date_of_supply that is after the invoice date. In that case it will be ignored!
discount_valueNoThe value of granted discount. If specified, the field will be validated.
customer_numberNoThe customer number of the recipient. If specified, the field will be validated.
item_tax_amountYesOnly required if corresponding item_tax_type = 'S' (VAT). An array of invoice item vats. Usage: "item_tax_amount" : ['7', '19'] Valid vat rates are floating point numbers between 0 and 100.
final_provisionsNoThe final comment of the invoice. If specified, the field will be validated.
item_descriptionNoAn array of invoice item description. Usage: "item_description" : ['Description Item 1', 'Description Item 2']. If specified, the field will be validated.
show_contactdataNoShow the contact data on the invoice. If specified, the field will be validated.
show_prices_typeYesCan be either 'net' ("Netto") or 'gross' ("Brutto").
item_single_priceYesAn array of invoice item single_prices. Usage: "item_single_price" : ['20', '19.99']
payment_referenceNoThe payment reference id. If specified correctly, the resulting receipt of the created invoice will match with the corresponding transaction. NOTE: Currently we support Amazon order id, PayPal transaction id and Stripe transaction id!
payment_conditionsNoThe payment conditions of the invoice. If specified, the field will be validated.
recurring_intervalNoAn interval for recurring invoices. Can be either 'weekly', 'monthly', 'quarterly' or 'yearly'. If specified, the field will be validated.
contact_person_nameNoThe name of the contact person of the recipient company. If specified, the field will be validated.
recurring_date_nextNoThe next date of a recurring invoice. IMPORTANT: The field is required, if "recurring_interval" is specified. If specified, the field will be validated.
additional_addresslineNoThe additional address information of the recipient company. If specified, the field will be validated.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
messageNoblank
successYesSuccess boolean
file_nameNoFilename of the created invoice
invoicenumberNoblank
id_by_customerNoblank

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.1.2
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "file_name": {
      +      "description": "Filename of the created invoice",
      +      "type": "string"
      +    },
      +    "id_by_customer": {
      +      "description": "blank",
      +      "type": "string"
      +    },
      +    "invoicenumber": {
      +      "description": "blank",
      +      "type": "string"
      +    },
      +    "message": {
      +      "description": "blank",
      +      "type": "string"
      +    },
      +    "success": {
      +      "description": "Success boolean",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "success"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changedv1.1.0
    • removedInput schema / properties / api_key
      Removed value: -{
      -  "description": "Optional. The BB customer api_key to act on. Defaults to the BB_API_KEY configured on the server — only set this to target a different customer.",
      -  "type": "string"
      -}
  3. Changed1 schema field changedv1.0.2
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "The language for translatable invoice labels (e.g. headings, table headers, payment terms). Can be either 'de_DE' (\"Deutsch\", default) or 'en_US' (\"English\").\n\nIf omitted, German is used.",
      +  "type": "string"
      +}
  4. First observedv1.0.0

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate readOnlyHint=false and idempotentHint=false, and the description adds meaningful behavioral context: 'Not idempotent: calling twice may create duplicates' and 'v1 offers no endpoint to list or cancel an e-invoice once created.' This tells the agent the write is non-reversible through the API, which is valuable beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the write nature, definition, use case, alternative, and caveat. It is slightly redundant: 'Not idempotent' is repeated twice, but the rest is purposeful and well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a large 34-parameter tool with 16 required parameters, the schema carries most of the invocation burden, and the description supplies the missing selection context: when to choose e-invoice vs `invoices_create`, the no-list/no-cancel caveat, and the endpoint. It could mention `invoices_create_draft` as another sibling option, but that is not essential for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% schema description coverage, so the description does not need to repeat parameter details. The description only refers generically to 'the specified customer' and does not add parameter-level meaning beyond the schema, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Add an e-invoice for the specified customer.' It also differentiates from the sibling tool `invoices_create` by explicitly saying that ordinary PDF invoices should use that tool instead, so an agent can immediately distinguish the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use condition: when the recipient requires a structured electronic invoice, with a concrete example (German public-sector customer expecting XRechnung). It also names the alternative (`invoices_create` for ordinary PDF invoices) and warns about the non-reversibility limitation, which helps prevent misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.