=== Nestero Integration for Fakturownia — changelog ===

Full history of changes. The readme lists the latest versions only.

= 0.9.4 =
* The legal basis for a VAT exemption is printed once. Invoices with "zw" items showed it twice in the notes: Fakturownia prints the exemption field it receives for KSeF, and the plugin also copied the same text into the notes.

= 0.9.3 =
* Buyer details on the invoice always come from the order. The plugin no longer sends a Fakturownia client ID: with it, Fakturownia took the buyer from the client card and ignored the order, so a customer whose card was created by an earlier private order got invoices without the company name and tax number, and with an old address. Fakturownia still links each document to its client by tax number, e-mail and name.
* A company name the customer enters is printed on the invoice instead of their first and last name, also without a tax number. Fakturownia replaced the name with the person's name whenever both were sent. Whether the invoice is a company invoice (and goes to KSeF) still depends on the tax number; "-", "none" and similar entries are ignored.
* The company name is also read from other checkout field plugins (`_billing_company_name`, used with Flexible Checkout Fields), and any other field can be set in Settings → Customers and tax numbers.

= 0.9.2 =
* Tax numbers from other checkout field plugins: Flexible Checkout Fields (`_billing_tax_no`) and common VAT number fields are read automatically, and any other field can be set in Settings → Customers and tax numbers. Before, such orders were invoiced as a consumer, without the tax number.
* Payment gateways outside the built-in list (Tpay, PayU, Przelewy24 and others) print the payment method the customer chose, e.g. "BLIK", instead of "Transfer".
* The automatic invoice e-mail goes out two minutes after issuing. An invoice issued in the same second by the WooCommerce module in Fakturownia is caught, and only one invoice reaches the customer; the PDF is not attached to WooCommerce e-mails of an order flagged as a duplicate.
* The notice about another integration also recognises the WooCommerce module in Fakturownia (its webhooks and REST API key) and says where to switch it off.
* Cancelling an invoice from the order screen is confirmed correctly — Fakturownia marks a cancelled document by its kind, not by its status.
* An error while downloading a PDF no longer shows the API token.

= 0.9.1 =
* One invoice per order. A document already in Fakturownia under the bare order number (an older version, another integration, a manual entry) blocks a new one: it is linked when the buyer and the total match, otherwise the order waits for your decision. Before, a document with a different buyer e-mail was taken for another shop's and a second invoice was issued. Right after issuing and before the automatic e-mail the plugin looks again — an invoice another integration issued in the same second marks the order "Check" and the e-mail is held. A notice warns when another Fakturownia plugin is active.
* The tax number used to recognise an existing document is read from every field the plugin knows, including the block checkout.

= 0.9.0 =
This release fixes the problems found in an independent audit of the plugin. Read the first five points before updating a store that shares its Fakturownia account with another store.

* Each store gets its own document identifier: the order number followed by a short installation code ("1234-ab12cd"). Before, two stores on one Fakturownia account — or one store after its order numbering was reset — could link an order to another customer's invoice and e-mail it to the wrong person.
* A document already in Fakturownia under the old identifier is linked to the order only when its buyer and total match the order. Otherwise the order is marked "needs review", nothing is e-mailed and you decide on the order screen.
* The lookup asks for documents from all periods and takes only an exact match of the identifier and the document kind — a correction or a proforma with the same number is no longer taken for the invoice.
* Cancelled, refunded, failed, pending and draft orders are never invoiced. They are removed from the trigger statuses on update, and a document still waiting in the queue for an order cancelled in the meantime is dropped.
* A copy of the store under another address (for example staging) and a site whose environment type is not "production" send nothing to Fakturownia until you confirm the new address or allow the environment in Settings → Advanced. Stores connected before 0.9.0 keep working: their current address is remembered on update.
* The VAT rate of a position comes from the amounts the order was calculated with. A tax class mapped to another rate can no longer turn a 23% order into an 8% invoice. Fractional rates such as 5.5% are kept instead of being saved as 55%.
* A 0% tax class without its own mapping blocks the document with a reason: 0%, exempt ("zw") and not subject to VAT ("np") are different things on an invoice, and the plugin no longer guesses.
* A business buyer is a buyer with a tax number. A company name alone makes a private buyer unless you switch on "Also treat orders with only a company name (no tax number) as company orders" in the settings. The buyer is sent to Fakturownia as a company flag with the name in the buyer name.
* EU VAT numbers get their country prefix when the customer typed only the digits and are sent as EU VAT numbers; numbers from outside the EU are sent as "other". Invoices for companies from other EU countries are no longer refused.
* A tax number made of zeros is rejected, the tax number is no longer taken from the shipping address, and an empty field at checkout no longer clears a tax number saved by another plugin.
* Orders paid online are issued as paid, with the payment date. Cash on delivery stays unpaid until the order is completed.
* Negative fees (discounts added by other plugins) are spread over the items as discounts, so the invoice adds up to the order without positions with negative prices.
* The total check compares gross, VAT and net. A document that does not add up to the order is marked "needs review" instead of only being logged.
* Validation errors from Fakturownia are not retried and come with a hint on what to change. A maintenance page sent instead of a PDF is no longer attached to e-mails.
* The duplicate lock belongs to the job that took it: a slow job no longer loses its lock to a second one. Jobs that stopped while creating a document are picked up again.
* New screen Fakturownia → Synchronisation: orders without a document, documents that need review, jobs that are stuck, and a button to queue them again. An optional daily e-mail lists what needs attention.
* An invoice is e-mailed once: the automatic e-mail is not repeated when a WooCommerce e-mail already carries the PDF.
* A warning when an invoice is issued after the 15th of the month following the sale.
* The orders list can be filtered by invoice status. Cancelling an invoice asks for confirmation, and "retry" refuses when the document is already issued or being created.
* Only users with the "manage WooCommerce" capability see the plugin screens.
* Logs mask names, notes and tax numbers or e-mail addresses in URLs. Short tax numbers no longer crash the job that just created the document. Debug logging switches itself off after three days.
* Tools → Export / Erase Personal Data include the plugin's data, and the plugin suggests a paragraph for the privacy policy.
* The settings warn about tax setups that would produce wrong invoices and show the WooCommerce rates next to their mapping.
* Stores with prices excluding VAT ("Exclude VAT (net)") could not issue any invoice: Fakturownia rejected every position without a gross amount. Positions now carry it, and with a coupon the amounts after the discount are sent, so net and VAT match the order to the grosz.
* Invoices with "zw" items send the legal basis for the exemption as the document field KSeF reads, and invoices with "np" items send the new "Basis for not subject to VAT" setting. The settings warn when a class is mapped to "zw" or "np" without it.
* Shipping in a cart with only exempt (or other 0%) products no longer stops the invoice with "the tax class inherit has a 0% rate" — the plugin uses the rate WooCommerce actually applied to the shipping.
* Lines WooCommerce charged no VAT on (untaxed shipping or fees, products without tax, stores with taxes switched off) no longer go to the invoice as 0%. A new setting, "Items without VAT", decides: automatically they get the rate of the products when all products share one zero rate (0, zw or np) — shipping follows the goods; otherwise the invoice waits until you choose 0, zw or np. Stores with taxes switched off in WooCommerce must choose (usually "zw" for sellers exempt under art. 113) — the settings say so.
* An order without an e-mail address gets its invoice, but nothing is e-mailed: Fakturownia would otherwise send it to its own customer of the same name. The order screen, the orders list ("Not e-mailed" and a new filter) and the log show it; add the address and send the invoice by hand.
* Any difference between the invoice and the order — even one grosz of net, VAT or gross — marks the invoice "Check" on the orders list and on the order screen, with the likely cause. Before, differences up to 0.02 went unnoticed.
* Cancelling an invoice from the order screen checks that Fakturownia really cancelled it. Fakturownia can answer "success" and leave the document active; the store then keeps it as issued and says so.
* Checked against a real Fakturownia test account: the invoice data of 23 sample orders in six tax setups (138 documents), and end-to-end runs covering every VAT rate (23, 8, 5, 0, zw, np, 5.5, reverse charge), payments, EU buyers, foreign currency, recovery after a lost response and documents left by other integrations.
* Extension contract 1.7 for the Pro extension 1.1.0. Database version 1.0.4 adds the issue date, the review reason and the e-mail status.

= 0.8.1 =
* Fixes the cursor-based document reads added in 0.8.0, which failed on every call. The Pro extension's CSV export, monthly report and WP-CLI commands depend on them.
* EU VAT numbers keep their country prefix ("DE123456789") instead of being reduced to digits, so companies from other EU countries no longer fail the KSeF check.
* The VAT rate of a position is read from the tax rate WooCommerce applied, not reverse-engineered from the amounts. Very cheap or heavily discounted lines could end up with a rate that had no mapping.
* A Fakturownia reply that is not JSON (a maintenance page, a firewall challenge) is treated as an error and retried, instead of being read as an empty document that cleared the invoice number and PDF token.
* Changing the subdomain now asks for the API token of that account; the saved token is no longer sent to the new subdomain.
* Invoice PDFs attached to e-mails are kept for an hour and removed by an hourly task, so mailer plugins that queue messages still find the attachment. One request no longer downloads the same PDF for every e-mail it sends.
* Importing historical orders no longer issues invoices for them, two status changes at the same time no longer leave an error note on the order, and the "mark as paid" task is queued only for orders that have a document.
* The "I want a VAT invoice" checkbox in the block checkout appears once, not in both address forms. A tax number typed on the order screen is formatted like the one from the checkout.
* Faster admin: the notice summary and the background-job check are cached, the settings option is autoloaded, and the log table has an index for the error lists.
* Extension contract 1.6 adds the admin page slugs.
* Uninstalling removes leftover temporary PDF directories.

= 0.8.0 =
* Extension contract 1.5 adds cursor pagination for efficient reads of large document histories.
* Prevents duplicate invoices when Fakturownia returns a response without a document ID.
* Fixes marking the selected invoice as paid and preserves the paid state after e-mail delivery.
* Requeues all invoices with authorization errors in batches instead of stopping after the first 200.

= 0.7.0 =
* The admin screens were reworked for everyday use. The dashboard opens with the connection, the issuing queue and the rules for new orders; each problem is listed once under "Needs attention", and the Pro card moved to the bottom.
* Documents: status views with counts (All, Error, Sent…), one search box for the invoice or the order number, less common filters under "More filters", an amount column, and row actions under the document number. On phones and tablets every column opens with the row toggle — before, the status and the actions were hidden.
* Retry and send on the Documents list no longer run again when the page is refreshed or when you move to the next page. Before, that could e-mail the same invoice to the customer twice.
* "Send e-mail" is hidden when invoice e-mails are switched off, and the action refuses to run. Before, it promised an e-mail that was never sent.
* Dates in the admin follow the store time zone and date format. Before, UTC times were shown as local, one or two hours off in Poland. "Issued today" on the dashboard counts from local midnight.
* Document statuses, KSeF statuses and log levels have one set of names everywhere, in full words. The Polish translation no longer shows "Wyst." or "Wysł.", and KSeF shows "Accepted by KSeF" instead of `ok`.
* Settings: VAT rates, prices and the seller details moved to a new "Taxes and seller" tab. Options that do not apply are hidden (statuses in manual mode, NIP checks without the NIP field, sender fields of the unused e-mail channel), and invoice e-mails are one question: automatically, only by hand, or never.
* Saving the settings redirects back, so refreshing the page does not submit the form again. A rejected connection keeps the subdomain you typed, and "Save anyway" appears only after a failed test. Leaving a tab with unsaved changes asks first.
* The department is picked by name from the list in your Fakturownia account when it loads; typing the ID still works.
* Cancelling an invoice, removing a document link and disconnecting the account ask for confirmation in a dialog that says what happens. Action buttons show progress and cannot be clicked twice.
* "Issue the invoice now" on the order screen explains that Fakturownia has to be connected first instead of failing in the background.
* The setup wizard asks whether store prices include VAT (preselected from WooCommerce), its final screen matches the mode you chose, and it leaves the menu once the plugin is connected.
* Admin notices are not repeated on the dashboard, validation problems are no longer called "KSeF errors", and the notices need one database query instead of three.
* Radio and checkbox groups have fieldset legends, the sender fields have visible labels, status colours meet WCAG AA contrast, and focus is always visible.
* Logs are kept for 90 days by default instead of 14. Sites that already saved the setting keep their value — change it in Settings → Advanced.
* Export the log to CSV with the filters currently applied: every matching entry, not only the visible page; dates in UTC.
* A failed invoice e-mail records the reason given by the mail server or the mailer plugin (for example an SMTP authentication error) instead of "wp_mail reported a sending error", and the entry is linked to its order, so it shows up in the order's history and in the log filter by order.
* E-mail addresses inside log messages are masked, like the ones in the entry details already were.
* For extensions: contract 1.4 adds the `nestero_fakt_operation_label` filter, so an extension can name its own operations in the log. Settings tabs added by an extension now also save with a redirect, and the new `nestero_fakt_settings_submit` filter lets such a tab rename or hide the save button.

= 0.6.3 =
* Fix: the links to the Pro extension lead to its current page in the Nestero shop. The old address no longer existed.

= 0.6.2 =
* Fix: the plugin works on PHP 8.1 as declared. On 8.1 the first call to the Fakturownia API ended in a fatal error.
* Fix: failed invoices are retried again. After a network error, a server error or a rate limit the retry was silently dropped, so the document stayed failed for good. E-mail delivery is retried three times and then stops.
* Fix: the daily connection check and log clean-up are scheduled again. Logs no longer grow without limit.
* Fix: the classic checkout no longer marks every order as "I want a VAT invoice". In the "only when the customer asks" mode private buyers got invoices they had not asked for.
* Fix: the invoice e-mail has a subject and a body when the fields in the settings are left empty.
* Fix: deactivation cancels all background jobs; activation resumes the documents that were waiting; `wp plugin uninstall` removes the plugin data again.
* Security: the API token is no longer written to logs, document errors or the diagnostic report when Fakturownia echoes it back in an error message.
* Security: the notice shown after an action no longer takes its text from the address, order screen actions only work on documents of that order, and the connection test no longer returns data of the last invoice.
* Security: the API token is encrypted with a key derived from the WordPress salts. Tokens saved by earlier versions are read and re-encrypted automatically.
* The dashboard no longer waits for Fakturownia while it loads; the connection is checked in the background.
* The Fakturownia column on the orders list loads with one query for the whole page.
* Date filters are validated and follow the store timezone, so a monthly range starts and ends at local midnight.
* The temporary invoice PDF is readable only by the web server user.
* Saving the connection settings right after "Disconnect account" no longer disconnects the account again.
* "Test connection" appears only once the subdomain and the API token are filled in, and it tests the details typed in the form before they are saved. "Check now" on the dashboard is hidden until the connection is configured.
* Error messages no longer end with technical markers such as [AUTH] or [NETWORK].
* Filters, sender fields and the VAT rate mapping have accessible names for screen readers.
* The extension contract grows to version 1.3: corrections pass the local validation and extensions can show a notice after an action.

= 0.6.1 =
* The extension contract grows to version 1.2: it can now read the tax number recorded on an order and page through the document list. Both were already in the plugin; they are simply reachable by an extension now. Nothing changes for a store running the free plugin on its own.

= 0.6.0 =
* The plugin now exposes a documented contract (`Nestero\Fakturownia\Api`) that an extension can build on: settings, the Fakturownia client, document records and the job queue. Nothing changes for a store running the free plugin on its own.
* Documents other than the VAT invoice can now go through the same queue, lock and retry schedule. New filters: `nestero_fakt_document_payload` (payload with the document kind and refund it belongs to), `nestero_fakt_document_kind_for_order`, `nestero_fakt_document_kinds`, `nestero_fakt_documents_row_actions`, plus the action `nestero_fakt_order_metabox_actions`.
* Retrying a document from the Documents screen uses one job for every kind. A correction used to have a separate job with different arguments, so it retried on a different path than the invoice next to it.
* Recovery after a failed request looks the document up by the identifier that was actually sent, not by the order number — so a failed correction can no longer "recover" into the original invoice.

= 0.5.9 =
* Activating the plugin no longer takes over the screen: WordPress stays where it was, and the setup lives under Fakturownia → Setup.
* Plugin warnings appear only on the plugin's own screens and on orders — nowhere else in the panel.
* The "Pro" link next to the plugin is a plain link to the plugin's own Pro tab, without colour or bold.

= 0.5.8 =
* The Pro reminder no longer shows up on the WordPress dashboard. Everything about the Pro extension now lives on the plugin's own screens.
* The interface can now be translated: the source strings are English and a Polish translation ships with the plugin.
* The plugin declares HPOS and block checkout compatibility, so WooCommerce stops reporting it as incompatible with features it actually uses.
* The duplicate-invoice lock works under HPOS. It used to be stored as post meta, which orders in that mode no longer use.
* "Cancel invoice" and "Unlink" ask for confirmation again, and cancelling asks for a reason. A class name mismatch meant the confirmation never appeared, leaving a document one click away from being cancelled.
* Request bodies are no longer logged by default — they carry the customer's complete billing data. Turn them on while diagnosing a problem in Settings → Advanced → Detailed logs.
* An unreadable token (after moving the store or changing the keys in wp-config.php) no longer breaks the order screens; the plugin simply asks you to connect again.
* Uninstalling keeps invoice links and logs. Removing them is a separate opt-in in Settings → Advanced.
* An order skipped by the automation rules no longer leaves behind a "queued" row that promised an invoice "in a few minutes" forever.
* After a token is fixed, the invoices it blocked are actually issued — including when the plugin runs in manual mode.
* The storefront no longer pays three scheduler queries for every visitor page view.
* Smaller fixes: the temporary PDF lives in an unguessable directory and is cleaned up after sending, the orders list link is correct under HPOS, the setup wizard no longer hijacks bulk plugin activation, and the "sodium" PHP extension is verified on activation.

= 0.5.7 =
* PKWiU lands in the right column of the invoice instead of under the item name. Fakturownia keeps PKWiU and the product code in a single field, so when a product has PKWiU it takes that column and the header names what is in it.

= 0.5.6 =
* PKWiU finally shows up on the invoice, under the item name. The plugin used to send it in a field Fakturownia does not have, so the symbol vanished without any error.

= 0.5.5 =
* Admin messages rewritten without jargon. Instead of "the job will be processed in the background", the plugin simply says the invoice is being created and will show up in a few minutes.

= 0.5.4 =
* Critical: invoices containing a VAT-exempt item were not issued at all — the API rejected the document with "Invalid attribute". Fixed.
* SKU appears on the invoice printout. It used to be stored in Fakturownia while the product code column stayed hidden.
* "VAT exemption type" became "VAT exemption legal basis" — it is printed on the document, as required by art. 106e(1)(19) of the Polish VAT Act.

= 0.5.3 =
* Important: a 0% rate and an exemption are now told apart. VAT rates are mapped per WooCommerce tax class rather than per percentage — previously every zero-tax item received the same rate on the invoice.
* Existing per-percentage settings keep working as a fallback. Review Invoicing → VAT rate mapping.

= 0.5.2 =
* Shipping and fees are billed as services, not pieces, so they use a service unit on the invoice. The unit can be changed with the `nestero_fakt_service_quantity_unit` filter.

= 0.5.1 =
* Fix: discounts (coupons, sales) were missing from the invoice. The total was correct, but instead of the list price and the discount the document showed the reduced price straight away.

= 0.5.0 =
* New action layout on the order screen: one primary action, document operations as a consistent list with icons, "Open in Fakturownia" as a link.
* Irreversible actions (cancelling, unlinking) are muted — red appears only on hover.
* Disabling the e-mail for a single order looks like a setting now, not like the most important link in the panel.

= 0.4.9 =
* Operation history in plain language: "Invoice issued" instead of `invoice_created`, "Skipped — the customer did not ask for an invoice" instead of `invoice_skipped`.
* The same names in the order history, on the dashboard and in the log, filter included.

= 0.4.8 =
* Fix: re-queueing the same invoice marked the plugin's own document as issued outside the plugin. The plugin now recognises invoices it created itself.
* A document that already exists in Fakturownia is not sent back to the queue — the plugin suggests cancelling or unlinking it instead.
* Plugin warnings appear only on its own screens and next to orders, state how many documents are affected and link straight to the list.

= 0.4.7 =
* "Issue invoice now" answers immediately: the document appears as "Queued" with a note that the job is waiting to be processed. The screen used to look exactly as it did before the click.
* Messages after an action say what actually happened instead of a generic "Action completed".

= 0.4.6 =
* Fixed "Issue invoice now" in manual mode — the job reached the queue, re-checked the automation rules there and skipped itself.
* Fixed order action links under HPOS: they led to a screen that does not exist, so clicking looked like nothing happened. The same applied to order links on the dashboard, in the logs and on the document list.

= 0.4.5 =
* Fixed invoices being skipped for block checkout orders: the tax number and the "I want a VAT invoice" consent were visible on the order, but the plugin did not read them and treated such orders as private ones without consent.
* Values from both checkouts now land under the same order keys; existing orders repair themselves on their next status change.

= 0.4.4 =
* Invoicing settings no longer look duplicated: "Invoicing mode" and "Automation rules" became one "When to issue an invoice" section with three clearly different questions — automatic issuing, order scope and trigger statuses.
* Document content fields (sale date, notes) moved into their own section instead of splitting the automation settings.
* In the wizard, the card title no longer repeats the first field label.
* Option names unified between the wizard and the settings.

= 0.4.3 =
* Fixed the layout of the second wizard step: the option label blended into its description and the order status list stretched the screen.
* The selected option is visibly marked and the fields can be operated from the keyboard with a readable focus outline.
* Order statuses are laid out in columns instead of one long list.

= 0.4.2 =
* New presentation of the Pro information: a dark panel with clear hierarchy instead of yet another white box, in the same form on the dashboard, in the Pro tab and in the dashboard notice.
* The message states plainly which manual work disappears — today's way of working struck through, next to the benefit.

= 0.4.1 =
* Pro information at the top of the plugin dashboard, focused on the benefit ("a refund in the store means a ready correction") rather than on feature names.
* A Pro reminder on the WordPress dashboard: at most once every 90 days, only for people who manage invoices, and only once the plugin has issued a document. It can be dismissed or switched off for good.

= 0.4.0 =
* Consistent Pro information: a "Pro" tab in the settings, a card on the dashboard and short mentions exactly where a feature is missing (a refund without a correction, bulk operations).
* The promotion never appears in WordPress notices and disappears completely once Pro is active.
* "Settings" and "Pro" links next to the plugin on the Plugins screen.

= 0.3.2 =
* Rebuilt order metabox: the document number as the heading with the status next to it, instead of a list of "Number:" and "Status:" labels.
* Actions in three layers — document (PDF, preview), operations (e-mail, status, mark as paid) and an irreversible zone (cancel, unlink) as discreet links rather than identical buttons.
* Buttons are laid out in rows instead of one below another, which makes the metabox markedly shorter.
* Clearer warnings and operation history; one look for statuses in the metabox, on the orders list and in Documents.
* Added the "Cancelled" status to the orders list and to Documents.

= 0.3.1 =
* Fixed a fatal error on the Invoicing tab (VAT rate auto-detection read WooCommerce tax classes as strings).
* Fixed e-mail delivery through Fakturownia — the recipient list was sent as an array instead of a comma-separated string, which ended in an HTTP 500.
* Removed the `calculating_strategy` field from the document; the API rejected it with an HTTP 500, so gross prices are now enforced by the items themselves.
* After a server error the plugin checks whether the document was created anyway and links it instead of creating a duplicate.
* The "Tax number required for business orders" option is now enforced, not just stored.
* Tax number validation is soft by default — an invalid number warns but does not stop the sale; hard blocking is a separate option.
* The wizard asks directly about the native Fakturownia integration for WooCommerce, which risks duplicate invoices.
* The order metabox explains why no invoice was created and warns about a missing VAT rate mapping.
* New "Mark as paid" action; the status is stored as returned by the API.
* Connection status in four states (working, wrong credentials, service unavailable, not configured) and token validation before the API is called.
* The `Retry-After` header is respected when the API rate-limits the plugin.
* A "WooCommerce order #number" note on the document, optional customer notes, a choice of sale date, and a sender and Reply-To for e-mails.
* An item without a SKU no longer receives the product id in the code field.

= 0.3.0 =
* E-mail delivery through WooCommerce (PDF from the API, a template with your own subject and body, placeholders).
* The invoice PDF in WooCommerce transactional e-mails (Completed, Processing, Invoice).
* Customer deduplication in Fakturownia (external id / tax number plus buyer override).
* Automation rules: business only, private only, skip zero-value orders; the reason for skipping is logged.
* VAT rate mapping with auto-detection of WooCommerce rates; an unmapped rate blocks the document.
* Gross pricing support plus a document total check against the order total.
* Actions: cancel invoice (with a reason), unlink the local record, refresh status, disable the e-mail for a single order.
* Connection: masked token preview, a "Disconnect account" button, saving only after a successful test (with an override), a daily connection check with an alert, and automatic resumption of the queue once the token is fixed.
* A tax number field in My Account → Billing address and on the order screen in the admin.
* An operation mini-log and a retry counter in the order metabox; throttling for repeated e-mail sends.
* KSeF synchronisation, webhooks and holding the e-mail until the KSeF number arrives were removed from the free plugin. The Pro extension does not include them either.
* Removed the `ask_then_auto_b2b` mode (merged into "only when the customer asks") and the unused REST controllers.

= 0.2.0 =
* Invoicing modes, the "I want a VAT invoice" checkbox, automatic invoices for business orders, an extended wizard.

= 0.1.0 =
* First development version: plugin skeleton, settings screen, connection to the API.
