Imprimer les tickets de caisse avec TakePOS

Les trois façons d'imprimer un ticket avec TakePOS dans Dolibarr 24, testées avec une imprimante ESC/POS simulée : réglages, modèle de ticket et balises, impression automatique, tiroir-caisse, et les pannes qui laissent le ticket vide ou coupé.

Versions concernées
Dolibarr 24.0.2 (testé : image Docker officielle 24.0.1 dont le code a été remplacé par celui de la 24.0.2, absente de Docker Hub au 14/10/2026 ; MariaDB 11.4, PHP 8.2)
Ce qui a été vérifié
Tests du 14/10/2026 sur une instance neuve de Dolibarr 24.0.2 (pays France), actions faites dans l'interface : ventes TakePOS avec remise ligne et deux taux de TVA, ticket imprimé par le navigateur et réimprimé, options de l'onglet Imprimantes / Reçu, variables d'en-tête et de bas de page, module Imprimantes Tickets avec une imprimante réseau simulée (serveur TCP sur le port 9100 qui enregistre les octets ESC/POS reçus), pages de test, modèles de ticket, impression automatique, bouton et commande d'ouverture du tiroir, imprimante injoignable, mode Bar Restaurant, requêtes envoyées vers TakePOS Connector interceptées dans le navigateur (logiciel lui-même non testé). Lecture du code de Dolibarr 24.0.2 (takepos/index.php, invoice.php, receipt.php, ajax/ajax.php, admin/receipt.php, admin/terminal.php, takepos/class/dolreceiptprinter.class.php, admin/receiptprinter.php) et comparaison avec les versions 21.0.4, 22.0.5 et 23.0.4.

TakePOS, la caisse de Dolibarr, sait imprimer un ticket de trois façons. Laquelle est utilisée ne dépend pas seulement de ce que vous réglez à l’écran : dans Dolibarr 24, choisir une imprimante de tickets pour la caisse ne suffit pas à ce qu’elle serve. C’est l’explication de beaucoup de « mon imprimante ne sort rien ».

Ce guide a été écrit le 14 octobre 2026 sur Dolibarr 24.0.2, en faisant de vraies ventes dans TakePOS. L’imprimante était simulée : un petit programme qui reçoit ce que Dolibarr envoie sur le port 9100, comme une imprimante réseau, et l’enregistre octet par octet. On voit donc exactement ce que Dolibarr transmet, mais pas le rendu sur le papier d’une marque d’imprimante précise.

Les trois façons d’imprimer

Qui envoie le ticket à l’imprimante Ce qu’il faut
Navigateur (par défaut) le navigateur du poste de caisse, par sa fenêtre d’impression une imprimante installée sur le poste
Imprimante de tickets (module Imprimantes Tickets) le serveur Dolibarr, en commandes ESC/POS une imprimante joignable depuis le serveur
TakePOS Connector le navigateur, vers un logiciel installé sur le poste un logiciel externe, plus deux réglages cachés

La différence qui compte : avec le module Imprimantes Tickets, c’est le serveur qui se connecte à l’imprimante. La description de cette méthode dans les traductions de Dolibarr le dit : le serveur ne peut pas être dans le Cloud, il doit pouvoir joindre les imprimantes de votre réseau. Si votre Dolibarr est hébergé en ligne et l’imprimante dans le magasin, cette méthode ne la verra pas (nous ne l’avons pas testé avec un vrai hébergement : c’est ce que dit Dolibarr, et ce que fait le code).

Méthode 1 : le navigateur

C’est le réglage d’une installation neuve. Après le Règlement, le bouton Imprimer ticket ouvre le ticket dans une fenêtre, et Dolibarr appelle la fonction d’impression du navigateur. Vous choisissez l’imprimante dans la fenêtre d’impression, comme pour n’importe quelle page web.

Les options sont dans Accueil › Configuration › Modules/Applications, carte PdV TakePOS, roue crantée, onglet Imprimantes / Reçu :

  • Grouper la TVA par taux sur les tickets / reçus : sans cette option, le ticket ne montre qu’une ligne « Total TVA ». Avec, une ligne par taux (dans notre test : TVA 5,5 % et TVA 20 %) ;
  • Mention complémentaire sur les factures - Entête et - Bas de page : texte libre en haut et en bas du ticket (voir les variables plus bas) ;
  • Nom du reçu : remplace « Réf. facture » devant le numéro ;
  • Imprimer le client sur les tickets|reçus : ajoute « Client: » suivi du nom (d’après le code, rien n’est ajouté pour le client générique de la caisse) ;
  • Imprimer le mode de paiement sur les tickets | reçus : ajoute le paiement, et pour les espèces la somme reçue et le Rendu ;
  • Afficher la colonne avec le prix hors taxes (sur le ticket de caisse) ;
  • Imprimer automatiquement les tickets / reçus : voir plus bas.

Le ticket affiche le nom de la société, la référence, le terminal, la date, la Date d’impression, puis les lignes. Une remise ligne n’apparaît pas en tant que telle : le prix imprimé est déjà remisé (un mug à 12,00 € avec 10 % de remise apparaît à 10,80 €).

Les variables d’en-tête et de bas de page

Une petite aide à côté de ces deux champs liste les Variables de substitution disponibles. Sur le ticket, toutes ne sont pas remplacées. Ce que nous avons vérifié :

Variable Sur le ticket
__MYCOMPANY_ADDRESS__, __MYCOMPANY_ZIP__, __MYCOMPANY_TOWN__ remplacées (adresse de la société)
__MYCOMPANY_PROFID2__ (SIRET en France), __MYCOMPANY_VATNUMBER__ remplacées
__USER_FIRSTNAME__, __USER_LOGIN__ remplacées par l’utilisateur connecté à la caisse
__THIRDPARTY_NAME__, __THIRDPARTY_FAX__, __REF__ imprimées telles quelles
__TOTAL_TTC__ remplacée par… rien

Les variables du client et de la vente ne marchent donc pas sur le ticket, bien qu’elles figurent dans la liste d’aide. Pour le nom du client, il y a l’option Imprimer le client sur les tickets|reçus. Pour une autre information du client (une catégorie tarifaire, un type de client), il n’y a pas de réglage : il faut un module qui fournit son propre ticket (Dolibarr prévoit pour cela un point d’accroche, TakeposReceipt, dans le fichier du ticket).

Réimpression : DUPLICATA

Dolibarr compte les impressions de chaque ticket payé. La deuxième fois que vous cliquez sur Imprimer ticket pour la même vente, le ticket porte *** DUPLICATA *** sous la date d’impression.

Méthode 2 : une imprimante de tickets ESC/POS

ESC/POS est le langage de la plupart des imprimantes thermiques de caisse. Ici, Dolibarr fabrique lui-même le ticket en commandes ESC/POS et l’envoie à l’imprimante, sans fenêtre d’impression.

1. Activer le module

Accueil › Configuration › Modules/Applications, carte Imprimantes Tickets, activer. Le module ajoute le choix de l’imprimante et du modèle de ticket dans la configuration de chaque terminal de TakePOS.

2. Déclarer l’imprimante

Roue crantée de la carte : page Configuration du module Imprimantes RAW/Texte, onglet Liste des imprimantes. Remplissez Nom, Type et Paramètres, puis Ajouter.

Type Paramètres (exemples de Dolibarr)
Imprimante réseau adresse IP et port : 192.168.1.50:9100
Imprimante locale /dev/usb/lp0 : un port USB du serveur
Imprimante Windows local LPT1, COM1 ou un partage smb://…
Imprimante Cups le nom de l’imprimante dans CUPS
Imprimante Test n’imprime rien

Nous n’avons testé que le type Imprimante réseau, avec le port 9100 (celui de l’exemple de Dolibarr, 10.x.x.x:9100).

Chaque imprimante a deux liens de test : TXT envoie quelques lignes (« Hello World! », « Most simple example ») puis une coupe du papier ; IMG ajoute une image et un code-barres. Le message Test envoyé à l’imprimante Caisse s’affiche… même quand l’envoi a échoué : lisez les messages en dessous (voir « Pannes fréquentes »).

3. Choisir l’imprimante et le modèle pour la caisse

Configuration de TakePOS, onglet Terminal PdV 1 (un onglet par terminal) :

  • Imprimante principale à utiliser (laisser vide pour utiliser le système d’impression du navigateur) : votre imprimante ;
  • Modèle de reçu principal à utiliser : le modèle de ticket (section suivante). Choisissez-en un, ne laissez pas cette ligne vide.

4. Le piège : en boutique, ce réglage ne suffit pas

Après ces trois étapes, nous avons fait une vente : Imprimer ticket a ouvert le ticket du navigateur, et l’imprimante n’a rien reçu.

La raison est dans le code de TakePOS : l’imprimante de tickets n’est utilisée pour le ticket que si le mode Bar Restaurant est activé, ou si une constante cachée vaut receiptprinter. Ce comportement est dans le code de la 23.0.4 et de la 24.0.2, pas dans celui de la 22.0.5. Il n’y a pas de case à cocher pour cette constante. Pour une boutique :

  1. Accueil › Configuration › Divers ;
  2. nom TAKEPOS_PRINT_METHOD, valeur receiptprinter, Ajouter (la constante existe déjà avec la valeur browser : elle est remplacée).

Rouvrez la caisse : Imprimer ticket envoie maintenant le ticket à l’imprimante, et la caisse affiche brièvement « Envoyé à l’imprimante Caisse ». (En 24.0.2 ce message s’affiche avec des codes HTML à la place des accents : Envoyé à l'imprimante Caisse.)

L’autre solution est d’activer le mode Bar Restaurant (onglet du même nom) : nous l’avons vérifié, le ticket part alors aussi sur l’imprimante. Mais ce mode est fait pour les bars et les restaurants (tables, commandes envoyées en cuisine) : pour une boutique, la constante est plus simple.

Avec la méthode receiptprinter, l’onglet Imprimantes / Reçu n’affiche plus l’en-tête, le bas de page, le nom du reçu ni l’impression du client ou du paiement : le contenu du ticket vient uniquement du modèle.

Le modèle de ticket

Les modèles se règlent dans la configuration du module Imprimantes Tickets, onglet Réglage des modèles. La page liste toutes les balises disponibles avec leur description. Un modèle est un texte où chaque ligne commence par une balise entre accolades.

N’utilisez pas les modèles fournis

À l’activation, le module crée un modèle nommé Exemple. En 24.0.2, il est mal enregistré : les retours à la ligne y sont écrits \r\n en toutes lettres, et ces caractères s’impriment sur le ticket (« Épicerie Test Dolix\r\n1 rue de Saint-Hippolyte\r\n67100Strasbourg\r\n »). Le code postal et la ville y sont aussi collés.

Si aucun modèle n’est choisi, c’est pire :

  • choisir la ligne vide dans Modèle de reçu principal à utiliser enregistre la valeur -1, et le ticket sort vide : Dolibarr n’envoie que la commande d’initialisation de l’imprimante ;
  • si le réglage n’a jamais été enregistré, Dolibarr utilise un modèle écrit dans son code. En 24.0.2, ce modèle s’arrête après l’adresse : il contient une balise qui n’existe pas ({dol_value_mysoc_vatnumber}), et l’impression plante sur une erreur PHP. Le reste du ticket (lignes, totaux, coupe) n’est jamais envoyé. Ce n’est pas corrigé dans la branche 24.0 de Dolibarr au 14/10/2026.

Créez donc votre propre modèle et choisissez-le sur chaque terminal.

Un modèle qui fonctionne

Voici le modèle de notre test. Collez-le dans le champ Template, donnez un Nom, puis Ajouter ; l’icône d’imprimante de la ligne envoie un ticket d’essai.

{dol_align_center}
{dol_bold}{dol_double_height}{dol_print_text}{dol_value_mysoc_name}
{dol_default_height_width}{dol_bold_disabled}
{dol_print_text}{dol_value_mysoc_address}
{dol_print_text}{dol_value_mysoc_zip} {dol_value_mysoc_town}
{dol_print_text}SIRET {dol_value_mysoc_idprof2} - TVA {dol_value_mysoc_tva_intra}
{dol_line_feed}
{dol_print_text}Ticket {dol_value_object_ref}
{dol_print_text}Imprimé le {dol_value_currentdate}
{dol_print_text}Vendeur : {dol_value_vendor_firstname}
{dol_line_feed}
{dol_align_left}
{dol_print_object_lines}
{dol_print_object_tax}
{dol_line_feed}
{dol_bold}
{dol_print_object_total}
{dol_bold_disabled}
{dol_print_payment}
{dol_line_feed}
{dol_align_center}
{dol_print_text}Merci de votre visite !
{dol_line_feed}
{dol_cut_paper_partial}
{dol_open_drawer}

Après une vente d’un café, d’un thé (TVA 5,5 %) et d’un mug remisé (TVA 20 %), l’imprimante a reçu le nom de la société en gras et double hauteur, l’adresse, le SIRET, la référence du ticket, les lignes, une ligne de TVA par taux, les totaux HT, TVA et TTC, le paiement en espèces et la monnaie rendue, puis la coupe du papier et l’ouverture du tiroir.

Les balises les plus utiles

Balise Effet
{dol_align_center}, {dol_align_left}, {dol_align_right} alignement des lignes suivantes
{dol_bold} / {dol_bold_disabled} gras / fin du gras
{dol_double_height}, {dol_double_width}, {dol_default_height_width} taille du texte
{dol_print_text} imprime le texte qui suit sur la ligne
{dol_value_mysoc_name}, …_address, …_zip, …_town, …_idprof2, …_tva_intra votre société
{dol_value_object_ref} référence de la facture
{dol_value_currentdate} date et heure d’impression
{dol_value_vendor_firstname} prénom de l’utilisateur de la caisse
{dol_print_object_lines} les lignes vendues
{dol_print_object_tax} une ligne par taux de TVA
{dol_print_object_total} Total HT, Total TVA, Total TTC
{dol_print_payment} paiements et monnaie rendue
{dol_line_feed} ligne vide
{dol_cut_paper_full} / {dol_cut_paper_partial} coupe du papier
{dol_open_drawer} impulsion d’ouverture du tiroir-caisse

{dol_value_date_time} (date et heure de facturation) imprime 00:00 comme heure : une facture TakePOS n’a pas d’heure. Pour l’heure, utilisez {dol_value_currentdate}.

Trois règles pour ne pas casser le ticket

  1. N’utilisez que les balises de la liste de la page Réglage des modèles. Une balise inconnue seule sur sa ligne imprime son nom en majuscules (DOL_VALUE_CUSTOMER_MOBILE) et affiche une erreur UnknowTag.
  2. Ne mettez jamais une balise inconnue juste après {dol_print_text}. Dans notre test, {dol_print_text}{dol_value_customer_mobile} a arrêté le ticket à cet endroit (erreur PHP Printer::text(): Argument #1 ($str) must be of type string, null given). C’est ce qui casse le modèle intégré.
  3. Une valeur vide ne pose pas de problème : {dol_print_text}{dol_value_mysoc_url} sans site web renseigné imprime une ligne vide.

Ce que le modèle ne règle pas

Nous l’avons constaté sur les tickets reçus, sans pouvoir le changer par le modèle :

  • les lignes d’articles font 51 à 54 caractères alors que Dolibarr compte 48 caractères par ligne : sur une imprimante de 48 colonnes, elles passeront probablement à la ligne (non vérifié sur une vraie imprimante) ;
  • le prix unitaire imprimé est le prix hors taxes, avec jusqu’à cinq décimales (7,96209), alors que le total de la ligne est TTC ; la remise n’apparaît pas ;
  • les taux de TVA s’impriment 5.5000% ;
  • dans {dol_print_payment}, la monnaie rendue est intitulée Change, en anglais.

La largeur se règle par la constante RECEIPT_PRINTER_NB_CHARACT_BY_LINE (48 par défaut) dans Accueil › Configuration › Divers. À 32 (imprimantes de 58 mm), les totaux tiennent sur 32 caractères, les lignes d’articles font encore 35 caractères.

Le texte accentué passe : Dolibarr a converti « Épicerie » dans la table de caractères par défaut des imprimantes ESC/POS (code page 437).

Imprimer automatiquement après le paiement

Onglet Imprimantes / Reçu, option Imprimer automatiquement les tickets / reçus. Dès que la vente est entièrement payée, TakePOS fait comme si on avait cliqué sur Imprimer ticket :

  • méthode navigateur : la fenêtre du ticket s’ouvre et le navigateur lance sa fenêtre d’impression, qu’il faut encore valider (sauf réglage du navigateur lui-même, non testé ici) ;
  • imprimante de tickets : le ticket part directement à l’imprimante, sans aucun clic (vérifié).

Le tiroir-caisse

Dolibarr n’ouvre pas le tiroir lui-même : il envoie à l’imprimante la commande d’impulsion ESC/POS (ESC p), et c’est l’imprimante, reliée au tiroir, qui l’ouvre. Il faut donc la méthode imprimante de tickets (ou TakePOS Connector) : avec l’impression par le navigateur, aucune commande n’est envoyée à l’imprimante.

Deux façons, testées toutes les deux :

  • À chaque ticket : la balise {dol_open_drawer} dans le modèle. Le tiroir s’ouvre à chaque impression du ticket ; le modèle ne dépend pas du mode de paiement, donc aussi pour une vente payée par carte ou une réimpression (d’après le code).
  • Par un bouton dans la caisse : dans Accueil › Configuration › Divers, ajoutez la constante TAKEPOS_ADD_BUTTON_OPEN_DRAWER1 avec la valeur 1 (le chiffre final est le numéro du terminal : …DRAWER2 pour le terminal 2). Le bouton Ouvrir le tiroir-caisse apparaît dans la caisse ; il envoie à l’imprimante du terminal la seule commande d’ouverture, sans papier.

La commande envoyée est toujours la même : ESC p sur la sortie 0 (octets 1B 70 30 3C 78). Il n’y a pas de réglage pour choisir l’autre sortie tiroir.

Plusieurs postes, plusieurs imprimantes

Le choix de l’imprimante et du modèle se fait par terminal : un onglet Terminal PdV par caisse (leur nombre se règle dans l’onglet Paramètres, champ Nombre de terminaux). Chaque poste peut donc avoir son imprimante. Nous n’avons testé qu’un terminal. Les imprimantes de cuisine (envoi des commandes sans paiement) n’existent qu’en mode Bar Restaurant ; nous ne les avons pas testées.

TakePOS Connector

TakePOS Connector est un logiciel externe, installé sur le poste de caisse : c’est le navigateur de la caisse qui lui envoie le ticket, ce qui permet d’imprimer depuis un Dolibarr hébergé en ligne. Nous ne l’avons pas installé ; voici seulement ce que Dolibarr 24.0.2 attend, d’après son code et les requêtes que nous avons interceptées dans le navigateur. Le code de TakePOS qualifie cette méthode de « deprecated » (dépréciée).

Aucune case ne l’active. Deux constantes dans Accueil › Configuration › Divers : TAKEPOS_PRINT_METHOD = takeposconnector, et TAKEPOS_PRINT_SERVER = l’adresse du connecteur. Attention : enregistrer l’onglet Imprimantes / Reçu efface TAKEPOS_PRINT_SERVER (la page enregistre cette valeur alors qu’elle n’a pas de champ pour la saisir). Vérifiez-la après chaque passage sur cet onglet.

Selon la forme de TAKEPOS_PRINT_SERVER :

Valeur Imprimer ticket Ouvrir le tiroir-caisse
une URL (http://127.0.0.1:8111) POST vers …/printer/index.php, données invoice= + le ticket ESC/POS encodé en base64 (variante URL), fait avec le modèle du terminal POST vers …/printer/drawer.php, données opendrawer
une adresse IP (192.168.1.20) POST vers http://192.168.1.20:8111/print, données : le ticket HTML du navigateur POST vers la même adresse, données opendrawer

En mode URL, l’onglet Imprimantes / Reçu affiche en plus échelle de poids et Affichage client, qui appellent …/scale/index.php et …/display/index.php (lu dans le code, non testé).

Pannes fréquentes

Ce que vous voyez Cause vérifiée Que faire
Une imprimante est choisie sur le terminal, mais c’est la fenêtre d’impression du navigateur qui s’ouvre mode boutique : l’imprimante de tickets n’est pas utilisée constante TAKEPOS_PRINT_METHOD = receiptprinter
La caisse affiche « Envoyé à l’imprimante… » mais rien ne sort ce message s’affiche quoi qu’il arrive ouvrez une page de la configuration : l’erreur réelle s’y affiche (Cannot initialise NetworkPrintConnector: Connection refused)
Même message, et aucune erreur nulle part aucune imprimante choisie sur ce terminal onglet Terminal PdV, Imprimante principale à utiliser
Test : « Test envoyé… » suivi de initPrinter error: … Connection refused rien n’écoute à cette adresse (mauvais port, imprimante éteinte) vérifiez l’IP et le port 9100 depuis le serveur
Même erreur avec Connection timed out, après une minute d’attente l’adresse IP ne répond pas du tout adresse fausse, autre réseau, ou serveur hébergé hors du magasin
Le ticket sort vide Modèle de reçu principal à utiliser laissé sur la ligne vide choisissez un modèle
Le ticket s’arrête après l’adresse modèle intégré de Dolibarr, ou balise inconnue après {dol_print_text} votre propre modèle, balises de la liste seulement
\r\n imprimés sur le ticket modèle Exemple du module votre propre modèle
Un nom en majuscules (DOL_…) sur le ticket balise inconnue corrigez la balise
__THIRDPARTY_NAME__ imprimé tel quel (navigateur) variable non remplacée sur le ticket option Imprimer le client sur les tickets|reçus
*** DUPLICATA *** deuxième impression du même ticket (navigateur) normal

Deux points lus dans le code, non reproduits : l’impression ESC/POS demande l’extension PHP intl (Dolibarr 24.0.2 affiche alors « The receipt printer requires the PHP intl extension »), et le test IMG charge une image, ce qui demande l’extension PHP gd ou imagick.

En résumé

  • Par défaut, TakePOS imprime par le navigateur ; les options du ticket sont dans l’onglet Imprimantes / Reçu.
  • Pour une imprimante ESC/POS : module Imprimantes Tickets, imprimante réseau IP:9100, imprimante et modèle choisis sur le terminal, puis TAKEPOS_PRINT_METHOD = receiptprinter dans Divers si vous n’êtes pas en mode Bar Restaurant.
  • Écrivez votre propre modèle : en 24.0.2, l’Exemple imprime des \r\n, le modèle intégré s’interrompt, et un modèle vide donne un ticket blanc.
  • Tiroir : {dol_open_drawer} dans le modèle, ou TAKEPOS_ADD_BUTTON_OPEN_DRAWER1 = 1 pour un bouton.
  • « Envoyé à l’imprimante » ne prouve rien : l’erreur s’affiche à la page suivante.

Ensuite

Si vous vendez à des adhérents ou à des habitués qui paient d’avance, le module Porte-monnaie TakePOS ajoute un paiement par solde prépayé à l’écran de règlement de la caisse.

Avant de changer la configuration d’une caisse en service, faites une sauvegarde : Sauvegarder et restaurer Dolibarr.

Si votre ticket ne sort toujours pas, le diagnostic à 90 € consiste à regarder votre instance et votre caisse avec vous pendant une heure, puis à vous remettre par écrit ce qui bloque et ce que coûterait la correction.

DolibarrTakePOSticket de caisseimprimante ticketESC/POSimprimante réseautiroir-caissemodèle de ticketTakePOS Connectorpoint de vente