canonical: https://jentic.com/apis/bexio.com/bexio

# bexio API

The bexio API provides programmatic access to Switzerland's leading SME business management and accounting platform, covering contacts, invoices, quotes, orders, deliveries, products, projects, time tracking, and accounting ledgers. Agents can create and manage invoices in CHF, EUR and other currencies, track payments, sync product catalogues, and book accounting entries. The API uses OAuth bearer tokens and supports the full quote-to-cash workflow used by Swiss small businesses. Rate limits and idempotency depend on the bexio plan tier.

## For AI agents

Manage Swiss SME accounting workflows: create invoices, quotes, and orders, sync contacts, and book ledger entries through bexio's business management platform.

## Scope

Does not handle payment processing, payroll, or banking transfers - use for Swiss SME accounting, invoicing, and contact management only.

## Capabilities

- Create and send invoices in multiple currencies and email them to customers
- Generate quotes and convert accepted quotes into orders or invoices
- Sync contact records between bexio and external CRM systems
- Track product stock levels and update the bexio product catalogue
- Record customer payments and reconcile them against open invoices
- Log time entries against projects for billing and reporting
- Book journal entries into the bexio accounting ledger

## Use cases

### Quote-to-Cash Automation

Automate the full sales cycle from quote generation to invoice payment for Swiss SMEs. Agents can create a quote with line items, monitor its status, convert it into an order on acceptance, generate the corresponding invoice, and reconcile the incoming payment against the bexio ledger. Typical integration time through the bexio API is 1-2 weeks for a complete workflow.

Example prompt: Create a quote in bexio for contact ID 1234 with two line items totalling 2500 CHF, then convert it to an order once the quote status changes to accepted.

### Contact and CRM Synchronisation

Keep customer and supplier records in sync between bexio and an external CRM such as HubSpot or Pipedrive. The API exposes List, Create, Update, and Delete operations on the `/2.0/contacts` collection, allowing bidirectional sync of names, addresses, VAT numbers, and contact groups. Agents can also tag contacts to drive segmentation in marketing tools.

Example prompt: Pull all contacts modified since yesterday from bexio and upsert them into the connected HubSpot account.

### Inventory and Product Catalogue Updates

Maintain accurate stock levels across bexio and an e-commerce storefront. Agents can list products, update stock counts, and adjust pricing in CHF when supplier costs change. This prevents overselling on Shopify or WooCommerce when bexio is the source of truth for inventory.

Example prompt: Reduce the stock_count of product SKU ABC-100 by 5 units after a Shopify order is fulfilled.

### AI Agent Bookkeeping Assistant

An AI agent acts as a bookkeeping assistant for a Swiss SME, answering questions like 'how much revenue did we book in May?' and 'which invoices are overdue?'. Through Jentic, the agent discovers the relevant bexio operations by intent, loads schemas on demand, and executes calls without needing to memorise the 115 endpoints in the spec. Credentials stay in your Jentic One instance.

Example prompt: Search Jentic for 'list overdue bexio invoices', load the matching operation, and return the list of invoices where the due_date is before today and is_valid_from is true.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/2.0/contacts` | List contacts |
| POST | `/2.0/contacts` | Create a contact |
| GET | `/2.0/invoices` | List invoices |
| POST | `/2.0/invoices` | Create an invoice |
| POST | `/2.0/quotes` | Create a quote |
| POST | `/2.0/orders` | Create a sales order |
| GET | `/2.0/deliveries` | List deliveries |

## Key resources

- **Contacts** — List, create, retrieve, update, and delete customer and supplier contacts
- **Invoices** — Manage sales invoices including issuing, updating, and deleting
- **Quotes** — Create quotes for prospects and convert them into orders
- **Orders** — Manage confirmed sales orders and link them to deliveries
- **Deliveries** — Track delivery notes for shipped goods
- **Products** — Manage the product catalogue, pricing, and stock counts
- **Projects** — Track projects, time entries, and project-based billing

## Why Jentic

- **Setup:** Wiring the bexio API by hand means running its OAuth bearer flow, refreshing tokens, and shaping Swiss-specific contact and invoice payloads yourself. Through Jentic you install once, import bexio from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** bexio addresses contacts, invoices, and quotes as collections rather than pinning ids in the path for these operations, so limit the agent to the operations it needs, such as creating an invoice or listing contacts. You choose that set, so order or delivery operations are not reachable unless you include them.
- **Credential handling:** Your bexio OAuth bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a Swiss invoice' or 'add a contact', and Jentic returns the matching bexio operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Xero Accounting API** — Xero is a global SME accounting platform with broader regional coverage than bexio's Swiss focus.
- **Stripe API** — Stripe handles card and bank payment collection that can be reconciled back into bexio invoices.
- **HubSpot CRM Contacts API** — HubSpot manages the sales pipeline; bexio handles the invoicing once a deal closes.

## FAQ

### What authentication does the bexio API use?

The bexio API uses HTTP Bearer authentication with an OAuth 2.0 access token sent in the Authorization header. Through Jentic, the bearer token is stored encrypted in the your Jentic One instance and never enters the agent's context - the agent receives a scoped reference and Jentic injects the credential at execution time.

### Can I create invoices in multiple currencies with the bexio API?

Yes. The POST `/2.0/invoices` endpoint accepts a currency_id field that lets you issue invoices in CHF, EUR, USD, or any currency configured in your bexio account. Line items can carry their own tax rates, which is useful for Swiss VAT handling.

### What are the rate limits for the bexio API?

bexio enforces plan-tier-dependent rate limits and returns HTTP 429 with a Retry-After header when exceeded. Specific limits are not declared in the OpenAPI spec - confirm your plan's quota in the bexio admin dashboard or by inspecting response headers on a real call.

### How do I list overdue invoices through Jentic?

Search Jentic for 'list overdue bexio invoices' or 'GET `/2.0/invoices`', load the schema, and filter the response client-side on is_valid_from and due_date. With the SDK: pip install jentic, then use SearchRequest, LoadRequest, and ExecutionRequest in an async flow.

### Does the bexio API support webhooks for invoice paid events?

The bexio platform offers webhook subscriptions for some object types, but they are managed through the bexio web UI rather than the public REST endpoints listed in this spec. If you need event-driven flows, configure webhooks in bexio and have your agent consume them via your own HTTPS endpoint.

### Is there a sandbox environment for the bexio API?

bexio offers a free trial account that functions as a development sandbox - you can register a trial, generate an OAuth client, and use the same https://api.bexio.com base URL. There is no separate sandbox host in the spec.

### Can I limit what my agent is allowed to do with the bexio API?

Yes. Jentic One is self-hosted, so your own rules decide which bexio operations and credentials the agent may use. Because bexio treats contacts, invoices, and quotes as collections rather than pinning ids in the path, you grant only the operations the agent needs, such as creating an invoice or listing contacts, and you keep others out of reach. Anything you do not include, like order or delivery operations, is simply not callable by the agent.
