bexio MCP by usefulapi
Read bexio contacts, invoices, quotes, bills, projects and journal; log time, draft invoices.
Should I use this
Quality & Safety
Findings (8)
- HIGH
- MEDIUMin bexio_list_bills
- LOWin bexio_list_users
- LOWin bexio_get_quote
- LOWin bexio_get_order
- LOWin bexio_list_taxes
- LOWin bexio_list_bills
- INFOin bexio_list_bills
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"bexio": {
"url": "https://bexio.usefulapi.io/mcp"
}
}
}Remote endpoints
https://bexio.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (28)
π’bexio_get_company_profile
The bexio company's profile: name, address, legal form, VAT (MWST) and UID numbers, contact details. Each bexio account has one profile.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_get_current_user
The signed-in bexio user (id, name, email, superadmin/accountant flags). Its id is the default user_id of new records.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_users(limit, offset)
The company's bexio users (id, name, email). Use an id as user_id or owner of contacts, documents and timesheets.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_contacts(name, first_name, email, nr, city, ...)
List or search contacts (customers, suppliers, persons, companies). Without filters it pages through all contacts; with filters it uses bexio's contact search (all filters must match). name_1 is the company name or a person's last name, name_2 a person's first name.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "name_1 (company name or last name) contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"first_name": {
"description": "name_2 (a person's first name or a company's name addition) contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"email": {
"description": "Main email contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"nr": {
"description": "Contact number equals this.",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"city": {
"description": "City contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"postcode": {
"description": "Postcode equals this.",
"type": "string",
"minLength": 1,
"maxLength": 20
},
"contact_type": {
"description": "Only companies or only persons.",
"type": "string",
"enum": [
"company",
"person"
]
},
"updated_since": {
"description": "Changed on or after this date, yyyy-mm-dd.",
"type": "string"
},
"archived": {
"description": "true = archived contacts only (default: active contacts).",
"type": "boolean"
},
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"nr",
"name_1",
"updated_at"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_get_contact(contact_id, archived)
One contact with its address, emails, phones, language, groups and remarks.
Input Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The contact id (from bexio_list_contacts)."
},
"archived": {
"description": "true when the contact is archived.",
"type": "boolean"
}
},
"required": [
"contact_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_invoices(status, contact_id, user_id, document_nr, title, ...)
List or search sales invoices (number, contact, totals, open amount, dates, status). Statuses: draft, pending (issued, open), paid, partial (partially paid), canceled, unpaid (overdue reminder state). Without filters it pages through all invoices; with filters all must match.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Only invoices with one of these statuses.",
"minItems": 1,
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"enum": [
"draft",
"pending",
"paid",
"partial",
"canceled",
"unpaid"
]
}
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only documents for this contact (from bexio_list_contacts)."
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only documents owned by this bexio user (from bexio_list_users)."
},
"document_nr": {
"description": "Document number contains this text (e.g. RE-00012).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"title": {
"description": "Title contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"valid_from_after": {
"description": "Document date (is_valid_from) on or after this date, yyyy-mm-dd.",
"type": "string"
},
"valid_from_before": {
"description": "Document date (is_valid_from) on or before this date, yyyy-mm-dd.",
"type": "string"
},
"updated_since": {
"description": "Changed on or after this date, yyyy-mm-dd.",
"type": "string"
},
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"total",
"total_net",
"total_gross",
"updated_at"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_get_invoice(invoice_id)
One invoice with its positions (line items), taxes, totals, received payments and remaining amount.
Input Schema
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The invoice id (from bexio_list_invoices)."
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_invoice_payments(invoice_id, limit, offset)
The payments recorded on one invoice (date, amount, bank account, cash discount).
Input Schema
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The invoice id (from bexio_list_invoices)."
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_quotes(status, contact_id, user_id, document_nr, title, ...)
List or search quotes (Offerten): number, contact, totals, validity, status (draft, pending, confirmed, declined). With filters all must match.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Only quotes with one of these statuses.",
"minItems": 1,
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"enum": [
"draft",
"pending",
"confirmed",
"declined"
]
}
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only documents for this contact (from bexio_list_contacts)."
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only documents owned by this bexio user (from bexio_list_users)."
},
"document_nr": {
"description": "Document number contains this text (e.g. RE-00012).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"title": {
"description": "Title contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"valid_from_after": {
"description": "Document date (is_valid_from) on or after this date, yyyy-mm-dd.",
"type": "string"
},
"valid_from_before": {
"description": "Document date (is_valid_from) on or before this date, yyyy-mm-dd.",
"type": "string"
},
"updated_since": {
"description": "Changed on or after this date, yyyy-mm-dd.",
"type": "string"
},
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"total",
"total_net",
"total_gross",
"updated_at"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_get_quote(quote_id)
One quote with its positions, taxes and totals.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The quote id (from bexio_list_quotes)."
}
},
"required": [
"quote_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_orders(status, contact_id, user_id, document_nr, title, ...)
List or search sales orders (AuftrΓ€ge): number, contact, totals, recurring flag, status (pending, done, partial, canceled). With filters all must match.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Only orders with one of these statuses.",
"minItems": 1,
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"enum": [
"pending",
"done",
"partial",
"canceled"
]
}
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only documents for this contact (from bexio_list_contacts)."
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only documents owned by this bexio user (from bexio_list_users)."
},
"document_nr": {
"description": "Document number contains this text (e.g. RE-00012).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"title": {
"description": "Title contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"valid_from_after": {
"description": "Document date (is_valid_from) on or after this date, yyyy-mm-dd.",
"type": "string"
},
"valid_from_before": {
"description": "Document date (is_valid_from) on or before this date, yyyy-mm-dd.",
"type": "string"
},
"updated_since": {
"description": "Changed on or after this date, yyyy-mm-dd.",
"type": "string"
},
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"total",
"total_net",
"total_gross",
"updated_at"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_get_order(order_id)
One sales order with its positions, taxes and totals.
Input Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The order id (from bexio_list_orders)."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_articles(name, code, order_by, descending, limit, ...)
List or search items / products (Artikel): code, name, sale and purchase price, tax, unit, stock levels. Use an id as article_id in a draft invoice.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Item name (intern_name) contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"code": {
"description": "Item code (intern_code) contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"intern_name"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_projects(name, contact_id, state_id, order_by, descending, ...)
List or search projects: number, name, contact, state, type, dates, budget. With filters all must match.
Input Schema
{
"type": "object",
"properties": {
"name": {
"description": "Project name contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only projects of this contact."
},
"state_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only projects in this state (pr_state_id as returned on a project)."
},
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"name"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_get_project(project_id)
One project with its contact, state, type, dates, invoicing and budget settings.
Input Schema
{
"type": "object",
"properties": {
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The project id (from bexio_list_projects)."
}
},
"required": [
"project_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_timesheets(user_id, contact_id, project_id, business_activity_id, status_id, ...)
List or search time tracking entries: date, duration, text, user, contact, project, business activity, billable flag. With filters all must match.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only entries of this bexio user."
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only entries for this contact."
},
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only entries on this project."
},
"business_activity_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only entries of this business activity (client_service_id, from bexio_list_business_activities)."
},
"status_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only entries with this timesheet status id."
},
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"date"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_business_activities(order_by, descending, limit, offset)
Business activities (TΓ€tigkeiten) for time tracking: id, name, billable default, hourly rate. A timesheet needs one.
Input Schema
{
"type": "object",
"properties": {
"order_by": {
"description": "Sort field (default id).",
"type": "string",
"enum": [
"id",
"name"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_accounts(limit, offset)
The chart of accounts: account number, name, type (1 earning, 2 expenditure, 3 active/asset, 4 passive/liability, 5 complete/closing), default tax, active/locked flags.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_journal(from, to, account_uuid, limit, offset)
Accounting journal bookings: date, debit and credit account ids, description, amount, currency, base-currency amount, and the source document (ref_class, ref_id).
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "Bookings on or after this date, yyyy-mm-dd.",
"type": "string"
},
"to": {
"description": "Bookings up to this date, yyyy-mm-dd.",
"type": "string"
},
"account_uuid": {
"description": "Only bookings on this account (its uuid from bexio_list_accounts).",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_taxes(scope, types, date, limit, offset)
VAT (MWST) tax codes: id, code, rate, type (sales_tax, pre_tax, ...), validity. For a draft invoice use an active sales tax (types sales_tax, scope active).
Input Schema
{
"type": "object",
"properties": {
"scope": {
"description": "Only active or inactive taxes.",
"type": "string",
"enum": [
"active",
"inactive"
]
},
"types": {
"description": "Only sales taxes or input (pre) taxes.",
"type": "string",
"enum": [
"sales_tax",
"pre_tax"
]
},
"date": {
"description": "Only taxes active on this date, yyyy-mm-dd.",
"type": "string"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_bank_accounts(limit, offset)
The company's bank accounts shown in bexio banking: name, bank, IBAN / QR-IBAN, currency, linked ledger account, QR-invoice mode.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_currencies(with_exchange_rate, date, limit, offset)
Currencies set up in bexio (id, code such as CHF or EUR, rounding), optionally with the exchange rate valid on a date. Use an id as currency_id.
Input Schema
{
"type": "object",
"properties": {
"with_exchange_rate": {
"description": "Embed each currency's exchange rate.",
"type": "boolean"
},
"date": {
"description": "Validity date of the embedded exchange rate, yyyy-mm-dd.",
"type": "string"
},
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_business_years(limit, offset)
Accounting business (fiscal) years: start, end, status (open, locked, closed).
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Results per page, 1-2000 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 2000
},
"offset": {
"description": "Records to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 10000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’bexio_list_bills(status, search, vendor, supplier_id, bill_date_from, ...)
Supplier bills (Kreditoren / purchase bills): document number, vendor, title, status, gross/net, pending amount, bill and due date, overdue flag. status: DRAFTS, TODO (booked, not fully paid), PAID, OVERDUE.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Bill status filter.",
"type": "string",
"enum": [
"DRAFTS",
"TODO",
"PAID",
"OVERDUE"
]
},
"search": {
"description": "Free-text search over vendor, vendor reference, currency, document number and title (3-255 characters).",
"type": "string",
"minLength": 3,
"maxLength": 255
},
"vendor": {
"description": "Vendor name contains this text.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"supplier_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Only bills of this supplier contact."
},
"bill_date_from": {
"description": "Bill date on or after, yyyy-mm-dd.",
"type": "string"
},
"bill_date_to": {
"description": "Bill date on or before, yyyy-mm-dd.",
"type": "string"
},
"due_date_from": {
"description": "Due date on or after, yyyy-mm-dd.",
"type": "string"
},
"due_date_to": {
"description": "Due date on or before, yyyy-mm-dd.",
"type": "string"
},
"sort": {
"description": "Sort field.",
"type": "string",
"enum": [
"document_no",
"bill_date",
"due_date",
"vendor",
"gross",
"pending_amount",
"created_at"
]
},
"descending": {
"description": "Sort descending (default ascending).",
"type": "boolean"
},
"page": {
"description": "Page number, 1-based (default 1).",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"limit": {
"description": "Bills per page, 1-500 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 500
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π΄bexio_create_contact(contact_type, name, first_name, street_name, house_number, ...)
WRITE: create a new contact (company or person) in bexio. Nothing existing is changed. For a person, name is the last name and first_name the first name. Owner and responsible user default to the signed-in user.
Input Schema
{
"type": "object",
"properties": {
"contact_type": {
"type": "string",
"enum": [
"company",
"person"
],
"description": "company or person."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Company name, or a person's last name (name_1)."
},
"first_name": {
"description": "A person's first name, or a company's name addition (name_2).",
"type": "string",
"maxLength": 255
},
"street_name": {
"description": "Street name.",
"type": "string",
"maxLength": 255
},
"house_number": {
"description": "House number.",
"type": "string",
"maxLength": 50
},
"address_addition": {
"description": "Address addition (c/o, P.O. box).",
"type": "string",
"maxLength": 255
},
"postcode": {
"description": "Postcode.",
"type": "string",
"maxLength": 20
},
"city": {
"description": "City.",
"type": "string",
"maxLength": 255
},
"country_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "bexio country id (1 = Switzerland in a default bexio setup)."
},
"email": {
"description": "Main email.",
"type": "string",
"maxLength": 255,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"description": "Landline phone.",
"type": "string",
"maxLength": 50
},
"mobile": {
"description": "Mobile phone.",
"type": "string",
"maxLength": 50
},
"website": {
"description": "Website URL.",
"type": "string",
"maxLength": 255
},
"remarks": {
"description": "Internal remarks.",
"type": "string",
"maxLength": 10000
},
"language_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "bexio language id of the contact's correspondence language."
},
"contact_group_ids": {
"description": "Contact group ids.",
"maxItems": 50,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "A contact group id."
}
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Responsible bexio user (default: the signed-in user)."
},
"owner_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Owner bexio user (default: the responsible user)."
}
},
"required": [
"contact_type",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π΄bexio_create_note(subject, info, contact_id, project_id, event_start, ...)
WRITE: add a note (call log, meeting minutes, follow-up) to a contact and/or project in bexio. Nothing existing is changed.
Input Schema
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Note subject."
},
"info": {
"description": "Note text.",
"type": "string",
"maxLength": 20000
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Attach to this contact."
},
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Attach to this project."
},
"event_start": {
"description": "When it happened, local time yyyy-mm-dd HH:MM[:SS] (default: now, UTC).",
"type": "string"
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Author bexio user (default: the signed-in user)."
}
},
"required": [
"subject"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π΄bexio_create_timesheet(business_activity_id, date, duration, start, end, ...)
WRITE: log time in bexio: either date + duration (HH:MM), or start + end. Needs a business activity (bexio_list_business_activities). Nothing existing is changed.
Input Schema
{
"type": "object",
"properties": {
"business_activity_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The business activity (client_service_id) from bexio_list_business_activities."
},
"date": {
"description": "Work date, yyyy-mm-dd (with duration).",
"type": "string"
},
"duration": {
"description": "Time worked as HH:MM, e.g. 01:30 (with date).",
"type": "string",
"pattern": "^\\d{1,3}:[0-5]\\d$"
},
"start": {
"description": "Start, local time yyyy-mm-dd HH:MM[:SS] (with end).",
"type": "string"
},
"end": {
"description": "End, local time yyyy-mm-dd HH:MM[:SS] (with start).",
"type": "string"
},
"text": {
"description": "What was done.",
"type": "string",
"maxLength": 10000
},
"billable": {
"description": "Billable to the client (default true).",
"type": "boolean"
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The client contact."
},
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The project."
},
"status_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Timesheet status id (bexio's default when omitted)."
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Whose time (default: the signed-in user)."
}
},
"required": [
"business_activity_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π΄bexio_create_draft_invoice(contact_id, positions, title, document_nr, contact_sub_id, ...)
WRITE: create a DRAFT invoice in bexio for a contact, with custom, item (article) and text lines. It is never issued, sent or booked: the user reviews and issues it in bexio. Taxes must be active sales taxes (bexio_list_taxes with types sales_tax, scope active).
Input Schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The customer contact (from bexio_list_contacts)."
},
"positions": {
"minItems": 1,
"maxItems": 150,
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"custom",
"article",
"text"
],
"description": "custom = a free line (text, amount, unit_price, tax_id); article = an existing item (article_id, amount, tax_id); text = a text-only line."
},
"text": {
"description": "Line text (required for custom and text lines; for article lines the item's text is used when omitted).",
"type": "string",
"maxLength": 10000
},
"amount": {
"description": "Quantity (max. 6 decimals). Required for custom and article lines.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000
},
"unit_price": {
"description": "Price per unit (max. 6 decimals). Required for custom lines; article lines default to the item's price.",
"type": "number",
"minimum": -1000000000,
"maximum": 1000000000
},
"tax_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "An ACTIVE sales tax (bexio_list_taxes with types sales_tax, scope active). Required for custom and article lines."
},
"article_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "The item (from bexio_list_articles). Required for article lines only."
},
"account_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Revenue account (from bexio_list_accounts); bexio's default when omitted."
},
"unit_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Unit id (bexio's units, e.g. hours); none when omitted."
},
"discount_in_percent": {
"description": "Line discount in percent.",
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"type"
]
},
"description": "1-150 invoice lines."
},
"title": {
"description": "Invoice title.",
"type": "string",
"maxLength": 255
},
"document_nr": {
"description": "Invoice number. Only when automatic numbering is OFF in bexio's settings (then it is required); leave empty with automatic numbering.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"contact_sub_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "A contact person of the customer."
},
"project_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Link to this project."
},
"valid_from": {
"description": "Invoice date, yyyy-mm-dd (default today).",
"type": "string"
},
"valid_to": {
"description": "Due date, yyyy-mm-dd (default from the payment terms).",
"type": "string"
},
"tax_mode": {
"description": "net = unit prices are net and VAT is added (default); gross = unit prices include VAT; exempt = the invoice is exempt from VAT.",
"type": "string",
"enum": [
"net",
"gross",
"exempt"
]
},
"currency_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Currency (from bexio_list_currencies); company default when omitted."
},
"bank_account_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Bank account for the payment slip (from bexio_list_bank_accounts); default when omitted."
},
"language_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Document language id; the contact's language when omitted."
},
"payment_type_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Payment type id; default when omitted."
},
"header": {
"description": "Text above the lines.",
"type": "string",
"maxLength": 10000
},
"footer": {
"description": "Text below the lines.",
"type": "string",
"maxLength": 10000
},
"reference": {
"description": "Customer reference shown on the invoice.",
"type": "string",
"maxLength": 255
},
"api_reference": {
"description": "Your own external reference (only visible through the API).",
"type": "string",
"maxLength": 255
},
"user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 2147483647,
"description": "Responsible bexio user (default: the signed-in user)."
}
},
"required": [
"contact_id",
"positions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence