Face à un client vendant des produits numériques via Lemon Squeezy, la question posée par un cabinet d’expertise comptable n’était pas de savoir si un agent pouvait aider à la vérification des factures, mais jusqu’où il pouvait le faire sans jamais risquer de modifier une écriture comptable de sa propre initiative.
Le cabinet a choisi de construire un agent strictement cantonné à la comparaison entre les factures émises via Lemon Squeezy et les mouvements constatés sur les relevés bancaires du client, sans aucune capacité de correction directe. Tout écart détecté est signalé, jamais corrigé automatiquement.
Le problème de départ : un rapprochement chronophage
Le rapprochement bancaire entre les ventes déclarées par Lemon Squeezy et les versements réellement reçus prenait, pour ce client particulier, plusieurs heures par mois à un collaborateur du cabinet, notamment à cause du décalage entre la date de vente et la date de versement groupé sur le compte bancaire.
Le périmètre strictement défini de l’agent
L’agent dispose d’un accès en lecture aux données de facturation importées depuis Lemon Squeezy, stockées dans WordPress via un type de contenu personnalisé facture_ls, ainsi qu’aux relevés bancaires importés séparément. Sa seule capacité est de comparer les montants et de signaler les écarts, sans aucune possibilité d’ajuster une facture ou une écriture.

La déclaration de l’ability, volontairement restreinte
wp_register_ability(
'cabinet-comptable/comparer-factures-ls',
array(
'label' => 'Comparer factures Lemon Squeezy et relevés',
'category' => 'comptabilite',
'execute_callback' => 'comparer_factures_releves',
'permission_callback' => function () {
return current_user_can( 'agent_comptable_lecture' );
},
)
);
function comparer_factures_releves(): array {
$factures = get_posts( array( 'post_type' => 'facture_ls', 'posts_per_page' => 100 ) );
$ecarts = array();
foreach ( $factures as $facture ) {
$montant_facture = (float) get_post_meta( $facture->ID, 'montant', true );
$montant_releve = trouver_montant_releve_correspondant( $facture->ID );
if ( abs( $montant_facture - $montant_releve ) > 0.01 ) {
$ecarts[] = array( 'facture' => $facture->ID, 'ecart' => $montant_facture - $montant_releve );
}
}
return $ecarts;
}
Ce que les écarts détectés ont révélé
Sur une moyenne de quarante factures vérifiées par mois, l’agent a signalé environ un écart, le plus souvent lié à des frais de transaction prélevés par Lemon Squeezy et non systématiquement répercutés de façon identique d’un versement à l’autre selon le pays de l’acheteur.
- Aucun écart signalé n’a nécessité de correction sur une facture elle-même, uniquement sur son rapprochement comptable.
- Le collaborateur du cabinet a gagné un temps significatif sur la partie répétitive du rapprochement.
- Les écarts complexes, liés à des remboursements partiels, sont restés systématiquement traités manuellement.
Le cas d’un écart mal interprété évité de justesse
Lors d’un contrôle, un écart signalé par l’agent correspondait en réalité à un remboursement partiel effectué directement par le client en dehors de Lemon Squeezy, une situation que l’agent ne pouvait pas connaître faute d’accès à cette information. Le comptable en charge du dossier a immédiatement identifié la cause réelle, chose qu’une correction automatique aurait pu masquer si elle avait existé.
Un agent qui signale un écart rend service ; un agent qui corrigerait cet écart de sa propre initiative prendrait une décision comptable qui ne lui revient pas.
Notre verdict
Ce cas illustre bien la limite pertinente à poser pour un usage comptable : la comparaison automatisée fait gagner du temps de façon mesurable, tandis que la décision sur la nature exacte d’un écart reste une tâche qui demande un jugement professionnel que l’agent ne possède pas. Le cabinet n’envisage pas, à ce stade, d’élargir les capacités de l’agent au-delà de cette comparaison en lecture seule.