Suite de la réconciliation ouverte par la question de l'opérateur. Après ce
passage, l'ERP et la banque disent le même chiffre sur les deux comptes :
Qonto 2 013,30 EUR et Wise 11 863,85 EUR, écart 0,00.
CE QUI A DÉBLOQUÉ LE RESTE. L'opérateur a établi que KissMetrics n'a JAMAIS reçu
la moindre facture — le client payait le forfait de 2 500 USD sans pièce. Rien
ne s'opposait donc à corriger des factures qu'on croyait entre ses mains.
FAC004 et FAC006 portaient toutes deux 2 145,92 EUR, le même montant repris tel
quel d'un cycle à l'autre, alors que la banque a reçu 2 147,00 EUR le 29/05 et
2 195,97 EUR le 25/06 : 2 500 USD à chaque fois, au taux du jour du paiement.
51,13 EUR d'encaissement manquaient aux livres. Leurs notes qualifiaient déjà
l'écart d'« écart de change » — défendable tant qu'on ne pouvait pas toucher aux
factures ; plus vrai maintenant qu'on le peut. Une facture, un règlement, une
ligne bancaire, le même chiffre.
RÉPARATION DE FAC009. `PUT /invoices/{id}/lines/{lid}` n'est PAS un PATCH : tout
champ absent du corps est remis à zéro. La correction appliquée ce matin ne
passait que subprice, pu_ht, qty et desc — `product_type` est donc retombé de 1
(service) à 0 (produit), faisant de FAC009 la seule ligne du registre typée
« produit » dans une société qui ne vend que des prestations et facture hors UE
sous l'art. 259-1° du CGI. Rétabli.
C'est le juge pré-gate qui l'a vu, sur la répétition de FAC004 et FAC006 — où le
même appel avait en plus effacé `desc` ENTIÈREMENT. Premier finding de la
journée qui apporte quelque chose de réel, et il aurait envoyé au client deux
factures sans désignation. Les charges de ligne sont désormais complètes.
test/deleteInvoicePayment.ts. Corriger une facture encaissée suppose de refaire
son règlement, et l'API REST ne sait pas le supprimer : `PUT
/invoices/{id}/payments` ne met à jour que son NUMÉRO. Deux verrous dans
l'interface, consignés dans le fichier : tant que la facture est marquée payée
le lien de suppression est simplement ABSENT — pas d'erreur, rien — il faut
d'abord la rouvrir ; et la confirmation est une boîte MODALE jQuery dont les
boutons n'ont ni name ni value, si bien qu'un sélecteur sur input[type=submit]
ne trouve rien et que la suppression n'a pas lieu, silencieusement. Sans
--payment, le script retrouve le règlement sur la fiche : coder en dur un
identifiant relevé en bac à sable est une façon commode de supprimer le mauvais.
ABONNEMENT ANTHROPIC D'AOÛT. 90,00 EUR du 19/08, reçu 2330-6710-2536 arrivé dans
books@ le 24/08. Second abonnement à usage interne, distinct du budget IA client.
CASHBACKS WISE — compte 768. Wise parle de « remise », mais le montant suit le
SOLDE et non les frais : 0,19 EUR sur ~510 EUR en mars, 4,97 EUR sur ~9 700 EUR
en août, soit ~0,5-0,6 % l'an, stable. C'est la rémunération d'un solde, donc un
produit financier. Le seul frais Wise de l'exercice est le forfait de 50 EUR du
26/01, sans rapport. Ni 763, qui vise les revenus de créances commerciales, ni
764, réservé aux valeurs mobilières de placement : 768.
RISTOURNE QONTO — compte 627 au crédit. L'opération est typée `qonto_fee` par la
banque elle-même, côté crédit : une remise sur un service reçu vient en
diminution de la charge, elle ne crée pas un produit.
PIÈGE CATALOGUÉ. bank-match.sh continuera d'afficher ces sept écritures en
BANK-ONLY : il ne rapproche que les RÈGLEMENTS de factures et ignore les
paiements divers. Les voir listées ne veut donc PAS dire qu'elles manquent —
c'est écrit dans known-patterns.json, sans quoi le prochain agent les
ressaisirait.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
69 lines
4.7 KiB
JSON
69 lines
4.7 KiB
JSON
{
|
|
"_schema": "v1",
|
|
"_description": "Operator-curated catalogue of known recurring/intentional bank movements. Used by bank-match.sh to annotate the BANK-ONLY bucket so the operator can immediately tell 'needs Dolibarr entry' from 'documented intentional gap'. Edit this file as new recurring patterns emerge.",
|
|
"_match_rules": "Pattern matched case-insensitively as a regex against the bank label. Optional filters: bank (qonto|wise), side (credit|debit), amount_min, amount_max, type (Wise activity type). All present filters must match.",
|
|
"_classifications": {
|
|
"capital_deposit": "Apport en capital social. Dolibarr account 1013 (capital souscrit appelé versé).",
|
|
"social_charges": "URSSAF, retraite complémentaire, etc. Dolibarr compte 641, sous-compte dédié (la société prend en charge les cotisations personnelles de son gérant majoritaire : c'est un complément de rémunération). PAS 646, réservé à l'exploitant individuel et aux sociétés à l'IR. PAS 645x non plus, qui vise les cotisations sur salaires — Arcodange n'a aucun salarié et l'opérateur n'est pas employeur. Voir adc-009.",
|
|
"ai_subscription": "Claude / Mistral / OpenAI / similar. Dolibarr account 6262 (frais télécom / abonnements logiciels).",
|
|
"bank_fee": "Plan bancaire, frais d'opération, refunds. Dolibarr account 627 (services bancaires).",
|
|
"internal_topup": "Solde Wise/Qonto rechargé pour couvrir un frais immédiat. Often nets out.",
|
|
"personal_apport": "Apport en compte courant d'associé (Gabriel finançant Arcodange depuis son perso). Dolibarr account 4551.",
|
|
"needs_classification": "Pattern catched but no Dolibarr account assignment defined yet; surface for review.",
|
|
"balance_reward": "Rémunération d'un solde détenu chez un établissement de paiement. Wise l'appelle « cashback », mais le montant suit le SOLDE et non les frais (~0,5-0,6 % l'an sur l'exercice 2026) : c'est un produit financier, pas un rabais. Dolibarr compte 768 (autres produits financiers) — pas 763, qui vise les revenus de créances commerciales, ni 764, réservé aux valeurs mobilières de placement."
|
|
},
|
|
"patterns": [
|
|
{
|
|
"pattern": "FOUREZ.*Quentin",
|
|
"classification": "capital_deposit",
|
|
"bank": "qonto",
|
|
"side": "credit",
|
|
"note": "Apport en capital social initial 1000 €. Maître FOUREZ Quentin, notaire centralisateur du dépôt. Date typique : 2026-01-21. Dolibarr: account 1013."
|
|
},
|
|
{
|
|
"pattern": "URSSAF",
|
|
"classification": "social_charges",
|
|
"bank": "qonto",
|
|
"side": "debit",
|
|
"note": "Cotisations sociales personnelles du gérant, appelées par échéancier (0/493/1215/1333 en 2026). Dolibarr : compte 641, sous-compte dédié — voir adc-009. Montants PROVISOIRES, assis sur un forfait début d'activité, régularisables après déclaration des revenus."
|
|
},
|
|
{
|
|
"pattern": "MISTRAL\\.AI",
|
|
"classification": "ai_subscription",
|
|
"side": "debit",
|
|
"note": "Mistral AI API subscription (Le Chat Pro - Annual). Récurrent annuel (invoice MSTRL-API-814045-001, 2026-04-02, 143.90 HT / 172.68 TTC). Next expected ~2027-04. Dolibarr: account 6262 + supplier 'Mistral AI'."
|
|
},
|
|
{
|
|
"pattern": "CLAUDE\\.AI",
|
|
"classification": "ai_subscription",
|
|
"side": "debit",
|
|
"note": "Claude AI subscription (Anthropic). Récurrent mensuel. April was on Qonto card; May/June on personal card (fk_account=3, API-invisible). See #57. Dolibarr: account 6262 + supplier 'Anthropic'."
|
|
},
|
|
{
|
|
"pattern": "Wise.*Plan",
|
|
"classification": "bank_fee",
|
|
"side": "debit",
|
|
"note": "Wise account plan billed via card. Wise's internal fee for keeping the BUSINESS profile active."
|
|
},
|
|
{
|
|
"pattern": "qonto_fee",
|
|
"classification": "bank_fee",
|
|
"bank": "qonto",
|
|
"note": "Qonto fees ou refunds. Petites valeurs. Dolibarr: account 627."
|
|
},
|
|
{
|
|
"pattern": "BALANCE_DEPOSIT|For your account plan",
|
|
"classification": "internal_topup",
|
|
"bank": "wise",
|
|
"note": "Solde Wise rechargé pour couvrir un frais immédiat (souvent net zéro avec le FEATURE_CHARGE du même jour)."
|
|
},
|
|
{
|
|
"pattern": "Cashback",
|
|
"classification": "balance_reward",
|
|
"bank": "wise",
|
|
"side": "credit",
|
|
"note": "Cashback Wise sur solde, mensuel. ENREGISTRÉS EN PRODUCTION jusqu'à août 2026 inclus (0,19 / 0,35 / 0,71 / 1,60 / 3,31 / 4,97 €, soit 11,13 €) — compte 768, via test/recordVariousPayment.ts. ATTENTION : bank-match.sh les affichera quand même en BANK-ONLY, parce qu'il ne rapproche que les RÈGLEMENTS de factures et ignore les paiements divers. Les voir listés ne veut donc PAS dire qu'ils manquent : vérifier le solde du compte avant d'en ressaisir un, sous peine de doublon."
|
|
}
|
|
]
|
|
}
|