# Changelog 2026-08-17

E-invoicing lands in the API, and Altoviz is now reachable from your terminal, your automation platform, and your AI assistant.

<!-- truncate -->

## E-invoicing, first class

The 2026 French e-invoicing reform is now visible through the API.

Invoices carry their platform status:

- `eInvoicingStatus` — where the document stands on the network, from `ApiUploaded` to `FrAccepted`, `FrDisputed` or `FrPaymentReceived` (55+ status codes covering the API, PDP, PPF and Altoviz-side lifecycles)
- `eInvoicingInvoiceId` — the identifier assigned by the platform
- `eInvoicingProviderId` — the PDP that handles the document

Settings expose a new `eInvoicing` section so you can drive the whole flow:

- `profile` — `Standard` or `Advanced`
- `autoSubmitInvoicesOnFinalize` and `validateBeforeSubmit`
- `autoAcknowledgeReceivedInvoices` and `autoProcessTerminalStatuses`
- `autoEmitPaymentSent`, `autoEmitPaymentReceived` and `autoCreateReceiptFromIncomingPayment`
- `autoSendEReporting`
- `includeTextLinesInXml`

And two companions: `sales.customersLiableToEInvoicing`, plus an e-invoicing readiness report already available since June.

## Check before you finalize

Finalizing is irreversible, and a rejected e-invoice is a bad way to find out something was missing. Two new endpoints let you ask first:

- `POST /v1/SaleInvoices/CheckEInvoicing/{id}`
- `POST /v1/SaleCredits/CheckEInvoicing/{id}`

They render the Factur-X / CII e-invoice, submit it to the platform's validator, and return the findings. Nothing is finalized, nothing is transmitted.

The result gives you three ways to read the outcome:

- `isValid` — the verdict, and the one to trust: a document can be non-conformant while every finding is only a warning, because the French BR-FR rules are reported as warnings
- `findings` — structured entries with a `severity` (`Error`, `Warning`), a `source` telling you where to fix it (`Application`, `Directory`, `Platform`), a French `text`, and, when the platform reported one, the `location` in the generated XML and the `validator` name
- `messages` — the same findings flattened to one-line strings, for a quick display

Draft documents only: a finalized one returns `409`.

## Cancelled, corrected, processed

Documents now tell the full story of their own lifecycle.

On invoices:

- `cancelledCreditId` / `cancelledCreditNumber` — the credit this invoice was issued to offset

On credits:

- `isCancelled` and `cancellationInvoiceId` / `cancellationInvoiceNumber` — the invoice that cancelled this credit
- `replacedBy` — the corrected credit that supersedes this one

## A better way to filter

`GET /v1/SaleInvoices` and `GET /v1/SaleCredits` gained two tri-state filters built on the new `InclusionFilter` type — `Excluded` (the default when the parameter is omitted), `Only`, or `All`:

- `Cancelled` — hide, isolate, or include cancelled documents
- `Processed` — same, for documents whose terminal e-invoicing status has been taken into account

⚠️ **Breaking change**: the boolean `IncludeCancelled` parameter on `GET /v1/SaleInvoices` is gone. Replace `IncludeCancelled=true` with `Cancelled=All`.

## Control the finalization date

Paying an invoice or refunding a credit can finalize it on the fly. You now decide which date it gets:

- `finalizationDate` — the date the document is finalized on, defaulting to the document's own date, and distinct from the payment or refund date
- `dateAdjustment` — `None`, `MinimumDate`, or `Today`, to let the API pick a valid date for you

Both are available on the request bodies of `POST /v1/SaleInvoices/MarkAsPaid` and `POST /v1/SaleCredits/MarkAsRefunded`, and as query parameters on `POST /v1/SaleInvoices/Finalize/{id}` and `POST /v1/SaleCredits/Finalize/{id}`.

## Services à la personne

Two new read-only endpoints for home-care businesses:

- `GET /v1/HomecareServices/activities` — the SAP activities, each with the TSA group it belongs to
- `GET /v1/HomecareServices/tsa-groups` — the TSA groups (regroupements)

## Settings, refreshed

- `vat.vatRegime` — `Franchise`, `Simplified` or `Normal`
- `company.summaryHtml` — the rich company description
- `general.autoCollapseMenu`
- Email styling got finer grained: `textColor`, `outerColor`, `buttonColor` and `buttonTextColor` replace the single `foreColor`
- Suppliers now have an `active` flag, like customers

⚠️ **Breaking change**: `Annually` was removed from `VatDeclarationPeriodicity`. Only `Monthly` and `Quarterly` remain.

## Altoviz in your terminal

`altoviz` is a self-contained CLI wrapping the REST API — customers, suppliers, invoices, quotes, products, receipts, and more, without leaving the shell.

- No runtime required: a single binary for macOS, Linux and Windows
- 9 output formats: table, JSON (pretty, compact or colored), YAML, Markdown, CSV (European or American) and TSV
- Shell completions for bash, zsh, fish and PowerShell
- Auth via environment variable, config file or `--api-key`
- Scriptable: pipe JSON in with `--file -`, pick columns with `--columns`, page through with `--all-pages`

One command line can often solve daily life problems

```sh
# Fetch a single customer as JSON
altoviz customer get 42 --output json

# Export this year's invoices to CSV
altoviz export invoices --from 2026-01-01 --to 2026-12-31 --format EuropeanCsv --out invoices.csv
```

Install it with Homebrew, Chocolatey, WinGet, the Debian and Fedora packages, or the one-liner installer.

## Altoviz in your AI assistant

The **Altoviz MCP Server** connects ChatGPT, Claude, VS Code, Cursor or any other Model Context Protocol client straight to your account. It is remote — nothing to install.

- Server URL: `https://mcp.altoviz.com`
- Transport: Streamable HTTP and SSE
- Authentication: OAuth 2.0, signing in with your Altoviz API key

It covers invoicing, contacts, catalogue, expenses, statistics, exports and webhooks, and it is listed in the official MCP Registry.

## Altoviz in your workflows

Automation guides are here for the three major platforms — **Zapier**, **Make** and **n8n**. Altoviz is the first French invoicing app for small businesses to integrate with all three.