<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Altoviz Developer Hub | Blog</title><description>Documentation and resources about the Altoviz API for developers</description><link>https://developer.altoviz.com</link><language>en</language><item><title>Changelog 2026-09-14</title><link>https://developer.altoviz.com/blog/2026-09-14-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2026-09-14-changelog</guid><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Statistics now cover any period you ask for, products finally know both of their prices, and e-invoicing statuses speak the platform’s language.&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;statistics-over-any-period&quot;&gt;Statistics, over any period&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The statistics endpoints used to think in calendar years and months. They now take a date range and a bucket size, like the dashboard does.&lt;/p&gt;
&lt;p&gt;Every endpoint that covers a period accepts the same three parameters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;from&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;to&lt;/code&gt; — an inclusive date range, which takes precedence over &lt;code dir=&quot;auto&quot;&gt;year&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;year&lt;/code&gt; — shorthand for a whole calendar year, defaulting to the current one&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;periodicity&lt;/code&gt; — &lt;code dir=&quot;auto&quot;&gt;Daily&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Weekly&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Monthly&lt;/code&gt; (the default), &lt;code dir=&quot;auto&quot;&gt;Quarterly&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;Annually&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each bucket carries its own &lt;code dir=&quot;auto&quot;&gt;range&lt;/code&gt;, and a &lt;code dir=&quot;auto&quot;&gt;partial&lt;/code&gt; flag set when the requested range clipped it. A March bucket in a range ending on the 10th holds ten days of activity, so do not compare it with a full February at face value.&lt;/p&gt;
&lt;p&gt;New endpoints:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/TurnoverComparison&lt;/code&gt; — turnover over a period against the same period one year earlier and against the period of equal length just before it. Pass &lt;code dir=&quot;auto&quot;&gt;expenses=true&lt;/code&gt; for purchases, and &lt;code dir=&quot;auto&quot;&gt;paid=true&lt;/code&gt; to count what was settled rather than what was invoiced.&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/CashFlowByPeriodicity&lt;/code&gt; — receipts, expenses and profits, each as settled, outstanding and projected. Every list shares the same buckets, so index N is the same period throughout.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/TurnoverEvolution&lt;/code&gt; follows the same model. It takes &lt;code dir=&quot;auto&quot;&gt;from&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;to&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;year&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;periodicity&lt;/code&gt;, and &lt;code dir=&quot;auto&quot;&gt;compare&lt;/code&gt; (0 to 2) returns the same period one and two years back as extra series. It can also break down two new dimensions through &lt;code dir=&quot;auto&quot;&gt;type&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;Margin&lt;/code&gt; — what the lines brought in, less what their goods cost&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;Discount&lt;/code&gt; — the gap between the gross amount and what was actually invoiced, line and document discounts included&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Breaking change&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;TurnoverEvolution&lt;/code&gt; now returns a single &lt;code dir=&quot;auto&quot;&gt;TurnoverEvolutionResult&lt;/code&gt; object instead of an array of years, and its &lt;code dir=&quot;auto&quot;&gt;years&lt;/code&gt; parameter is replaced by &lt;code dir=&quot;auto&quot;&gt;compare&lt;/code&gt;. The series are in &lt;code dir=&quot;auto&quot;&gt;series&lt;/code&gt;, the requested period first.&lt;/p&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Breaking change&lt;/strong&gt;: these endpoints are removed, replaced by the ones above:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Removed&lt;/th&gt;
&lt;th&gt;Use instead&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/SalesTurnoverStatistics&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;TurnoverComparison&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/ExpensesTurnoverStatistics&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;TurnoverComparison?expenses=true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/MicrobusinessSalesTurnoverStatistics&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;TurnoverComparison?paid=true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/MicrobusinessExpensesTurnoverStatistics&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;TurnoverComparison?expenses=true&amp;#x26;paid=true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/StatsByMonth&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;CashFlowByPeriodicity&lt;/code&gt;, or &lt;code dir=&quot;auto&quot;&gt;TurnoverEvolution&lt;/code&gt; for invoiced sales and expenses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For a micro-business, &lt;code dir=&quot;auto&quot;&gt;paid&lt;/code&gt; is always applied: it is taxed on what it collects, not on what it invoices. Check &lt;code dir=&quot;auto&quot;&gt;company.isMicroBusiness&lt;/code&gt; in &lt;code dir=&quot;auto&quot;&gt;GET /v1/Settings&lt;/code&gt; before reading the numbers.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;who-owes-you-and-how-late&quot;&gt;Who owes you, and how late&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Four endpoints answer the questions you ask before picking up the phone.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/UnpaidInvoices&lt;/code&gt; — the aged balance of what customers owe you, as totals per age bucket&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/UnpaidExpenses&lt;/code&gt; — the same for what you owe suppliers. Subtract one from the other for a net position.&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/TopOverdueCustomers&lt;/code&gt; — customers with overdue payments, ranked by amount. &lt;code dir=&quot;auto&quot;&gt;take&lt;/code&gt; returns 1 to 20, 5 by default.&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Statistics/PaymentDelay&lt;/code&gt; — how long payments actually take over a period, from the document date and from the due date, plus the share of the amount paid late. &lt;code dir=&quot;auto&quot;&gt;side&lt;/code&gt; is &lt;code dir=&quot;auto&quot;&gt;Customers&lt;/code&gt; (the default) or &lt;code dir=&quot;auto&quot;&gt;Suppliers&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An aged-balance bucket is keyed by &lt;code dir=&quot;auto&quot;&gt;period&lt;/code&gt;: negative is overdue, &lt;code dir=&quot;auto&quot;&gt;0&lt;/code&gt; is due today, positive is upcoming. The steps are 1, 7, 15, 30, 60 and 90 days, so &lt;code dir=&quot;auto&quot;&gt;-7&lt;/code&gt; means more than 90 days late.&lt;/p&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;TopOverdueCustomers&lt;/code&gt; returns the age of each customer’s oldest unpaid payment and &lt;code dir=&quot;auto&quot;&gt;lastReminderOn&lt;/code&gt;, the date of the last reminder sent to them. &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt; means they were never chased, which is not the same as chased and still not paying.&lt;/p&gt;
&lt;p&gt;For &lt;code dir=&quot;auto&quot;&gt;PaymentDelay&lt;/code&gt;, read &lt;code dir=&quot;auto&quot;&gt;medianDaysToPayment&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;medianDaysLate&lt;/code&gt; rather than the averages. A handful of very late payers can drag the mean to a month while the typical invoice is paid on time.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;products-with-both-prices&quot;&gt;Products, with both prices&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;A product now stores its sale price both excluding and including tax, and returns both, along with the margin figures derived from them:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;taxExcludedPrice&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;taxIncludedPrice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;margin&lt;/code&gt; — the tax-excluded price less the purchase price, per unit&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;markupRate&lt;/code&gt; — the margin as a percentage of the purchase price (FR « taux de marge »)&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;marginRate&lt;/code&gt; — the margin as a percentage of the sale price (FR « taux de marque »)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;margin&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;markupRate&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;marginRate&lt;/code&gt; are computed on every save. A value you send for them is ignored.&lt;/p&gt;
&lt;p&gt;Two fields are deprecated as a result:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Deprecated&lt;/th&gt;
&lt;th&gt;Use instead&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;unitPrice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;taxExcludedPrice&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;isUnitPriceTaxIncluded&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code dir=&quot;auto&quot;&gt;taxIncludedPrice&lt;/code&gt;, to send a tax-included price&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Behaviour change on read&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;unitPrice&lt;/code&gt; is now always the tax-excluded price, and &lt;code dir=&quot;auto&quot;&gt;isUnitPriceTaxIncluded&lt;/code&gt; is always &lt;code dir=&quot;auto&quot;&gt;false&lt;/code&gt;. &lt;code dir=&quot;auto&quot;&gt;unitPrice&lt;/code&gt; used to hold whichever price the product was entered in, so for a product priced tax-included it now returns a different number. If your code read the flag before using the price, the result is the same. If it assumed the price included tax, read &lt;code dir=&quot;auto&quot;&gt;taxIncludedPrice&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;Writing works as before. &lt;code dir=&quot;auto&quot;&gt;unitPrice&lt;/code&gt; on its own is read as tax-excluded, and &lt;code dir=&quot;auto&quot;&gt;isUnitPriceTaxIncluded: true&lt;/code&gt; still means the price you send includes tax.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;markup-is-not-margin&quot;&gt;Markup is not margin&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Document lines had a &lt;code dir=&quot;auto&quot;&gt;marginRate&lt;/code&gt; that divided the margin by the purchase price. That ratio is a markup rate, and products now have a real &lt;code dir=&quot;auto&quot;&gt;marginRate&lt;/code&gt; that divides by the sale price. Both could not share one name.&lt;/p&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Breaking change&lt;/strong&gt;: on quote, invoice and credit lines, &lt;code dir=&quot;auto&quot;&gt;marginRate&lt;/code&gt; is renamed &lt;code dir=&quot;auto&quot;&gt;markupRate&lt;/code&gt;. The value is unchanged. Only the name is new.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;e-invoicing-statuses-as-the-platform-names-them&quot;&gt;E-invoicing statuses, as the platform names them&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;eInvoicingStatus&lt;/code&gt; on invoices returns the code defined by the e-invoicing platform, not an internal name:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;api:uploaded&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;api:validated&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;api:sent&lt;/code&gt;, and so on, for the access point’s own steps&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;fr:200&lt;/code&gt; to &lt;code dir=&quot;auto&quot;&gt;fr:228&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;fr:501&lt;/code&gt; for the French lifecycle statuses — &lt;code dir=&quot;auto&quot;&gt;fr:200&lt;/code&gt; is &lt;em&gt;Déposée&lt;/em&gt;, &lt;code dir=&quot;auto&quot;&gt;fr:212&lt;/code&gt; is &lt;em&gt;Encaissée&lt;/em&gt;, &lt;code dir=&quot;auto&quot;&gt;fr:213&lt;/code&gt; is &lt;em&gt;Rejetée&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;ppf:*&lt;/code&gt; for the public platform’s flows, and &lt;code dir=&quot;auto&quot;&gt;aoz:*&lt;/code&gt; for statuses added by Altoviz&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Breaking change&lt;/strong&gt;: if you compared this field to names like &lt;code dir=&quot;auto&quot;&gt;FrSubmitted&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;ApiSent&lt;/code&gt;, switch to the codes. The full list is in the &lt;code dir=&quot;auto&quot;&gt;EInvoicingStatusCode&lt;/code&gt; schema.&lt;/p&gt;
&lt;p&gt;One status is new: &lt;code dir=&quot;auto&quot;&gt;aoz:importerror&lt;/code&gt; marks a received invoice that could not be turned into an expense yet, because its Factur-X could not be read or its supplier could not be matched. It is retried automatically, and it is replaced by the next &lt;code dir=&quot;auto&quot;&gt;fr:*&lt;/code&gt; status the platform sends.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;settings&quot;&gt;Settings&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Settings&lt;/code&gt; returns three new values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;sales.outstandingLimit&lt;/code&gt; — the default maximum outstanding balance for a customer that has no limit of its own&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;sales.invoices.invoiceZeroQuantityLines&lt;/code&gt; — whether invoicing a quote brings along lines with nothing left to invoice, such as a zero quantity or a line already invoiced in full&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;eInvoicing.validateAddressesBeforeSubmit&lt;/code&gt; — whether both parties’ e-invoicing addresses are checked before an invoice is submitted&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;sales.marginRate&lt;/code&gt; is removed.&lt;/p&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2026-09-07</title><link>https://developer.altoviz.com/blog/2026-09-07-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2026-09-07-changelog</guid><pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Your bank accounts are now in the API, metadata stops overwriting itself, and payloads we had started refusing are welcome again.&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;banking-opened-up&quot;&gt;Banking, opened up&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Bank accounts and their transactions are now part of the API.&lt;/p&gt;
&lt;p&gt;Accounts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/BankAccounts&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;GET /v1/BankAccounts/{id}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;POST /v1/BankAccounts&lt;/code&gt; to create one, &lt;code dir=&quot;auto&quot;&gt;PUT /v1/BankAccounts/{id}&lt;/code&gt; to update it&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;DELETE /v1/BankAccounts/{id}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;POST /v1/BankAccounts/SetAsMain/{id}&lt;/code&gt; — moves the main-account designation from whichever account holds it, since exactly one account is main at a time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Transactions, read-only:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/BankAccounts/{id}/Transactions&lt;/code&gt; — paged, with &lt;code dir=&quot;auto&quot;&gt;from&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;to&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;searchTerm&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;hideExcluded&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;hideReconciliated&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/BankTransactions/{id}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;POST /v1/BankTransactions/Exclude/{id}&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;POST /v1/BankTransactions/Include/{id}&lt;/code&gt; — set a transaction aside so it stops being offered for reconciliation, or bring it back&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;connected-accounts-are-read-only&quot;&gt;Connected accounts are read-only&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;An account synchronized from a provider mirrors what that provider reports, so Altoviz is not its system of record and neither are you.&lt;/p&gt;
&lt;p&gt;Every account carries a &lt;code dir=&quot;auto&quot;&gt;provider&lt;/code&gt; object — &lt;code dir=&quot;auto&quot;&gt;type&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;accountId&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;accountStatus&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;bankName&lt;/code&gt; — which is &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt; on an account you keep by hand, and a &lt;code dir=&quot;auto&quot;&gt;connected&lt;/code&gt; flag that says the same thing. One null check tells you whether an account is yours to write to.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;PUT&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;DELETE&lt;/code&gt; on a connected account return &lt;code dir=&quot;auto&quot;&gt;400&lt;/code&gt;. Disconnect it in Altoviz first.&lt;/li&gt;
&lt;li&gt;The provider fields are never writable, on any account. They are absent from the create and update bodies entirely.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Setting the main account and excluding or including a transaction still work on a connected account: those are Altoviz’s own bookkeeping, not something the provider owns.&lt;/p&gt;
&lt;p&gt;Deleting is deliberately hard to do by accident. Beyond the connected check, &lt;code dir=&quot;auto&quot;&gt;DELETE&lt;/code&gt; returns &lt;code dir=&quot;auto&quot;&gt;409&lt;/code&gt; when the account holds any transaction already reconciled with a receipt or a payment, and &lt;code dir=&quot;auto&quot;&gt;400&lt;/code&gt; when the account is the main one. What gets through is an account created by mistake or never used — which is the only kind you should be deleting through an API, because deletion also removes the account’s accounting journal and every entry in it.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;metadata-that-stops-fighting-you&quot;&gt;Metadata that stops fighting you&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;metadata&lt;/code&gt; is now available on customers and products. It was already stored and already used — the WooCommerce import writes &lt;code dir=&quot;auto&quot;&gt;woocommerce_product_id&lt;/code&gt;, Quickbooks writes &lt;code dir=&quot;auto&quot;&gt;qbo_id&lt;/code&gt; — you just could not read it back.&lt;/p&gt;
&lt;p&gt;More importantly, metadata is now a &lt;strong&gt;patch&lt;/strong&gt; everywhere the API carries one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keys you send are added or updated&lt;/li&gt;
&lt;li&gt;keys you leave out keep whatever they held&lt;/li&gt;
&lt;li&gt;a key is removed only when you send it as &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;&quot;&quot;&lt;/code&gt; stores an empty value, it does not remove anything&lt;/li&gt;
&lt;li&gt;omitting the property entirely leaves the whole bag untouched&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The bag is shared. Your integration is not the only thing writing to it, and replacing it wholesale meant sending your own single key silently dropped everyone else’s.&lt;/p&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Breaking change&lt;/strong&gt;: if you relied on omitting a key to remove it, send that key as &lt;code dir=&quot;auto&quot;&gt;null&lt;/code&gt; instead. This affects invoices, quotes, credits, receipts, colleagues, &lt;code dir=&quot;auto&quot;&gt;MarkAsPaid&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;MarkAsRefunded&lt;/code&gt;, which previously replaced the whole bag.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;finding-documents-you-didnt-create&quot;&gt;Finding documents you didn’t create&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;Find&lt;/code&gt; accepted an internal id and nothing else — the one key a document created inside Altoviz never has. So documents made in the app were invisible to it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/SalesQuotes/Find&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;/v1/SalesInvoices/Find&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;/v1/SalesCredits/Find&lt;/code&gt; now take a &lt;code dir=&quot;auto&quot;&gt;number&lt;/code&gt; alongside &lt;code dir=&quot;auto&quot;&gt;internalId&lt;/code&gt;, matching customers and products. When both are given, &lt;code dir=&quot;auto&quot;&gt;internalId&lt;/code&gt; wins.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A draft carries a provisional number from its own sequence (&lt;code dir=&quot;auto&quot;&gt;000001&lt;/code&gt;) until finalization assigns the real one (&lt;code dir=&quot;auto&quot;&gt;FA001000&lt;/code&gt;), so a search by number can match either.&lt;/p&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;GetByInternalId&lt;/code&gt; also spread beyond the three resources that had it:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Products/GetByInternalId/{internalId}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/Receipts/GetByInternalId/{internalId}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/SalesQuotes/GetByInternalId/{internalId}&lt;/code&gt;, and the same for &lt;code dir=&quot;auto&quot;&gt;SalesInvoices&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;SalesCredits&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;sales-with-an-s&quot;&gt;Sales, with an s&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Sale documents were the only place in the API spelled without one. &lt;code dir=&quot;auto&quot;&gt;/v1/Exports/SalesInvoices&lt;/code&gt; always had it; &lt;code dir=&quot;auto&quot;&gt;/v1/SaleInvoices&lt;/code&gt; did not.&lt;/p&gt;
&lt;p&gt;The canonical routes are now &lt;code dir=&quot;auto&quot;&gt;/v1/SalesInvoices&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;/v1/SalesQuotes&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;/v1/SalesCredits&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Nothing breaks. Every &lt;code dir=&quot;auto&quot;&gt;/v1/Sale*&lt;/code&gt; route is still served, returns exactly the same result, and is simply flagged deprecated in the specification, naming the route that replaces it. Move when it suits you.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;we-stopped-being-picky&quot;&gt;We stopped being picky&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Some payloads that had worked for years started coming back &lt;code dir=&quot;auto&quot;&gt;400&lt;/code&gt;. Loosely-typed clients send what they send, and we had quietly narrowed what we accept. That is fixed, and now guarded by a test that re-types every field of every published model and asserts we still accept whatever we used to.&lt;/p&gt;
&lt;p&gt;Accepted again:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a number where a string is declared — &lt;code dir=&quot;auto&quot;&gt;&quot;woocommerce_order_id&quot;: 3587755&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;&quot;true&quot;&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;&quot;1&quot;&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;&quot;0&quot;&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;&quot;&quot;&lt;/code&gt; where a boolean is expected&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;&quot;&quot;&lt;/code&gt; where an optional number, date or enum is expected&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ One exception, on purpose: a quoted number carrying a group separator, like &lt;code dir=&quot;auto&quot;&gt;&quot;1,5&quot;&lt;/code&gt;, is now refused with a &lt;code dir=&quot;auto&quot;&gt;400&lt;/code&gt; naming the field. It used to be read as &lt;code dir=&quot;auto&quot;&gt;15&lt;/code&gt; — a silent factor of ten, on money. &lt;code dir=&quot;auto&quot;&gt;&quot;1.5&quot;&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;&quot;1000&quot;&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;1000&lt;/code&gt; are unaffected.&lt;/p&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2026-08-17</title><link>https://developer.altoviz.com/blog/2026-08-17-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2026-08-17-changelog</guid><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;E-invoicing lands in the API, and Altoviz is now reachable from your terminal, your automation platform, and your AI assistant.&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;e-invoicing-first-class&quot;&gt;E-invoicing, first class&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The 2026 French e-invoicing reform is now visible through the API.&lt;/p&gt;
&lt;p&gt;Invoices carry their platform status:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;eInvoicingStatus&lt;/code&gt; — where the document stands on the network, from &lt;code dir=&quot;auto&quot;&gt;ApiUploaded&lt;/code&gt; to &lt;code dir=&quot;auto&quot;&gt;FrAccepted&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;FrDisputed&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;FrPaymentReceived&lt;/code&gt; (55+ status codes covering the API, PDP, PPF and Altoviz-side lifecycles)&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;eInvoicingInvoiceId&lt;/code&gt; — the identifier assigned by the platform&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;eInvoicingProviderId&lt;/code&gt; — the PDP that handles the document&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Settings expose a new &lt;code dir=&quot;auto&quot;&gt;eInvoicing&lt;/code&gt; section so you can drive the whole flow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;profile&lt;/code&gt; — &lt;code dir=&quot;auto&quot;&gt;Standard&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;Advanced&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;autoSubmitInvoicesOnFinalize&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;validateBeforeSubmit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;autoAcknowledgeReceivedInvoices&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;autoProcessTerminalStatuses&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;autoEmitPaymentSent&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;autoEmitPaymentReceived&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;autoCreateReceiptFromIncomingPayment&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;autoSendEReporting&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;includeTextLinesInXml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And two companions: &lt;code dir=&quot;auto&quot;&gt;sales.customersLiableToEInvoicing&lt;/code&gt;, plus an e-invoicing readiness report already available since June.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;check-before-you-finalize&quot;&gt;Check before you finalize&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;POST /v1/SaleInvoices/CheckEInvoicing/{id}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;POST /v1/SaleCredits/CheckEInvoicing/{id}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;The result gives you three ways to read the outcome:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;isValid&lt;/code&gt; — 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&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;findings&lt;/code&gt; — structured entries with a &lt;code dir=&quot;auto&quot;&gt;severity&lt;/code&gt; (&lt;code dir=&quot;auto&quot;&gt;Error&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Warning&lt;/code&gt;), a &lt;code dir=&quot;auto&quot;&gt;source&lt;/code&gt; telling you where to fix it (&lt;code dir=&quot;auto&quot;&gt;Application&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Directory&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Platform&lt;/code&gt;), a French &lt;code dir=&quot;auto&quot;&gt;text&lt;/code&gt;, and, when the platform reported one, the &lt;code dir=&quot;auto&quot;&gt;location&lt;/code&gt; in the generated XML and the &lt;code dir=&quot;auto&quot;&gt;validator&lt;/code&gt; name&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;messages&lt;/code&gt; — the same findings flattened to one-line strings, for a quick display&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Draft documents only: a finalized one returns &lt;code dir=&quot;auto&quot;&gt;409&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;cancelled-corrected-processed&quot;&gt;Cancelled, corrected, processed&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Documents now tell the full story of their own lifecycle.&lt;/p&gt;
&lt;p&gt;On invoices:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;cancelledCreditId&lt;/code&gt; / &lt;code dir=&quot;auto&quot;&gt;cancelledCreditNumber&lt;/code&gt; — the credit this invoice was issued to offset&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On credits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;isCancelled&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;cancellationInvoiceId&lt;/code&gt; / &lt;code dir=&quot;auto&quot;&gt;cancellationInvoiceNumber&lt;/code&gt; — the invoice that cancelled this credit&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;replacedBy&lt;/code&gt; — the corrected credit that supersedes this one&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;a-better-way-to-filter&quot;&gt;A better way to filter&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/SaleInvoices&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;GET /v1/SaleCredits&lt;/code&gt; gained two tri-state filters built on the new &lt;code dir=&quot;auto&quot;&gt;InclusionFilter&lt;/code&gt; type — &lt;code dir=&quot;auto&quot;&gt;Excluded&lt;/code&gt; (the default when the parameter is omitted), &lt;code dir=&quot;auto&quot;&gt;Only&lt;/code&gt;, or &lt;code dir=&quot;auto&quot;&gt;All&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;Cancelled&lt;/code&gt; — hide, isolate, or include cancelled documents&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;Processed&lt;/code&gt; — same, for documents whose terminal e-invoicing status has been taken into account&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Breaking change&lt;/strong&gt;: the boolean &lt;code dir=&quot;auto&quot;&gt;IncludeCancelled&lt;/code&gt; parameter on &lt;code dir=&quot;auto&quot;&gt;GET /v1/SaleInvoices&lt;/code&gt; is gone. Replace &lt;code dir=&quot;auto&quot;&gt;IncludeCancelled=true&lt;/code&gt; with &lt;code dir=&quot;auto&quot;&gt;Cancelled=All&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;control-the-finalization-date&quot;&gt;Control the finalization date&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Paying an invoice or refunding a credit can finalize it on the fly. You now decide which date it gets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;finalizationDate&lt;/code&gt; — the date the document is finalized on, defaulting to the document’s own date, and distinct from the payment or refund date&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;dateAdjustment&lt;/code&gt; — &lt;code dir=&quot;auto&quot;&gt;None&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;MinimumDate&lt;/code&gt;, or &lt;code dir=&quot;auto&quot;&gt;Today&lt;/code&gt;, to let the API pick a valid date for you&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both are available on the request bodies of &lt;code dir=&quot;auto&quot;&gt;POST /v1/SaleInvoices/MarkAsPaid&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;POST /v1/SaleCredits/MarkAsRefunded&lt;/code&gt;, and as query parameters on &lt;code dir=&quot;auto&quot;&gt;POST /v1/SaleInvoices/Finalize/{id}&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;POST /v1/SaleCredits/Finalize/{id}&lt;/code&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;services-à-la-personne&quot;&gt;Services à la personne&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Two new read-only endpoints for home-care businesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/HomecareServices/activities&lt;/code&gt; — the SAP activities, each with the TSA group it belongs to&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;GET /v1/HomecareServices/tsa-groups&lt;/code&gt; — the TSA groups (regroupements)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;settings-refreshed&quot;&gt;Settings, refreshed&lt;/h2&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;vat.vatRegime&lt;/code&gt; — &lt;code dir=&quot;auto&quot;&gt;Franchise&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;Simplified&lt;/code&gt; or &lt;code dir=&quot;auto&quot;&gt;Normal&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;company.summaryHtml&lt;/code&gt; — the rich company description&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;general.autoCollapseMenu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Email styling got finer grained: &lt;code dir=&quot;auto&quot;&gt;textColor&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;outerColor&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;buttonColor&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;buttonTextColor&lt;/code&gt; replace the single &lt;code dir=&quot;auto&quot;&gt;foreColor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Suppliers now have an &lt;code dir=&quot;auto&quot;&gt;active&lt;/code&gt; flag, like customers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Breaking change&lt;/strong&gt;: &lt;code dir=&quot;auto&quot;&gt;Annually&lt;/code&gt; was removed from &lt;code dir=&quot;auto&quot;&gt;VatDeclarationPeriodicity&lt;/code&gt;. Only &lt;code dir=&quot;auto&quot;&gt;Monthly&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;Quarterly&lt;/code&gt; remain.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;altoviz-in-your-terminal&quot;&gt;Altoviz in your terminal&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;altoviz&lt;/code&gt; is a self-contained CLI wrapping the REST API — customers, suppliers, invoices, quotes, products, receipts, and more, without leaving the shell.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No runtime required: a single binary for macOS, Linux and Windows&lt;/li&gt;
&lt;li&gt;9 output formats: table, JSON (pretty, compact or colored), YAML, Markdown, CSV (European or American) and TSV&lt;/li&gt;
&lt;li&gt;Shell completions for bash, zsh, fish and PowerShell&lt;/li&gt;
&lt;li&gt;Auth via environment variable, config file or &lt;code dir=&quot;auto&quot;&gt;--api-key&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Scriptable: pipe JSON in with &lt;code dir=&quot;auto&quot;&gt;--file -&lt;/code&gt;, pick columns with &lt;code dir=&quot;auto&quot;&gt;--columns&lt;/code&gt;, page through with &lt;code dir=&quot;auto&quot;&gt;--all-pages&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One command line can often solve daily life problems&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Fetch a single customer as JSON&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;altoviz&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;customer&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;42&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--output&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;json&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Export this year&apos;s invoices to CSV&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;altoviz&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;invoices&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2026-01-01&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--to&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2026-12-31&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--format&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EuropeanCsv&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--out&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;invoices.csv&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Install it with Homebrew, Chocolatey, WinGet, the Debian and Fedora packages, or the one-liner installer.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;altoviz-in-your-ai-assistant&quot;&gt;Altoviz in your AI assistant&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The &lt;strong&gt;Altoviz MCP Server&lt;/strong&gt; connects ChatGPT, Claude, VS Code, Cursor or any other Model Context Protocol client straight to your account. It is remote — nothing to install.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Server URL: &lt;code dir=&quot;auto&quot;&gt;https://mcp.altoviz.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Transport: Streamable HTTP and SSE&lt;/li&gt;
&lt;li&gt;Authentication: OAuth 2.0, signing in with your Altoviz API key&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It covers invoicing, contacts, catalogue, expenses, statistics, exports and webhooks, and it is listed in the official MCP Registry.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;altoviz-in-your-workflows&quot;&gt;Altoviz in your workflows&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Automation guides are here for the three major platforms — &lt;strong&gt;Zapier&lt;/strong&gt;, &lt;strong&gt;Make&lt;/strong&gt; and &lt;strong&gt;n8n&lt;/strong&gt;. Altoviz is the first French invoicing app for small businesses to integrate with all three.&lt;/p&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2026-06-02</title><link>https://developer.altoviz.com/blog/2026-06-02-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2026-06-02-changelog</guid><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Tons of new APIs were added and Altoviz Developer Hub is now running on steroid.&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;we-all-need-numbers-more-numbers&quot;&gt;We all need numbers, more numbers&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Statistic APIs expose the numbers used in the app dashboards like :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Monthly sales and expense breakdown for a given year​&lt;/li&gt;
&lt;li&gt;Sales turnover comparison: current year, previous year, current month, previous month, and same month last year​&lt;/li&gt;
&lt;li&gt;Expense turnover comparison: current year, previous year, current month, previous month, and same month last year&lt;/li&gt;
&lt;li&gt;Micro-business sales turnover comparison (paid invoices only): current year, previous year, current month, previous month, and same month last year&lt;/li&gt;
&lt;li&gt;Micro-business expense turnover comparison (paid expenses only): current year, previous year, current month, previous month, and same month last year&lt;/li&gt;
&lt;li&gt;All-time total turnover&lt;/li&gt;
&lt;li&gt;Turnover evolution over one or more years, broken down by month&lt;/li&gt;
&lt;li&gt;E-invoicing readiness: suppliers and customers configured, and those with issues&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;data-data-data&quot;&gt;Data, data, data&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Export APIs will allow you to export the most useful data from the app in the format you need.&lt;/p&gt;
&lt;p&gt;Available data are :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bank transactions&lt;/li&gt;
&lt;li&gt;Customers&lt;/li&gt;
&lt;li&gt;Expenses&lt;/li&gt;
&lt;li&gt;Expenses reports&lt;/li&gt;
&lt;li&gt;Invoices&lt;/li&gt;
&lt;li&gt;Products&lt;/li&gt;
&lt;li&gt;Purchases&lt;/li&gt;
&lt;li&gt;Quotes&lt;/li&gt;
&lt;li&gt;Receipts&lt;/li&gt;
&lt;li&gt;Settlements&lt;/li&gt;
&lt;li&gt;Suppliers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Formats are :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JSON&lt;/li&gt;
&lt;li&gt;Microsoft Excel&lt;/li&gt;
&lt;li&gt;American CSV&lt;/li&gt;
&lt;li&gt;European CSV&lt;/li&gt;
&lt;li&gt;TSV&lt;/li&gt;
&lt;li&gt;Markdown&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each export was carefully built to facilitate further data analysis. They have temporal columns and relational data out-of-the-box.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;astro-to-the-rescue&quot;&gt;Astro to the rescue&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;We’re now using a whole new website management tool that will ease how we publish content and how fast it is : We moved from Docusaurus to Starlight.&lt;/p&gt;
&lt;p&gt;Starlight is made with Astro :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;it has a better architecture and principles&lt;/li&gt;
&lt;li&gt;it is easier to customize for our needs&lt;/li&gt;
&lt;li&gt;its community is more vibrant&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2025-08-04</title><link>https://developer.altoviz.com/blog/2025-08-04-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2025-08-04-changelog</guid><pubDate>Mon, 04 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;We introduce a whole new API reference page, easier than ever to discover and experiment the Altoviz API.&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;new-api-reference-page&quot;&gt;New API reference page&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;img alt=&quot;New API reference page&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2880&quot; height=&quot;1578&quot; src=&quot;https://cdn.developer.altoviz.com/static/api-new-reference-page.DtQvmhX0_Zdm7iw.webp&quot; srcset=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;The new API reference page brings some important new features :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;an easier way discovery all the possibilities offered by the API, thanks to a whole new layout&lt;/li&gt;
&lt;li&gt;support for light and dark theme&lt;/li&gt;
&lt;li&gt;a dedicated search engine &lt;img alt=&quot;API search engine&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2880&quot; height=&quot;1578&quot; src=&quot;https://cdn.developer.altoviz.com/static/api-new-search-engine.BRtPw0X__18YEbi.webp&quot; srcset=&quot;&quot;&gt;&lt;/li&gt;
&lt;li&gt;more supported languages for the examples&lt;/li&gt;
&lt;li&gt;a ability the live test the API from your browser &lt;img alt=&quot;Execute API from your browser&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;2880&quot; height=&quot;1576&quot; src=&quot;https://cdn.developer.altoviz.com/static/api-execute-request.TCio--TX_ZFAnga.webp&quot; srcset=&quot;&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2025-01-22</title><link>https://developer.altoviz.com/blog/2025-01-22-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2025-01-22-changelog</guid><pubDate>Wed, 22 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Some great new possibilities for API amateurs : Suppliers, receipts and metadata.&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;new-receipts-api&quot;&gt;New receipts API&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can list, add, edit and delete receipts &lt;a href=&quot;https://developer.altoviz.com/api#tag/receipts&quot;&gt;/v1/Receipts&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;new-suppliers-api&quot;&gt;New suppliers API&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can list, add, edit and delete suppliers &lt;a href=&quot;https://developer.altoviz.com/api#tag/suppliers&quot;&gt;/v1/Suppliers&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;metadata-on-mark-as-paid&quot;&gt;Metadata on Mark as paid&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Metadata allow you to store important informations for your app on Altoviz entities.
We added the possibility to pass metadata to the mark-as-paid API. Those metadata will be stored on the payment.&lt;/p&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2024-08-28</title><link>https://developer.altoviz.com/blog/2024-08-28-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2024-08-28-changelog</guid><pubDate>Wed, 28 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Following your feedback, we added a lot of new APIs and extended existing APIs. This post will make a little recap of the new stuff added in the last months.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;introducing-internal-id&quot;&gt;Introducing “internal id”&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You might need to create an integration of the Altoviz services with your product and in case you have common entities, you will have to keep the data in sync. That’s why we added an “internal id” on entites such as contacts, customers, products, quotes and invoices.&lt;/p&gt;
&lt;p&gt;As an example, if you have contacts within your app and those contacts have their own unique id, you can set this unique id to the internal id of the Altoviz customer. You wil then be able to get this customer back using your unique id and not the Altoviz one. You no longer have to save Altoviz ids.&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;purchase-invoices&quot;&gt;Purchase invoices&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can create purchase invoices just by sending a PDF file to the app through the &lt;a href=&quot;https://developer.altoviz.com/api#tag/purchaseinvoices/post/v1/PurchaseInvoices/file&quot;&gt;/v1/purchaseinvoices/file&lt;/a&gt; API.&lt;/p&gt;
&lt;p&gt;Purchase invoices can be downloaded too using the &lt;a href=&quot;https://developer.altoviz.com/api#tag/purchaseinvoices/get/v1/PurchaseInvoices/Download/%7Bid%7D&quot;&gt;/v1/PurchaseInvoices/Download&lt;/a&gt; API.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;sales-invoices&quot;&gt;Sales invoices&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Invoices can be updated and deleted as long as they are still in draft mode.&lt;/p&gt;
&lt;p&gt;Invoices can be marked as paid. Set the date and payment method method and you’re done. Just one call to this API to finalize and pay an invoice ! &lt;a href=&quot;https://developer.altoviz.com/api#tag/saleinvoices/post/v1/SaleInvoices/Finalize/%7Bid%7D&quot;&gt;/v1/SaleInvoices/Finalize&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can find invoices using your own id (internal Id).&lt;/p&gt;
&lt;p&gt;Notes becomes Footer notes and Header notes was added.&lt;/p&gt;
&lt;p&gt;You can sort the result, filter by dates, customer or status and even include canceled invoices.
&lt;a href=&quot;https://developer.altoviz.com/api#tag/saleinvoices/get/v1/SaleInvoices&quot;&gt;v1/SaleInvoices&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;sales-quotes&quot;&gt;Sales quotes&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Delete a quote&lt;/p&gt;
&lt;p&gt;Find quote by internal Id&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;sales-credits&quot;&gt;Sales credits&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Just like sales invoices, you can list, add, edit and remove sales credits.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;units&quot;&gt;Units&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;List all available units. If you need to add, edit or remove units, dot it in the app.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;get-a-customer-using-an-internal-id&quot;&gt;Get a customer using an internal Id&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can get a customer by its internal id (the id coming from your app) using the &lt;a href=&quot;https://developer.altoviz.com/api#tag/customers/get/v1/Customers/GetByInternalId/%7BinternalId%7D&quot;&gt;v1/Customers/GetByInternalId&lt;/a&gt; API&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;get-product-famillies&quot;&gt;Get product famillies&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can get a customer family by its internal id (the id coming from your app) using the &lt;a href=&quot;https://developer.altoviz.com/api#tag/customerfamilies/get/v1/CustomerFamilies/%7Bid%7D&quot;&gt;/v1/CustomerFamilies&lt;/a&gt; API&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;add-and-update-product-images&quot;&gt;Add and update product images&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can add, update and get product images using the &lt;a href=&quot;https://developer.altoviz.com/api#tag/productimages&quot;&gt;Product images APIs&lt;/a&gt; API&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;check-your-key&quot;&gt;Check your key&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;We added a very simple API to quickly check your API key. Just call &lt;a href=&quot;https://developer.altoviz.com/api#tag/hello/get/Hello&quot;&gt;/hello&lt;/a&gt; with your API key.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;api-reference-documentation-lists-fields-ordered&quot;&gt;API reference documentation lists fields ordered&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;To make the reference documentation even easier to read, fields are now sorted alphabeticaly.&lt;/p&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2023-10-19</title><link>https://developer.altoviz.com/blog/2023-10-19-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2023-10-19-changelog</guid><pubDate>Thu, 19 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;h2 id=&quot;support-for-basic-authentication&quot;&gt;Support for basic authentication&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;An additional authentication method is introduced using HTTP basic authenticationa.
&lt;a href=&quot;https://developer.altoviz.com/docs/guides/authentication&quot;&gt;Read more&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;new-api-for-units&quot;&gt;New API for units&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You can get the units list using the &lt;a href=&quot;https://developer.altoviz.com/api#tag/units/get/v1/units&quot;&gt;Units&lt;/a&gt; API&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;classification-filter-by-type&quot;&gt;Classification filter by type&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;A new &lt;code dir=&quot;auto&quot;&gt;type&lt;/code&gt; parameter allow to filter the returned classifications.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.altoviz.com/api#tag/classifications/get/v1/Classifications&quot;&gt;Read more&lt;/a&gt;&lt;/p&gt;
&lt;!-- truncate --&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2023-10-05</title><link>https://developer.altoviz.com/blog/2023-10-05-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2023-10-05-changelog</guid><pubDate>Thu, 05 Oct 2023 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;h2 id=&quot;api-key-by-parameter&quot;&gt;API key by parameter&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;An additional authentication method is introduced using a URL parameter.
&lt;a href=&quot;https://developer.altoviz.com/docs/guides/authentication&quot;&gt;Read more&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;post-content-no-longer-needs-id&quot;&gt;POST content no longer needs Id&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Some API like contact creation or customer update had a useless Id member.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;new-webhooks&quot;&gt;New webhooks&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;We added more webhooks to give you more control over what happens in the app.
&lt;a href=&quot;https://developer.altoviz.com/docs/guides/webhooks&quot;&gt;Read more&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;settings-api&quot;&gt;Settings API&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;A new settings API allows you to get all settings including timezone, logo, vat number, var mode and more.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-iH&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;x-api-key:5b26c099-5d5e-4087-90a0-722f9d5b92ee&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://api.altoviz.com/v1/settings&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.altoviz.com/api#tag/settings/get/v1/Settings&quot;&gt;Read more&lt;/a&gt;&lt;/p&gt;
&lt;!-- truncate --&gt;
</content:encoded><category>changelog</category></item><item><title>Changelog 2023-09-21</title><link>https://developer.altoviz.com/blog/2023-09-21-changelog</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2023-09-21-changelog</guid><pubDate>Thu, 21 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;div&gt;&lt;h2 id=&quot;new-api-to-get-vats&quot;&gt;new API to get VATs&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;You might need to create an invoice from scratch, without using any existing product, so you will have to spefify the appropriate VAT for each line. Those things are not frequently changing but a better approach than hard coding is to list the VATs.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-iH&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;x-api-key:5b26c099-5d5e-4087-90a0-722f9d5b92ee&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://api.altoviz.com/v1/vats&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The result is a list of all existing VAT&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;22&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;0.0% - FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;23&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;EU&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;0.0% - EU&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;24&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;0.0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;IE&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;0.0% - IE&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;20.0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;20.0% - FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;26&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;10.0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;10.0% - FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;27&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;5.5&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;5.500% - FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;28&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;2.1&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;2.100% - FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.altoviz.com/api#tag/vats&quot;&gt;REST API reference&lt;/a&gt;&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;new-api-to-get-classifications&quot;&gt;new API to get classifications&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Classifications are our way to produce accounting registers from user created invoices. You can now get a complete list of existing classifications.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;curl&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-iH&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;x-api-key:5b26c099-5d5e-4087-90a0-722f9d5b92ee&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;https://api.altoviz.com/v1/classifications&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;The result is a list of classification with all the detail. Did you notice the associated VAT ?&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;162&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;Abonnements/Locations&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;description&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;Abonnement ou location de matériel (hors locations mobilières/immobilières), hébergement de site internet...&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;accountNumber&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;6131&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;defaultVat&quot;&lt;/span&gt;&lt;span&gt;: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;25&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;rate&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;20.0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;region&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;20.0% - FR&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;isProduct&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;isService&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;Expense&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;microBusinessDeclarationType&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;id&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;154&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;label&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;Accessoires et petits matériels&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;description&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;Biens et équipements dont la valeur est inférieure à 500€ HT : bureau, tablette, téléphone, etc.&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;accountNumber&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;6051&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;defaultVat&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;isProduct&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;isService&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;false&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;Expense&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;&quot;microBusinessDeclarationType&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;null&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.altoviz.com/api#tag/classifications&quot;&gt;REST API reference&lt;/a&gt;&lt;/p&gt;
</content:encoded><category>changelog</category></item><item><title>Hello World !</title><link>https://developer.altoviz.com/blog/2023-09-19-hello-world</link><guid isPermaLink="true">https://developer.altoviz.com/blog/2023-09-19-hello-world</guid><pubDate>Tue, 19 Sep 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a very special day today for the Altoviz team. We are launching our initiative for developers including :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a website dedicated to developers &lt;a href=&quot;https://developer.altoviz.com&quot;&gt;developer.altoviz.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;the public &lt;a href=&quot;https://developer.altoviz.com/api&quot;&gt;RESTful APIs&lt;/a&gt; of the Altoviz platform&lt;/li&gt;
&lt;li&gt;the Altoviz &lt;a href=&quot;https://github.com/altoviz&quot;&gt;GitHub&lt;/a&gt; page&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- truncate --&gt;
&lt;div&gt;&lt;h2 id=&quot;altoviz-public-apis&quot;&gt;Altoviz public APIs&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The Altoviz platform provides free &lt;a href=&quot;https://developer.altoviz.com/api&quot;&gt;RESTful APIs&lt;/a&gt; to deal with quotes, invoices, contacts, customers and products.&lt;br&gt;
This is a great opportunity for every developers creating apps and solutions that at some point could generate invoices or sync contacts.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;altoviz-developer-hub&quot;&gt;Altoviz Developer Hub&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;We created the &lt;a href=&quot;https://developer.altoviz.com&quot;&gt;Altoviz Developer Hub&lt;/a&gt; website to publish developer oriented content only. App users and customers will still use the mainstream &lt;a href=&quot;https://altoviz.com/blog&quot;&gt;blog&lt;/a&gt; on &lt;a href=&quot;https://altoviz.com&quot;&gt;altoviz.com&lt;/a&gt;.&lt;br&gt;
Everything useful we provide for developer will be there : A complete and up to date documentation for the APIs, tutorials and a blog. For samples and code, check out our &lt;a href=&quot;https://github.com/altoviz&quot;&gt;GitHub&lt;/a&gt; page.&lt;br&gt;
We’ll use the blog for every announcements. To ensure that you’ll not miss a thing, use the &lt;a href=&quot;https://developer.altoviz.com/blog/rss.xml&quot;&gt;RSS feed&lt;/a&gt; or subscribe to the developer e-mail list in your &lt;a href=&quot;https://altoviz.com/fr/compte/communication/&quot;&gt;account&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;altoviz-github-page&quot;&gt;Altoviz GitHub page&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;We share our &lt;a href=&quot;https://github.com/altoviz?q=sample&quot;&gt;code samples&lt;/a&gt; on GitHub 🐙 so every developers can explore, resuse and enhance them.&lt;br&gt;
If you create a project on GitHub related to Altoviz, feel free to ping us. We will be more than happy to promote it.&lt;/p&gt;
&lt;p&gt;The possibilities are endless, so are the opportunities. We can’t wait to see what awesome things developers will do with the Altoviz APIs.&lt;/p&gt;
</content:encoded><category>annoucements</category></item></channel></rss>