<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=TakePOS_Digital_Invoice</id>
	<title>TakePOS Digital Invoice - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dolibarr.org/index.php?action=history&amp;feed=atom&amp;title=TakePOS_Digital_Invoice"/>
	<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=TakePOS_Digital_Invoice&amp;action=history"/>
	<updated>2026-10-23T06:44:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=TakePOS_Digital_Invoice&amp;diff=67483&amp;oldid=prev</id>
		<title>Abahfir at 14:31, 29 September 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=TakePOS_Digital_Invoice&amp;diff=67483&amp;oldid=prev"/>
		<updated>2026-09-29T14:31:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:31, 29 September 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l114&quot;&gt;Line 114:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 114:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[fr:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TakePOS_Digital_Invoice_FR&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[fr:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Facture_numérique_pour_TakePOS&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Abahfir</name></author>
	</entry>
	<entry>
		<id>https://wiki.dolibarr.org/index.php?title=TakePOS_Digital_Invoice&amp;diff=67480&amp;oldid=prev</id>
		<title>Abahfir: module takepos digital invoice</title>
		<link rel="alternate" type="text/html" href="https://wiki.dolibarr.org/index.php?title=TakePOS_Digital_Invoice&amp;diff=67480&amp;oldid=prev"/>
		<updated>2026-09-29T14:23:09Z</updated>

		<summary type="html">&lt;p&gt;module takepos digital invoice&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;div style=&amp;quot;width:100%;font-family:Arial,sans-serif;font-size:16px;line-height:1.6;color:#222;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;width:100%;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;TakePOS Digital Invoice&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Summary:&amp;lt;/strong&amp;gt; Lets a buyer of a TakePOS sale request an electronic invoice by scanning a QR code on the receipt.&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;Module version:&amp;lt;/strong&amp;gt; 1.0.0&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;Declared compatibility:&amp;lt;/strong&amp;gt; Dolibarr 23.0 or later, PHP 7.2 or later&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;Last documentation review:&amp;lt;/strong&amp;gt; 2026-09-29&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Demo video:&amp;lt;/strong&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;560&amp;quot; height=&amp;quot;315&amp;quot;&amp;gt;PaenAajCX0E&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Demo site:&amp;lt;/strong&amp;gt; [https://01consulting.eu/demo/htdocs/ Open the demo site]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Publisher website:&amp;lt;/strong&amp;gt; [https://01consulting.eu/ 01Consulting]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;This guide covers installation, settings, receipt QR codes, the customer workflow, request tracking, EInvoicing integration, permissions, and troubleshooting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;1. Purpose and scope&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;TakePOS sales are often recorded against the generic third party assigned to a terminal. This module gives the buyer of a paid sale a way to provide company details, confirm an email address, and request the electronic invoice for that existing sale.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The module identifies or creates a customer third party, links the TakePOS invoice to it, prepares the electronic invoice with EInvoicing, sends it to the approved platform configured there, then emails the requester the official readable PDF retrieved from that platform.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The public workflow is intended for French companies with an active 14-digit SIRET. It does not create a new commercial invoice; it operates on the already-paid TakePOS invoice. Individuals and foreign companies are not supported.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;2. End-to-end workflow&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;When a TakePOS invoice is validated, the module creates a random 64-character identifier and stores it in the invoice &amp;lt;code&amp;gt;hash&amp;lt;/code&amp;gt; extrafield.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The receipt prints or displays a QR code that opens the public form for that invoice.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The buyer submits company details and a SIRET. The module checks the fields, email domain, and available official register data.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The module sends a confirmation link to the submitted email address. Processing does not start until the link is opened.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;After confirmation, the module reuses the matching third party or creates one, then links the paid invoice to it.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;EInvoicing generates the electronic document using the configured protocol and sends it to the approved platform.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The module retrieves the platform’s official readable PDF and emails it to the requester.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Errors are recorded on the request. An authorized user can retry processing. If the invoice has already been transmitted, the existing platform flow is reused to retrieve the PDF; the invoice is not sent a second time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;3. Requirements and compatibility&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Dolibarr:&amp;lt;/strong&amp;gt; the module descriptor declares Dolibarr 23.0 or later; the module was prepared for Dolibarr 23.0.3.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;PHP:&amp;lt;/strong&amp;gt; minimum declared version is 7.2.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Dolibarr modules:&amp;lt;/strong&amp;gt; Invoices, TakePOS, and EInvoicing must be enabled.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;EInvoicing:&amp;lt;/strong&amp;gt; configure an approved platform, satisfy its prerequisites, and select the CII or Factur-X protocol.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Email:&amp;lt;/strong&amp;gt; outbound email from Dolibarr must be configured.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Server connectivity:&amp;lt;/strong&amp;gt; the server must be able to reach the Company Search API, DNS, and, if enabled, the Verifalia API over HTTPS.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Customer access:&amp;lt;/strong&amp;gt; the public Dolibarr URL must be reachable from the phone scanning the receipt.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;TakePOS terminal:&amp;lt;/strong&amp;gt; each relevant point of sale must have a default generic third party, used to determine whether the buyer is still anonymous.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;4. Installation, activation, and updates&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;4.1. Install and activate&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Copy the &amp;lt;code&amp;gt;takeposdigitalinvoice&amp;lt;/code&amp;gt; directory to &amp;lt;code&amp;gt;htdocs/custom&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;In Dolibarr, open &amp;lt;strong&amp;gt;Home &amp;amp;gt; Setup &amp;amp;gt; Modules/Applications&amp;lt;/strong&amp;gt;.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Enable &amp;lt;strong&amp;gt;TakePOS Digital Invoice&amp;lt;/strong&amp;gt;. First check that Invoices, TakePOS, and EInvoicing are installed and enabled.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Open the module configuration and set the &amp;lt;strong&amp;gt;General&amp;lt;/strong&amp;gt; and &amp;lt;strong&amp;gt;Email&amp;lt;/strong&amp;gt; tabs.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Grant the required read and process permissions to the relevant users.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Add the QR tag to the browser receipt template and/or ESC/POS template used by the terminal.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Make a test sale and verify the QR code, public form, email confirmation, and request tracking.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Activation loads the request table, adds the invoice &amp;lt;code&amp;gt;hash&amp;lt;/code&amp;gt; extrafield (varchar, 64 characters), declares the tracking menu and invoice tab, registers permissions, and declares the retention scheduled task. An activation migration also handles the former CII tracking columns and, where possible, fills in the format from documents already generated.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;4.2. Update&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Back up the database and Dolibarr documents before updating. Replace the module files with the new version, then reactivate the module if its menu or tab declaration has changed. Activation runs the migrations declared by the module. Afterward, check the configuration page, request menu, and a TakePOS invoice tab.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;4.3. Disable or uninstall&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The effects on tables, the extrafield, and documents depend on the operation selected in Dolibarr. Back up data before uninstalling and review the consequences shown by Dolibarr. The public workflow does not operate while the module is disabled.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;5. Permissions, menus, and screens&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:100%;border-collapse:collapse;border-color:#dee2e6;text-align:left;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Permission or screen&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Purpose&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Read requests&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Opens the request list and tracking tab on a TakePOS invoice. Dolibarr permission to view the invoice is also required.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Process requests&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Allows Retry and Cancel actions in the list and invoice tab.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Administer requests&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Permission declared in the module descriptor. Configuration pages also require Dolibarr administrator status.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Configuration&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Available to Dolibarr administrators from the module settings; includes General, Email, and About tabs.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The &amp;lt;strong&amp;gt;Billing/Payments &amp;amp;gt; TakePOS Digital Invoice&amp;lt;/strong&amp;gt; menu is shown to users with read permission. The invoice tab is shown only on invoices originating from TakePOS and to users with the same permission.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;6. General settings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Open the module settings and select the &amp;lt;strong&amp;gt;General&amp;lt;/strong&amp;gt; tab. The defaults below are defined by the configuration page; Dolibarr may retain a value already stored for the entity.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:100%;border-collapse:collapse;border-color:#dee2e6;text-align:left;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Setting&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Default&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Effect&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Public link lifetime&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;30 days&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Period from invoice validation; minimum one day.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Maximum attempts&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;5&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Limits submissions for the same invoice and hashed IP address.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Rate-limit window&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;15 minutes&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Time window applied to the attempt counter.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Completed request retention&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;365 days&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The scheduled cleanup can delete completed requests after this period.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Error request retention&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;90 days&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The scheduled cleanup can delete requests in error after this period.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Privacy policy URL&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Empty&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Optional link displayed below the public form when configured.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;QR code message&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;“Scan this QR code to request your electronic invoice.”&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Text printed or displayed with the QR code; an empty message falls back to the translated text.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Public form URL&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Computed&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Read-only value; verify it from outside the server.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;7. Email and PDF settings&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;In the &amp;lt;strong&amp;gt;Email&amp;lt;/strong&amp;gt; tab, configure the following:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:100%;border-collapse:collapse;border-color:#dee2e6;text-align:left;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Setting&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Initial value&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Description&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Confirmation token lifetime&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;24 hours&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The link is single-use and expires at its stored expiry time.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Resend delay&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;2 minutes&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Minimum delay before requesting another email for the invoice.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Sender name&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Empty&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Optional name used with Dolibarr’s general sender address.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Verifalia verification&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Disabled&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Optional external deliverability check; requires API username and password.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Verifalia timeout&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;20 seconds&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Allowed range: 5–30 seconds per call.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;PDF retrieval attempts&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Allowed range: 1–6 checks of the same platform flow.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Delay between attempts&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;2 seconds&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Allowed range: 1–5 seconds; no new transmission is made.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The sender address comes from &amp;lt;code&amp;gt;MAIN_MAIL_EMAIL_FROM&amp;lt;/code&amp;gt; in Dolibarr’s general email configuration. The module sender name is used for confirmation and PDF emails. If Verifalia is enabled without credentials, or its service rejects the request, submission is blocked with an appropriate error.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;8. Add the QR code to receipts&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;8.1. Browser receipt&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;Open the TakePOS setup and edit the relevant browser receipt template.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Insert the &amp;lt;code&amp;gt;__DOL_FAC_NUM__&amp;lt;/code&amp;gt; tag once where the QR code should appear.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Save the template and print a receipt for a newly validated TakePOS invoice.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On a browser receipt, the substitution displays a QR image produced by Dolibarr’s TCPDF engine, with the configured message. The module loads the invoice extrafields before performing the substitution.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;8.2. ESC/POS printer&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;In the RAW/Text printer setup, open the receipt template.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Add &amp;lt;code&amp;gt;{dol_fac_num}&amp;lt;/code&amp;gt; once.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Select this template for the terminal and run a print check.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The module documents this tag in the ESC/POS template help and replaces it with the native QR instruction &amp;lt;code&amp;gt;{dol_print_qrcode}&amp;lt;/code&amp;gt; followed by the public URL. The ESC/POS replacements also recognize &amp;lt;code&amp;gt;{DOL_FAC_NUM}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;{__DOL_FAC_NUM__}&amp;lt;/code&amp;gt;. The QR message is sent as ESC/POS text after the code.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The module also prepares the substitutions &amp;lt;code&amp;gt;__DOL_FAC_NUM_URL__&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dol_fac_num&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;__dol_fac_num__&amp;lt;/code&amp;gt;. If a valid hash is unavailable, substitutions are empty; while printing ESC/POS, the module tries to create the hash. If it fails, the tag is removed from the printout and an error is written to the Dolibarr log.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Do not add the tag in two locations in the same template. After enabling the module, verify a newly validated invoice: the hash is created by the TakePOS invoice validation trigger. Older receipts are not reprinted automatically.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;9. Public form and requested data&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The public page looks up the invoice using its hash. It requires the invoice to originate from TakePOS, the link to be within its lifetime, the invoice to be paid/closed, and the invoice still to be linked to the terminal’s default generic third party.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The public summary displays the seller, sale date, total including tax, terminal, and invoice reference masked except for its last four characters. It does not display sale lines, payment information, third-party identity, or the full invoice reference.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The form asks for:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;company name;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;address and optional additional address;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;postal code and town;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;14-digit SIRET;&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;email address.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The country is set to France in third-party processing; the form does not offer a country selector. The privacy policy link appears only when configured.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;10. Company and email checks&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;10.1. SIRET check&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The module queries the public Company Search API at &amp;lt;code&amp;gt;https://recherche-entreprises.api.gouv.fr/search?q=&amp;lt;/code&amp;gt; using the submitted SIRET. It requires 14 digits, finds the matching establishment, and checks that its administrative status is active. It also compares the company name with the official data after normalizing accents, case, and separators, then compares the postal code and town (case and accents are normalized for the town).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Current check limitation:&amp;lt;/strong&amp;gt; the submitted street address is stored and may be used to create the third party, but the code does not compare it with the address returned by the API. Consistency checks cover the name, postal code, and town, not the street. A missing, closed, or invalid SIRET, or a mismatch in these checked fields, blocks submission. Network, DNS, TLS, timeout, unreadable-response, and service rate-limit errors produce specific or generic errors and do not create a third party.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;10.2. Email address check&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The module checks the email format, then uses DNS to check that the domain has an MX record. If Verifalia is enabled, its API is also called: addresses classified as undeliverable or disposable are rejected; deliverable, risky, and unknown results are accepted by this check. A service failure or credentials/credit error blocks submission when the option is enabled.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Email confirmation is still required even when Verifalia is disabled or returns an accepted result. The random token sent to the customer is stored hashed in the database, expires according to the configured duration, and can be used once. Resending is subject to the configured minimum delay.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;11. Confirmation and invoice processing&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&amp;lt;li&amp;gt;After a valid submission, the request is stored in the tracking table as &amp;lt;strong&amp;gt;Pending confirmation&amp;lt;/strong&amp;gt;. A confirmation link is sent to the submitted address.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The customer opens the link before it expires. The token is consumed and the request changes to &amp;lt;strong&amp;gt;Ready&amp;lt;/strong&amp;gt;.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Processing reloads the invoice and confirms it originates from TakePOS and is paid/closed. An atomic lock prevents the same request from being processed concurrently.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The module searches for a third party by exact SIRET, then by SIREN (the first nine digits), preferring an exact SIRET match. If none exists, it creates a French customer third party and lets Dolibarr assign the customer code.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The TakePOS invoice is linked to this third party. Generation or sending through EInvoicing is refused while the invoice is still linked to the terminal’s default third party.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The module checks that EInvoicing is enabled, its prerequisites are met, and its configured protocol is CII or Factur-X. It marks only this invoice as ready for EInvoicing generation.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;EInvoicing generates a document for the selected protocol. For Factur-X, the Dolibarr source PDF is generated before requesting the hybrid Factur-X document. For CII, the protocol produces an XML file.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The provider configured in EInvoicing transmits the invoice to the approved platform. The module records the generation, transmission, and format steps.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The module queries the platform flow for its &amp;lt;strong&amp;gt;ReadableView&amp;lt;/strong&amp;gt; resource, which must be a readable PDF. It makes the configured number of attempts if the view is not ready yet.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The official readable PDF is saved in the invoice document directory and emailed to the customer as an attachment.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;After the email is sent successfully, the request changes to &amp;lt;strong&amp;gt;Completed&amp;lt;/strong&amp;gt;.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;With CII, the XML file is used for transmission and the customer receives the platform’s official readable PDF. With Factur-X, the hybrid document is generated and transmitted, while the customer attachment remains the readable PDF retrieved from the platform. This module does not email the standard Dolibarr PDF to the customer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;12. Request statuses&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:100%;border-collapse:collapse;border-color:#dee2e6;text-align:left;&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Status&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Meaning&amp;lt;/th&amp;gt;&amp;lt;th style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Next step&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Pending confirmation&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The request is stored, but its email address has not been confirmed.&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The customer must open the link before it expires.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Ready&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Email is confirmed and processing can start.&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Automatic processing or the Retry action.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Processing&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The request is reserved for processing.&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Wait for processing to finish and check detailed status.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Error&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;A step failed; its error code and step are retained.&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Fix the cause and retry if email was confirmed.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Completed&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Transmission and PDF email both succeeded.&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The public link reports that the request has already been processed.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;Canceled&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;The public link can no longer be used.&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;padding:8px;border:1px solid #dee2e6;&amp;quot;&amp;gt;No standard retry is offered.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The table also stores separate indicators for email confirmation, SIRET validation, third-party linking, EInvoicing generation, platform transmission, PDF email, protocol used, error step, and creation, modification, completion, or cancellation dates.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;13. Track and manage requests&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;13.1. Request list&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Open &amp;lt;strong&amp;gt;Billing/Payments &amp;amp;gt; TakePOS Digital Invoice&amp;lt;/strong&amp;gt;. The list shows the invoice, third party when known, SIRET, email address, status, last error code, and creation date. Columns can be sorted and results are paginated. Filters include invoice reference, third party, SIRET, email, and status. Invoice and third-party references open their Dolibarr records.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;13.2. Invoice tab&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;On a TakePOS invoice, open the &amp;lt;strong&amp;gt;TakePOS Digital Invoice&amp;lt;/strong&amp;gt; tab. It shows status, creation and modification dates, email confirmation, requester email, SIRET, protocol, generation/transmission/PDF email status, and, on failure, the step and error message. A download button is available when a readable PDF is present.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;13.3. Retry&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Retry is offered for a request whose email has been confirmed and whose status is Ready or Error. Processing resumes and uses the recorded indicators and platform flow. If transmission already succeeded, retry does not send a second invoice; it attempts to retrieve the PDF and complete delivery to the customer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;13.4. Cancel&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Cancel asks for confirmation, invalidates the public link, and marks the request canceled unless it is already completed or canceled. The TakePOS invoice cancellation trigger also cancels a non-completed request. The request remains available for tracking until it is purged.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;14. EInvoicing configuration and sending conditions&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;TakePOS Digital Invoice does not replace EInvoicing or configure the approved platform. Configure the EInvoicing module separately: select the platform, credentials, and protocol. This version’s workflow accepts only the &amp;lt;code&amp;gt;CII&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;FACTURX&amp;lt;/code&amp;gt; protocol values.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;An anonymous TakePOS customer cannot receive an electronic invoice while the invoice remains linked to the terminal’s generic third party. The module checks this explicitly, including in the hook that intercepts direct EInvoicing generate or send actions on a TakePOS invoice. Identifying the customer makes only that invoice eligible; it does not change the global TakePOS invoice eligibility setting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If the EInvoicing protocol is changed after transmission, the module blocks using a different format for that request and asks for the format associated with the already-submitted flow to be restored. This avoids an inconsistent or duplicate transmission.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;15. Stored data, files, and privacy&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Invoice extrafield:&amp;lt;/strong&amp;gt; &amp;lt;code&amp;gt;hash&amp;lt;/code&amp;gt;, a random 64-character public identifier. Do not publish it separately or edit it manually.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Request table:&amp;lt;/strong&amp;gt; entity, invoice, optional third party, SIRET, company name, address, postal code, town, email, hashed IP fingerprint, hashed token and expiry, counters, statuses, errors, and timestamps.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Documents:&amp;lt;/strong&amp;gt; the EInvoicing electronic file and the platform’s readable PDF are stored with the invoice documents.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Public summary:&amp;lt;/strong&amp;gt; limited sale-identification details; invoice lines, payments, and third-party identity are not exposed before identification.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Logs:&amp;lt;/strong&amp;gt; the dedicated log is &amp;lt;code&amp;gt;DOL_DATA_ROOT/takeposdigitalinvoice/module.log&amp;lt;/code&amp;gt;. Technical error details may also be present in Dolibarr logs. Review and redact logs before sharing them.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The retention task is scheduled daily. It deletes completed requests according to completion date and error requests according to modification date. This cleanup method does not delete pending, ready, processing, or canceled requests. The task that purges requests does not delete invoice documents.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;16. Triggers, hooks, and substitutions&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;BILL_VALIDATE&amp;lt;/code&amp;gt;:&amp;lt;/strong&amp;gt; for a validated TakePOS invoice, the trigger ensures the public hash exists and creates it if missing.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;code&amp;gt;BILL_CANCEL&amp;lt;/code&amp;gt;:&amp;lt;/strong&amp;gt; for a canceled TakePOS invoice, the trigger cancels its non-completed request.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Browser receipt:&amp;lt;/strong&amp;gt; the hook loads invoice extrafields before TakePOS substitutions are processed.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;ESC/POS templates:&amp;lt;/strong&amp;gt; the hook adds the QR tag description to template help and substitutes the tag in the text sent to the printer.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;EInvoicing actions:&amp;lt;/strong&amp;gt; a hook blocks direct generation or sending for a TakePOS invoice that remains linked to the default third party.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Substitutions:&amp;lt;/strong&amp;gt; the module provides &amp;lt;code&amp;gt;__DOL_FAC_NUM__&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;__DOL_FAC_NUM_URL__&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dol_fac_num&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;__dol_fac_num__&amp;lt;/code&amp;gt; for a TakePOS invoice with a valid hash.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Scheduled task:&amp;lt;/strong&amp;gt; periodically purges completed or error requests after their configured retention periods.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;17. Troubleshooting&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The QR code is missing from the browser receipt&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;Check that the module is enabled, the invoice comes from TakePOS, the template contains &amp;lt;code&amp;gt;__DOL_FAC_NUM__&amp;lt;/code&amp;gt;, and the invoice was validated after activation. Check that the tag is not repeated. Browser substitution requires the hash to be loaded in the invoice extrafields.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The QR code is missing from the ESC/POS printout&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;Check the active RAW/Text template, the exact recognized tag, and that the template does not already send an equivalent tag. If the hash could not be stored, check Dolibarr logs and database/write permissions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The public link is rejected&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;The hash must be valid; the invoice must originate from TakePOS, be closed/paid, and remain linked to the terminal’s generic third party. The link expires based on the validation date and configured duration. A completed request is reported as already processed; a canceled request cannot be used.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;SIRET verification fails&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;Check the 14 digits, establishment status, company name, postal code, and town. A mismatch in these values or an unavailable API blocks the request. Current code does not compare the submitted street with the API address.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;No confirmation email arrives&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;Check the address, domain and MX record, Dolibarr outbound email setup, and spam folder. If Verifalia is enabled, check the credentials, configured timeout, and service authentication or credit errors.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Confirmation succeeded but processing failed&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;Check the latest error and failed step in the list or invoice tab. Verify the third-party link, EInvoicing activation and setup, CII/Factur-X protocol, and access to Dolibarr documents. Then use Retry if the user has process permission.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Transmission succeeded but the PDF is not ready&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;The platform may create its readable view asynchronously. Retry later; the module checks the existing flow and does not transmit the invoice again.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;The download button is unavailable&amp;lt;/h3&amp;gt;&amp;lt;p&amp;gt;The button is enabled when the saved readable PDF is available, or when the invoice tab can use an accessible EInvoicing PDF as a fallback.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;18. Limitations and operational precautions&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;The current public workflow is for French companies with an active SIRET; it does not support individuals or foreign companies.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Establishment consistency checks cover company name, postal code, and town; current code does not compare the street address with official data.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;The module retains one request per invoice. Do not create concurrent requests for the same invoice.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Do not manually remove or edit the hash, tokens, or processing indicators in the database.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Do not change the EInvoicing protocol during a request that has already been transmitted without restoring the format of its existing flow.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Do not edit the invoice’s third party while it is being processed.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;Cleanup removes completed and error request history after the configured retention periods; retain any needed tracking information before then.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;19. Support&amp;lt;/h2&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For help or to report a problem, contact [mailto:contact@01consulting.eu contact@01consulting.eu]. Include the module and Dolibarr versions, receipt type, workflow step, request status, error code, and approximate time. Redact SIRET, email addresses, tokens, platform credentials, invoice details, and any other confidential information from screenshots and log extracts.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[fr:TakePOS_Digital_Invoice_FR]]&lt;/div&gt;</summary>
		<author><name>Abahfir</name></author>
	</entry>
</feed>