Liaison entre deux sites ioi pour la comptabilité externe

Mise à jour le 18 septembre 2026·

Cette doc explique comment relier deux sites ioi entre eux afin que les clients, fournisseurs, factures et notes de crédit d’un site se transfèrent automatiquement (ou à la demande) vers l’autre site, plutôt que d’être comptabilisés en interne.

Principe général : c’est une configuration croisée, et elle doit TOUJOURS être faite des deux côtés, même si les documents ne circulent que dans un seul sens.

Ce n’est pas qu’une question d’organisation : c’est une obligation technique. Quand le site A envoie un document au site B, il lui transmet son propre identifiant de connexion. Plus tard, quand B doit rappeler A (pour mettre à jour le statut comptable du document d’origine, l’annuler, etc.), il le fait en cherchant sur B même un enregistrement ioi Accounting API Connection qui porte cet identifiant exact. Si cet enregistrement n’existe pas sur B, ce rappel échoue, même si l’envoi initial A → B a parfaitement fonctionné.

Exemple concret : je transfère une facture depuis le site A (ERP) vers le site B (comptabilité LU). Le site A envoie la facture, puis demande à ce que son état change une fois comptabilisée. Si le changement d’état réussit sur le site B, alors le site B recontacte le site A pour lui dire de faire évoluer l’état de la facture ERP d’origine. Le site B doit donc connaître le site A et pouvoir s’y connecter, exactement comme A doit connaître B pour l’envoi initial. D’où la règle : toujours faire la config croisée des deux côtés, en spécifiant bien le nom sous lequel on est référencé dans l’autre site.

En pratique, un des deux sites est “maître” (il émet ses clients/fournisseurs/factures) et l’autre est “récepteur” (il les reçoit) : le flux de documents est à sens unique. Un flux réellement bidirectionnel (chaque site émettant aussi vers l’autre) est théoriquement possible avec ce mécanisme mais n’est normalement pas utilisé en pratique.

Concrètement, pour une liaison entre un site maître et un site récepteur :

  • Partie 1 (connexion API) : à créer sur les deux sites, sans exception, y compris sur le site récepteur qui n’émettra jamais rien lui-même (nécessaire pour les rappels de statut, voir l’exemple ci-dessus).
  • Parties 2 et 3 (journaux + “Transfer candidate”) : à faire uniquement sur le site maître, celui qui émet réellement les documents.

Partie 1 - Créer la connexion API (des deux côtés) #

1.1 Sur le site qui va RECEVOIR les documents : créer un utilisateur dédié #

C’est cet utilisateur que l’autre site utilisera pour s’authentifier lors de ses appels API.

  1. Créer un nouvel utilisateur (User) dédié à cet usage (ex: api-liaison-lu@votredomaine.com). Ne pas réutiliser un compte personnel.
  2. Sur la fiche de cet utilisateur, section API Access, générer une API Key et un API Secret. Noter les deux valeurs immédiatement (le secret ne sera plus jamais réaffiché en clair par la suite).
  3. S’assurer que l’utilisateur est actif (non désactivé).

1.2 Sur le site qui va ENVOYER les documents : créer l’enregistrement de connexion #

Aller dans ioi Accounting API Connection (nouveau document) et remplir :

Champ Contenu
Identification Identifiant unique choisi une fois pour toutes (non modifiable après création). Devient automatiquement le nom technique de l’enregistrement (mis en MAJUSCULES). C’est cette valeur que l’autre site devra reporter, telle quelle, dans son propre champ “Accounting API Connection ID for this site” (voir plus bas).
Site URL L’URL de base du site distant (ex: https://oviservice.ioi.online).
API Key La clé générée à l’étape 1.1 sur le site distant.
API Secret Le secret généré à l’étape 1.1 sur le site distant.
Accounting API Connection ID for this site La valeur du champ “Identification” tel qu’il a été saisi sur l’enregistrement de connexion créé sur le site distant (celui que ce site distant utilise pour vous rappeler). Doit correspondre exactement (la casse n’a pas d’importance, tout est mis en majuscules automatiquement) au nom d’un enregistrement ioi Accounting API Connection qui doit réellement exister sur le site distant, sinon les appels retour (mise à jour de statut, annulation) échoueront.
Accounting Access À cocher uniquement si vous voulez aussi pouvoir consulter les soldes/situations comptables du site distant depuis ce site. Pas nécessaire pour le simple transfert de documents.

Important, à faire dans cet ordre pour éviter les allers-retours :

  1. Sur le site A, créer l’enregistrement de connexion avec un “Identification” choisi (ex: OVI-BE). Laisser “Accounting API Connection ID for this site” de côté pour l’instant si vous ne connaissez pas encore l’identifiant du site B.
  2. Sur le site B, créer l’enregistrement de connexion avec son propre “Identification” (ex: OVI-LU), et renseigner “Accounting API Connection ID for this site” = OVI-BE (la valeur choisie à l’étape 1).
  3. Revenir sur l’enregistrement du site A et renseigner “Accounting API Connection ID for this site” = OVI-LU.

Chaque site a donc obligatoirement son propre enregistrement ioi Accounting API Connection (pointant vers l’autre, avec les identifiants d’un utilisateur dédié qui existe sur cet autre site) : cette partie 1 est à répéter des deux côtés dans tous les cas, même si un seul des deux sites envoie effectivement des documents vers l’autre (voir l’explication en tête de doc).


Partie 2 - Configurer les journaux concernés #

Cette étape se fait sur le site émetteur, sur chaque journal de vente (pour les clients/factures de vente) et/ou d’achat (pour les fournisseurs/factures d’achat) dont les documents doivent partir vers le site distant.

Ouvrir le journal (ioi Sales Journal ou ioi Purchases Journal) concerné.

2.1 Onglet “Sales Invoices” / “Purchases Invoices” (et “Sales Credit Notes” / “Purchases CN”) #

Section “Accounting Transfer” : le champ Accounting Journal (lien vers un journal comptable interne) doit rester vide. C’est ce champ qui détermine le mode de transfert :

  • rempli → transfert interne (une écriture comptable est créée directement dans ce site, le mécanisme décrit ici n’est pas utilisé) ;
  • vide → transfert externe (à condition que les champs de la partie 2.2 soient remplis).

2.2 Onglet “Files” #

Champ Contenu
Accounting Journal (External) Identifiant libre du journal qui doit recevoir le document, tel qu’il doit être compris côté site distant. À convenir avec la personne qui gère l’autre site.
Accounting API Connection (External) Sélectionner l’enregistrement ioi Accounting API Connection créé en Partie 1.2.

Ces deux champs existent séparément pour les factures et pour les notes de crédit : il faut les remplir pour chaque type de document que vous voulez transférer.

2.3 Onglet “Logs” #

Champ Rôle
Automatic À cocher pour que CE journal participe au transfert automatique (toutes les 10 minutes, voir Partie 4). Si décoché, aucun document de ce journal ne part automatiquement, même si le réglage global est actif.
Attempt Submit Si coché, le système tente aussi de faire valider (“submit”) l’écriture sur le site distant juste après sa création.
Number of inactive days at the beginning of the month Le transfert automatique ne se déclenche pas tant qu’on n’a pas dépassé ce jour du mois (ex: 5 = rien ne part avant le 6 du mois).
Minimum document age in days Délai de grâce après la date du document avant l’envoi automatique (ex: 5 jours = un document du jour ne partira pas avant 5 jours).

Ces deux derniers réglages ne s’appliquent qu’au déclenchement automatique : le transfert manuel via “Transfer Now” (Partie 4) les ignore.


Partie 3 - Marquer les clients/fournisseurs à transférer #

Sur chaque fiche ioi Customer / ioi Supplier concernée, section “Transfer (External)” :

  • Transfer candidate : à cocher pour que ce tiers soit synchronisé vers le(s) site(s) distant(s).
  • Last transferred on : renseigné automatiquement après le premier transfert réussi, lecture seule.

Cocher cette case seule ne suffit pas. Le job de transfert cherche, parmi tous les journaux de vente/achat, au moins un journal correctement configuré comme en Partie 2 (Accounting Journal externe + Accounting API Connection renseignés). Si aucun journal n’est configuré, le transfert échoue avec l’erreur “No accounting API connection found” (voir Partie 6), quel que soit l’état de la case “Transfer candidate”.

Option : ne transférer qu’à la création #

Dans ioi Accounting Settings (voir Partie 4), section paramètres généraux :

  • Do not update customers after creation on external site(s)
  • Do not update suppliers after creation on external site(s)

Par défaut (décoché), chaque modification ultérieure du tiers est re-transférée automatiquement (tant que “Transfer candidate” reste coché). Si coché, seule la création initiale est transférée : les modifications faites ensuite sur le tiers ne sont plus répercutées vers le site distant.


Partie 4 - Activer et tester le transfert global #

Aller dans ioi Accounting Settings → onglet “Transfer of Invoices & CNs”, section “Execution” :

Champ Rôle
Automatic (Every 10 Minutes) Interrupteur général. Doit être coché pour que la tâche planifiée (toutes les 10 minutes) s’exécute. Cette tâche gère à la fois la synchronisation des tiers (Partie 3) et le transfert des factures/notes de crédit des journaux marqués “Automatic” (Partie 2.3).
Inactive From / Inactive Until (Server Time) Optionnel : plage horaire (heure serveur) pendant laquelle le transfert automatique ne se déclenche pas. Laisser les deux champs vides ensemble si vous ne voulez pas de plage d’inactivité ; ne jamais remplir un seul des deux.
Transfer Now Force un passage immédiat, manuellement, sans attendre les 10 minutes. Pratique pour tester la configuration après l’avoir mise en place.
Latest Transfer Beginning / Latest Transfer End Horodatage du dernier passage du job. À consulter si vous avez un doute : si “End” ne se met plus à jour depuis longtemps alors que “Automatic” est coché, le job est probablement bloqué.
Latest Error Log (caped to 6500 characters) Dernier journal d’erreurs, un message par tiers/document en échec lors du dernier passage. Premier réflexe en cas de problème.

Les champs VAT Code For Proposed Financial Discount (Sales/Purchases) sur cette même page ne concernent que le mode d’escompte financier proposé (VAT réduite) ; ils n’ont pas d’impact sur le fonctionnement de la liaison elle-même.


Partie 5 - Ce qui est transféré, et comment #

  • Clients/Fournisseurs : identité, coordonnées, TVA, coordonnées bancaires, conditions de paiement/livraison, comptes comptables par défaut, etc. La liste complète des champs transférés est fixe (non paramétrable).
  • Factures et notes de crédit : uniquement les documents en statut “en attente” (standby) ; pour les ventes, le document doit en plus être approuvé (ou ne pas nécessiter d’approbation). Les lignes de synthèse (compte général, code TVA, montants, analytiques) sont envoyées telles quelles, ainsi que les pièces jointes du document.
  • Une fois transféré avec succès, le document source passe en statut “Temporaire” côté site émetteur et garde une référence vers l’écriture créée côté site distant (visible sur le document).
  • Si “Attempt Submit” est coché sur le journal, le système essaie en plus de faire valider l’écriture sur le site distant dans la foulée ; en cas d’échec de cette validation, le document reste en erreur même si la création a réussi.

Partie 6 - Dépannage : erreurs fréquentes #

Message / symptôme Cause probable Solution
“No accounting API connection found” Aucun journal de vente (pour un client) ou d’achat (pour un fournisseur) n’a les deux champs “Accounting Journal (External)” et “Accounting API Connection (External)” renseignés (Partie 2.2). Compléter la configuration d’au moins un journal.
“Accounting API connection {id} not found” Le champ “Accounting API Connection (External)” d’un journal pointe vers un enregistrement supprimé ou inexistant. Vérifier/recréer l’enregistrement ioi Accounting API Connection.
Rien ne se passe malgré “Transfer candidate” coché et les journaux configurés Le réglage global “Automatic (Every 10 Minutes)” (Partie 4) n’est pas coché, ou l’heure actuelle tombe dans la plage “Inactive From/Until”. Cocher “Automatic”, vérifier la plage horaire, ou utiliser “Transfer Now” pour tester immédiatement.
Erreur d’authentification (401/403) lors de l’appel Clé/secret API invalides, expirés, ou utilisateur dédié désactivé sur le site distant. Régénérer une clé/secret côté site distant (Partie 1.1) et les remettre à jour dans la connexion.
Facture/note de crédit jamais transférée automatiquement, mais transfert manuel possible “Number of inactive days at the beginning of the month” ou “Minimum document age in days” (Partie 2.3) pas encore écoulés, ou case “Automatic” du journal décochée. Vérifier ces deux réglages et la case “Automatic” du journal concerné.
Le nombre de clients/fournisseurs ne correspond pas entre les deux sites après un moment Synchronisation encore incomplète (nouveaux tiers pas encore cochés “Transfer candidate”, ou premier passage du job pas encore effectué) ou configuration seulement à moitié faite (un seul sens configuré). Vérifier “Latest Transfer End” et “Latest Error Log” (Partie 4) pour confirmer que le job tourne bien, et que la config est faite dans les deux sens si nécessaire.

Résumé des points de vigilance #

Sujet À vérifier
Connexion API Créée sur les deux sites, toujours, chacun avec la clé/secret d’un utilisateur dédié actif de l’autre site
Identifiants croisés “Accounting API Connection ID for this site” sur A = “Identification” de l’enregistrement sur B, et inversement (sinon les appels retour de statut échouent)
Journaux + “Transfer candidate” À configurer uniquement sur le site maître (celui qui émet) ; le site récepteur n’a besoin que de la Partie 1
Journal (interne vs externe) “Accounting Journal” (interne) vide + “Accounting Journal (External)” et “Accounting API Connection (External)” remplis
Journal - activation Case “Automatic” cochée sur le journal (onglet Logs), en plus du réglage global
Tiers Case “Transfer candidate” cochée sur chaque client/fournisseur concerné
Réglage global “Automatic (Every 10 Minutes)” coché dans ioi Accounting Settings, champs “Inactive From/Until” vides ensemble (jamais un seul)
Test Bouton “Transfer Now” pour un passage immédiat, puis lecture de “Latest Error Log”

Pages liées

Cette page vous a-t-elle aidé ?