Invoqk API and MCP server
Validate XRechnung and Peppol BIS e-invoices, turn invoice details into e-invoice XML, and run the invoice calculators from your code or your AI assistant. Create a free key in Settings (a verified account is needed). Free accounts get 100 calls a day, Pro gets 5,000. Nothing you send is stored.
Quickstart
Check an e-invoice file with one command:
curl -X POST https://www.invoqk.com/api/v1/einvoice/validate \ -H "Authorization: Bearer $INVOQK_KEY" \ -H "Content-Type: application/xml" \ --data-binary @invoice.xml
Send application/xml or application/pdf (a ZUGFeRD PDF) as the raw body, or JSON with xml or pdfBase64. Bodies are limited to 4 MB. Every other endpoint takes JSON.
Endpoints
POST /api/v1/einvoice/validateValidate an e-invoice (XRechnung, Peppol BIS, EN 16931 UBL or CII XML, or the XML inside a ZUGFeRD PDF) against the official rules. Returns a verdict, errors, warnings and the parsed invoice. Nothing is stored.POST /api/v1/einvoice/convertTurn invoice details into an XRechnung or Peppol BIS e-invoice XML. Plain text is read by rules (any plan). A PDF is read by AI and needs a Pro plan; it uses the same AI quota as the app. The result lists missing fields and validates the XML.POST /api/v1/calc/vatAdd or remove VAT, or apply reverse charge. Returns net, VAT and gross.POST /api/v1/calc/late-feeLate payment fee on an overdue invoice, by a stated monthly percentage or the statutory rule (UK / EU directive).POST /api/v1/calc/hourlyInvoice total from hours, rate, expenses, discount and tax.POST /api/v1/calc/markupMarkup and margin from cost and price, or the price from cost and markup percent.POST /api/v1/calc/sales-taxAdd or remove sales tax at a given rate. Returns net, tax and gross.
Errors are JSON like { "error": "quota_exceeded", "message": "…" } with status 401 (bad key), 403 (needs Pro), 413 (too large), 422 (bad input) or 429 (daily limit). The full description is in OpenAPI format.
Converting a PDF or scan to e-invoice XML needs a Pro plan and uses the same AI quota as the app. Converting plain text works on every plan.
MCP server
Give Claude or another MCP client the same tools. The server is remote and uses the same key, sent as a Bearer header. Every tool call counts toward your daily limit.
claude mcp add --transport http invoqk https://www.invoqk.com/api/mcp \ --header "Authorization: Bearer $INVOQK_KEY"
Or, in a client that reads a JSON config:
{
"mcpServers": {
"invoqk": {
"type": "http",
"url": "https://www.invoqk.com/api/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}Tools: validate_einvoice, convert_to_einvoice, calculate_vat, calculate_late_fee, calculate_hourly, calculate_markup, calculate_sales_tax. Clients that only support OAuth sign-in cannot connect yet.