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

# Altoviz API

Jentic publishes the only available OpenAPI specification for Altoviz API, keeping it validated and agent-ready. Altoviz is a free invoicing and accounting platform that exposes 34 REST endpoints across customers, suppliers, products, sale invoices, purchase invoices, receipts, customer families, settings, and users. Teams use it to push invoices and receipts from line-of-business systems, sync customer and supplier records, and pull settings such as tax codes and numbering rules. Authentication is a single x-api-key header issued from the Altoviz dashboard.

## For AI agents

Manage customers, suppliers, products, invoices, purchase invoices, and receipts in Altoviz through 34 x-api-key-authenticated endpoints. Useful for agents synchronising books with line-of-business systems.

## Scope

Does not handle payroll, full general ledger journals, or bank-feed reconciliation - use only for invoicing, receipts, and customer/supplier records in Altoviz.

## Capabilities

- List, create, update, and delete customer records via /Customers
- Look up a customer by Altoviz id or by your own internal id (/Customers/GetByInternalId/{internalId})
- Manage supplier records and their purchase relationships through /Suppliers and related endpoints
- Create sale invoices and read existing ones via /SaleInvoices
- Record and retrieve receipts and purchase invoices for two-sided bookkeeping
- Maintain a product catalogue used as line items on invoices
- Read account-level settings such as tax codes and numbering schemes from /settings

## Use cases

### Sync Customers and Invoices from a CRM

Service businesses keep Altoviz aligned with their CRM by mirroring customer creates and updates, then issuing sale invoices from the same workflow. The /Customers/GetByInternalId/{internalId} endpoint lets the integration use the CRM's own primary key as the join, avoiding a parallel mapping table. New invoices flow into Altoviz via POST /SaleInvoices.

Example prompt: On a new closed-won deal, call GET /Customers/GetByInternalId/{crmId}; if 404, POST /Customers; then POST /SaleInvoices with the deal's line items.

### Two-Sided Bookkeeping for Small Businesses

Solo operators and small teams record both the income side (sale invoices, receipts) and the expense side (purchase invoices) in Altoviz from the same script. The API exposes balanced create endpoints for SaleInvoices, PurchaseInvoices, and Receipts so a bookkeeping bot can keep the ledgers tied without manual data entry.

Example prompt: POST /PurchaseInvoices for an incoming supplier invoice, then POST /Receipts when the supplier is paid, linking both to the supplier id.

### Product Catalogue Management

E-commerce and field-service teams sync their canonical product catalogue into Altoviz so that line items on invoices match the rest of the business. The /Products endpoints support full CRUD, which lets the integration roll out price changes or new SKUs from a single source of truth.

Example prompt: Iterate over the e-commerce catalogue and call POST /Products for new SKUs and PUT /Products/{id} for price updates against existing ones.

### AI Agent Bookkeeping Assistant via Jentic

An AI bookkeeping agent built on Jentic can take 'invoice ACME for last week's hours and email it to billing@acme.com' and resolve it to a Customers lookup, a SaleInvoice create, and a downstream email send. The Altoviz x-api-key stays in your Jentic One instance throughout.

Example prompt: Search Jentic for 'create a sale invoice in Altoviz', load the POST /SaleInvoices schema, and execute it with the resolved customer id and line items.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /Customers | List customer records |
| POST | /Customers | Create a new customer |
| GET | /Customers/GetByInternalId/{internalId} | Look up a customer by your own internal id |
| GET | /SaleInvoices | List sale invoices |
| POST | /SaleInvoices | Issue a new sale invoice |
| GET | /SaleInvoices/{id} | Get a single sale invoice |
| GET | /settings | Read account-level settings such as tax codes |
| GET | /Users/me | Get the user record associated with the API key |

## Key resources

- **Customers** — Manage customer records and look up by internal id
- **CustomerFamilies** — Group customers into families for reporting
- **Suppliers** — Manage supplier records used on purchase invoices
- **Products** — Maintain the product catalogue used on invoice line items
- **Sale Invoices** — Issue and read sale invoices
- **Purchase Invoices** — Record incoming supplier invoices
- **Receipts** — Record receipts against paid invoices
- **Settings** — Read account settings such as tax codes and numbering
- **Users** — Read the user record associated with the API key

## Why Jentic

- **Setup:** Wiring the Altoviz API by hand means attaching its API key to api.altoviz.com/v1 and encoding the customer, invoice, and receipt calls yourself. Through Jentic you install once, import the Altoviz API from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** The Altoviz API puts the customer and invoice ids in the URL path (/Customers/GetByInternalId/{internalId}, /SaleInvoices/{id}), so a rule can pin your agent to reading one customer or invoice. You choose the operations it may call, so creating customers or sale invoices is not included unless you add them.
- **Credential handling:** Your Altoviz API key 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 sale invoice' or 'look up a customer', and Jentic returns the matching Altoviz operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Xero Accounting API** — Established cloud accounting platform with deep ledger and bank reconciliation tooling
- **Sage API** — Sage business cloud accounting suite for small and mid-sized businesses
- **Stripe API** — Card and bank payment acceptance to settle Altoviz-issued invoices

## FAQ

### Why is there no official OpenAPI spec for Altoviz API?

Altoviz does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Altoviz API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Altoviz API use?

Altoviz uses an x-api-key header on every request. Through Jentic, the key is stored encrypted in your Jentic One instance and the header is injected at call time, so the raw key never enters the agent's context.

### Can I create a sale invoice with the Altoviz API?

Yes. POST to /SaleInvoices with the customer id, issue date, and line items referencing existing product ids. Then call GET /SaleInvoices/{id} to confirm the invoice number that Altoviz allocated from your numbering scheme.

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

Specific per-account limits are not published in the spec. Build retry-with-backoff for 429 responses and contact Altoviz to confirm your tier's ceilings if you plan high-volume bulk imports of customers or invoices.

### How do I create an invoice from a CRM record through Jentic?

Run pip install jentic and search with 'create a sale invoice in Altoviz'. Load the POST /SaleInvoices schema, resolve the customer id with GET /Customers/GetByInternalId/{internalId}, then execute the invoice create.

### Is the Altoviz API free?

Altoviz markets its core invoicing as free RESTful APIs for invoicing and accounting. Confirm the current limits and any premium feature gates on the Altoviz pricing page before relying on it for high-volume production workloads.

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

Yes. Jentic One runs self-hosted, so your own rules decide which Altoviz operations and credentials the agent may use. Because Altoviz puts ids in the URL path, such as /Customers/GetByInternalId/{internalId} and /SaleInvoices/{id}, you can pin the agent to reading a single customer or invoice. You pick the operations it may call, so write actions like creating a customer or issuing a sale invoice via POST /SaleInvoices are excluded unless you add them.
