26 déc. 2025·8 min de lecture

Schéma de grand livre de facturation qui réconcilie : factures et paiements

Apprenez à concevoir un schéma de grand livre de facturation avec factures, paiements, avoirs et ajustements séparés pour que la finance puisse réconcilier et auditer facilement les totaux.

Schéma de grand livre de facturation qui réconcilie : factures et paiements

Pourquoi les données de facturation cessent de se réconcilier

Pour la finance, « réconcilier » est une promesse simple : les totaux des rapports correspondent aux enregistrements sources, et chaque nombre est traçable. Si le mois affiche 12 430 $ encaissés, vous devriez pouvoir pointer vers les paiements exacts (et les éventuels remboursements), voir à quelles factures ils s'appliquent et expliquer chaque différence avec un enregistrement daté.

Les données de facturation cessent généralement de se réconcilier quand la base de données stocke des résultats plutôt que des faits. Des colonnes comme paid_amount, balance ou amount_due sont mises à jour au fil du temps par la logique applicative. Un bug, une reprise ou une « correction » manuelle peuvent modifier l'historique sans bruit. Des semaines plus tard, la table des factures indique qu'une facture est « payée », mais les lignes de paiement ne s'additionnent pas, ou un remboursement existe sans avoir correspondant.

Une autre cause fréquente est le mélange de types de documents différents. Une facture n'est pas un paiement. Un avoir n'est pas un remboursement. Un ajustement n'est pas la même chose qu'une remise. Quand tout cela est compressé dans une même ligne « transactions » avec plein de champs optionnels, les rapports deviennent de la spéculation et les audits deviennent des disputes.

Le décalage sous-jacent est simple : les applications se préoccupent souvent de l'état courant (« l'accès est-il actif ? »), tandis que la finance se préoccupe de la piste (« que s'est-il passé, quand et pourquoi ? »). Un schéma de grand livre de facturation doit supporter les deux, mais la traçabilité doit primer.

Concevez pour cet objectif :

  • Totaux clairs par client, par facture et par période comptable
  • Chaque changement enregistré comme une nouvelle ligne (et non écrasé)
  • Une chaîne complète de la facture aux paiements, avoirs, remboursements et ajustements
  • La capacité de recalculer les totaux à partir des écritures brutes et d'obtenir la même réponse

Exemple : si un client paie 100 $, puis reçoit un avoir de 20 $, vos rapports doivent afficher 100 $ encaissés, 20 $ crédités et 80 $ nets, sans modifier le montant original de la facture.

Séparer factures, paiements, avoirs et ajustements

Si vous voulez un schéma de grand livre qui réconcilie, traitez chaque type de document comme un type d'événement distinct. Les mélanger dans une seule table « transactions » semble propre, mais cela brouille le sens.

Une facture est une créance : « le client nous doit de l'argent ». Stockez-la comme un document avec un en-tête (client, numéro de facture, date d'émission, date d'échéance, devise, totaux) et des lignes séparées (ce qui a été vendu, quantité, prix unitaire, catégorie de taxe). Il est acceptable de stocker les totaux d'en-tête pour la vitesse, mais vous devez toujours pouvoir les expliquer à partir des lignes.

Un paiement est un mouvement d'argent : « de l'argent est passé du client vers nous ». Dans les flux carte, on voit souvent l'autorisation (banque approuve) et la capture (l'argent est effectivement prélevé). Beaucoup de systèmes conservent les autorisations comme enregistrements opérationnels et ne mettent dans le grand livre que les paiements capturés, pour ne pas gonfler le reporting de trésorerie.

Un avoir réduit ce que le client doit sans forcément renvoyer de l'argent. Un remboursement est de l'argent qui sort. Ils surviennent souvent ensemble, mais ce n'est pas la même chose.

  • Facture : augmente les créances et le chiffre d'affaires (ou les revenus différés)
  • Paiement : augmente la trésorerie et réduit les créances
  • Avoir : réduit les créances
  • Remboursement : réduit la trésorerie

Un ajustement est une correction effectuée par votre équipe quand la réalité ne correspond pas aux enregistrements. Les ajustements ont besoin de contexte pour que la finance puisse leur faire confiance. Stockez qui l'a créé, quand il a été posté, un code de raison et une courte note. Exemples : « radiation de 0,03 $ pour arrondi » ou « migration d'un solde historique ».

Une règle pratique : demandez-vous « cela existerait-il si personne n'avait fait d'erreur ? ». Les factures, paiements, avoirs et remboursements existent toujours. Les ajustements doivent être rares, clairement étiquetés et faciles à vérifier.

Choisir un modèle de grand livre que la finance peut auditer

Un schéma de grand livre réconciliable part d'une idée : les documents décrivent ce qui s'est passé, et les écritures du grand livre prouvent les totaux. Une facture, un paiement ou un avoir est un document. Le grand livre est l'ensemble des écritures qui s'additionnent, point final.

Documents vs écritures (conserver les deux)

Conservez les documents (en-tête et lignes de facture, reçu de paiement, avoir) parce que les gens ont besoin de les lire. Mais ne vous fiez pas seulement aux totaux des documents comme source de vérité pour la réconciliation.

Au lieu de cela, passez chaque document en écritures dans une table de grand livre sous forme d'une ou plusieurs écritures immuables. La finance pourra alors sommer les écritures par compte, client, devise et date de comptabilisation et obtenir la même réponse à chaque fois.

Un modèle simple et auditable suit quelques règles :

  • Écritures immuables : ne modifiez jamais des montants postés ; les changements sont de nouvelles écritures.
  • Événement de comptabilisation clair : chaque document crée un lot d'écritures avec une référence unique.
  • Logique équilibrée : les écritures se compensent correctement (souvent débit = crédit au niveau de l'entreprise).
  • Dates séparées : conservez la date du document (ce que voit le client) et la date de comptabilisation (ce qui affecte le reporting).
  • Références stables : stockez la référence externe (numéro de facture, ID du processeur de paiement) en parallèle des IDs internes.

Clés naturelles vs IDs substituts

Utilisez des IDs substituts pour les jointures et la performance, mais conservez aussi une clé naturelle stable qui survive aux migrations et réimportations. La finance demandera « Facture INV-10483 » bien après que les IDs internes aient changé. Traitez les numéros de facture et les IDs fournisseurs (comme un charge ID de processeur) comme des champs de première classe.

Reversals sans supprimer l'historique

Quand quelque chose doit être annulé, ne supprimez pas ni n'écrasez. Publiez une annulation : de nouvelles écritures qui reflètent les montants originaux avec des signes opposés, liées à la comptabilisation d'origine.

Exemple : un paiement de 100 $ appliqué à la mauvaise facture devient deux étapes : annuler l'écriture mal appliquée, puis poster une nouvelle application sur la bonne facture.

Plan de schéma étape par étape (tables et clés)

Un schéma de grand livre facturation se réconcilie plus facilement quand chaque type de document a sa propre table et que vous les connectez avec des enregistrements d'allocation explicites (au lieu de deviner les relations plus tard).

Commencez par un petit ensemble de tables cœur, chacune avec une clé primaire claire (UUID ou bigserial) et des clés étrangères requises :

  • customers : customer_id (PK), plus des identifiants stables comme external_ref (unique)
  • invoices : invoice_id (PK), customer_id (FK), invoice_number (unique), issue_date, due_date, currency
  • invoice_lines : invoice_line_id (PK), invoice_id (FK), line_type, description, qty, unit_price, tax_code, amount
  • payments : payment_id (PK), customer_id (FK), payment_date, method, currency, gross_amount
  • credits : credit_id (PK), customer_id (FK), credit_number (unique), credit_date, currency, amount

Ajoutez ensuite les tables qui rendent les totaux audités : les allocations. Un paiement ou un avoir peut couvrir plusieurs factures, et une facture peut être payée par plusieurs paiements.

Utilisez des tables de jointure avec leurs propres clés (et pas seulement des clés composites) :

  • payment_allocations : payment_allocation_id (PK), payment_id (FK), invoice_id (FK), allocated_amount, posted_at
  • credit_allocations : credit_allocation_id (PK), credit_id (FK), invoice_id (FK), allocated_amount, posted_at

Enfin, gardez les ajustements séparés pour que la finance voie ce qui a changé et pourquoi. Une table adjustments peut référencer l'enregistrement cible via invoice_id (nullable) et stocker le montant delta, sans réécrire l'historique.

Ajoutez des champs d'audit partout où vous postez de l'argent :

  • created_at, created_by
  • reason_code (write-off, rounding, goodwill, chargeback)
  • source_system (manual, import, Stripe, support tool)

Avoirs, remboursements et radiations sans totaux cassés

Set up the right data model
Design invoices, payments, credits, and allocations as separate tables with clean keys.
Model Data

La plupart des problèmes de réconciliation commencent quand les avoirs et remboursements sont enregistrés comme des « paiements négatifs », ou quand les radiations sont mélangées dans les lignes de facture. Un schéma propre garde chaque type de document comme son propre enregistrement, et le seul endroit où ils interagissent est via des allocations explicites.

Un avoir doit montrer pourquoi vous avez réduit ce que le client doit. S'il s'applique à une facture, enregistrez un avoir unique et allouez-le à cette facture. S'il s'applique à plusieurs factures, allouez le même avoir à plusieurs factures. L'avoir reste un document unique avec plusieurs allocations.

Les remboursements sont des événements de sortie de trésorerie, pas des paiements négatifs. Un remboursement est de l'argent qui sort, traitez-le donc comme son propre enregistrement (souvent lié au paiement d'origine pour référence), puis allouez-le comme un paiement. Cela garde la piste d'audit claire quand l'extrait bancaire montre à la fois l'encaissement et le remboursement.

Les paiements partiels et les avoirs partiels fonctionnent de la même façon : conservez le total du paiement ou de l'avoir sur sa propre ligne, et utilisez des lignes d'allocation pour indiquer combien a été appliqué à chaque facture.

Règles de comptabilisation qui évitent la double comptabilisation

Ces règles éliminent la plupart des « différences mystérieuses » :

  • Ne stockez jamais un paiement négatif. Utilisez un enregistrement de remboursement.
  • Ne réduisez jamais le total d'une facture après publication. Utilisez un avoir ou un ajustement.
  • Postez les documents une fois (posted_at) et n'éditez pas les montants après publication.
  • La seule chose qui change le solde d'une facture est la somme des allocations postées.
  • Une radiation (write-off) est un ajustement avec un code raison, alloué à la facture comme un avoir.

Taxes, frais, devise et choix d'arrondi

La plupart des problèmes de réconciliation commencent par des totaux que vous ne pouvez pas reproduire. La règle la plus sûre est simple : conservez les lignes brutes qui ont créé la facture, et conservez aussi les totaux affichés au client.

Taxes et frais : conservez-les au niveau des lignes

Stockez les montants de taxe et de frais par ligne, pas seulement en synthèse au niveau de la facture. Différents produits peuvent avoir des taux différents, les frais peuvent être imposables ou non, et des exonérations s'appliquent parfois à une partie seulement de la facture. Si vous stockez uniquement un tax_total, vous finirez par rencontrer un cas inexplicable.

Conservez :

  • Les lignes brutes (produit vendu, qty, prix unitaire, remise)
  • Totaux calculés par ligne (line_subtotal, line_tax, line_total)
  • Totaux récapitulatifs de la facture (subtotal, tax_total, total)
  • Le taux de taxe et le type de taxe utilisés
  • Les frais en tant que lignes distinctes (par exemple « Frais de traitement de paiement »)

Cela permet à la finance de reconstruire les totaux et de confirmer que la taxe a été calculée de la même manière à chaque fois.

Multi-devise : stockez ce qui s'est passé et comment vous le reportez

Si vous supportez plusieurs devises, enregistrez à la fois la devise de transaction et les valeurs en devise de reporting. Un minimum pratique : currency_code sur chaque document monétaire, un fx_rate utilisé au moment de la comptabilisation, et des montants de reporting séparés (par exemple amount_reporting) si vos livres sont clôturés dans une seule devise.

Exemple : un client est facturé 100,00 EUR plus 20,00 EUR de TVA. Stockez ces lignes et totaux en EUR, plus le fx_rate utilisé lors de la comptabilisation de la facture, et les totaux convertis pour le reporting.

L'arrondi mérite son propre traitement. Choisissez une règle d'arrondi (par ligne ou par facture) et tenez-vous-y. Quand l'arrondi crée une différence, enregistrez-la explicitement comme ligne d'ajustement d'arrondi (ou petite écriture d'ajustement) au lieu de modifier les totaux en silence.

Statuts, dates de comptabilisation et ce qu'il ne faut pas stocker

Secure finance operations
Use built-in authentication modules so finance actions are controlled and auditable.
Add Auth

La réconciliation devient confuse quand un « statut » est utilisé comme raccourci pour la vérité comptable. Traitez le statut comme un label de workflow, et considérez les écritures postées comme la source de vérité.

Rendez les statuts stricts et ennuyeux. Chacun doit répondre : ce document peut-il affecter les totaux ?

  • Draft : interne seulement, non posté, ne doit pas figurer dans les rapports
  • Issued : finalisé et envoyé, prêt à être posté (ou déjà posté)
  • Void : annulé ; s'il a été posté, il doit être annulé
  • Paid : entièrement réglé par des paiements et avoirs postés
  • Refunded : l'argent est reparti via un remboursement posté

Les dates comptent plus que la plupart des équipes ne l'imaginent. La finance demandera « À quel mois ceci appartient-il ? » et votre réponse ne doit pas dépendre des logs de l'interface.

  • issued_at : quand la facture est devenue finale
  • posted_at : quand elle compte dans les rapports comptables
  • settled_at : quand les fonds ont été compensés ou que le paiement a été confirmé
  • voided_at / refunded_at : quand l'annulation est devenue effective

Ce qu'il ne faut pas stocker comme vérité : les nombres dérivés que vous ne pouvez pas reconstruire depuis le grand livre. Des champs comme balance_due, is_overdue et customer_lifetime_value sont acceptables comme vues en cache uniquement si vous pouvez toujours les recalculer à partir des factures, paiements, avoirs, allocations et ajustements.

Un petit exemple : une reprise de paiement touche votre passerelle deux fois. Sans idempotency_key, vous stockez deux paiements, marquez la facture « payée », puis la finance voit 100 $ en trop. Stockez une idempotency_key unique par tentative externe et rejetez les doublons au niveau de la base.

Rapports que la finance attend dès le départ

Create ledger APIs fast
Expose ledger endpoints your web and mobile apps can rely on without custom backend plumbing.
Generate APIs

Un schéma de grand livre prouve sa valeur quand la finance peut répondre aux questions de base rapidement et obtenir les mêmes totaux à chaque fois.

La plupart des équipes commencent par :

  • Aging des créances : montants ouverts par client et par tranche d'âge (0-30, 31-60, etc.)
  • Trésorerie reçue : argent encaissé par jour, semaine et mois, basé sur les dates de comptabilisation des paiements
  • Revenus vs trésorerie : factures postées vs paiements postés
  • Piste d'audit pour les exports : chemin de forage d'une ligne d'export GL jusqu'au document et aux lignes d'allocation exactes qui l'ont créée

L'aging est l'endroit où les allocations importent le plus. L'aging n'est pas « total facture moins paiements ». C'est « ce qui reste ouvert sur chaque facture à une date donnée ». Cela nécessite de stocker comment chaque paiement, avoir ou ajustement a été appliqué à des factures spécifiques, et quand ces allocations ont été postées.

La trésorerie reçue doit être pilotée par la table des paiements, pas par le statut des factures. Les clients peuvent payer en avance, en retard ou partiellement.

Revenus vs trésorerie est la raison pour laquelle factures et paiements doivent rester séparés. Exemple : vous émettez une facture de 1 000 $ le 30 mars, recevez 600 $ le 5 avril et émettez un avoir de 100 $ le 20 avril. Le revenu appartient à mars (comptabilisation de la facture), la trésorerie appartient à avril (comptabilisation du paiement), et l'avoir réduit les créances quand il est posté. Les allocations lient tout cela.

Scénario d'exemple : un client, quatre types de documents

Un client, un mois, quatre types de documents. Chaque document est stocké une fois, et l'argent circule via une table d'allocations (parfois appelée « applications »). Cela rend le solde final facile à recomposer et auditer.

Supposons le client C-1001 (Acme Co.).

Les enregistrements que vous créez

invoices

invoice_idcustomer_idinvoice_dateposted_atcurrencytotal
INV-10C-10012026-01-052026-01-05USD120.00

payments

payment_idcustomer_idreceived_atposted_atmethodamount
PAY-77C-10012026-01-102026-01-10card70.00

credits (avoir, crédit commercial, etc.)

credit_idcustomer_idcredit_dateposted_atreasonamount
CR-5C-10012026-01-122026-01-12service issue20.00

adjustments (correction a posteriori, pas une nouvelle vente)

adjustment_idcustomer_idadjustment_dateposted_atnoteamount
ADJ-3C-10012026-01-152026-01-15underbilled fee5.00

allocations (c'est ce qui réconcilie réellement le solde)

allocation_iddoc_type_fromdoc_id_fromdoc_type_todoc_id_toposted_atamount
AL-900paymentPAY-77invoiceINV-102026-01-1070.00
AL-901creditCR-5invoiceINV-102026-01-1220.00

Comment le solde de la facture est calculé

Pour INV-10, un auditeur peut recomposer le solde ouvert à partir des lignes source :

open_balance = invoice.total + sum(adjustments) - sum(allocations)

Ainsi : 120.00 + 5.00 - (70.00 + 20.00) = 35.00 dû.

Pour tracer les 35,00 $ :

  • Partir du total de la facture (INV-10)
  • Ajouter les ajustements postés liés à la même facture (ADJ-3)
  • Soustraire chaque allocation postée appliquée à la facture (AL-900, AL-901)
  • Confirmer que chaque allocation pointe vers un document source réel (PAY-77, CR-5)
  • Vérifier les dates et posted_at pour expliquer la chronologie

Erreurs courantes qui cassent la réconciliation

Make finance-friendly reports
Create aging and cash views driven by posted entries, not fragile status fields.
Build Reports

La plupart des problèmes de réconciliation ne sont pas des « bugs de math ». Ce sont des règles manquantes, si bien qu'un même événement réel finit par être enregistré de plusieurs manières selon qui l'a touché.

Un piège courant est l'utilisation de lignes négatives comme raccourci. Une ligne de facture négative, un paiement négatif et une ligne de taxe négative peuvent signifier des choses différentes. Si vous autorisez des négatifs, définissez une politique stricte d'annulation (par exemple : n'utiliser qu'une ligne d'annulation référant l'original, et ne pas mélanger la sémantique d'annulation avec les remises).

Une autre cause fréquente est la modification de l'histoire. Si une facture a été émise, ne l'éditez pas ensuite pour refléter un nouveau prix ou une adresse corrigée. Gardez le document original et postez un ajustement ou un avoir qui explique le changement.

Patrons qui cassent généralement les totaux :

  • Utiliser des lignes négatives sans règle stricte d'annulation et sans référence à la ligne d'origine
  • Éditer d'anciennes factures après émission au lieu de poster des ajustements ou avoirs
  • Mélanger les IDs de transaction de la passerelle avec les IDs internes sans table de correspondance et source de vérité claire
  • Laisser le code applicatif calculer les totaux alors que les lignes support (taxe, frais, arrondi, allocations) manquent
  • Ne pas séparer le « mouvement d'argent » (cash movement) de « l'affectation d'argent » (quelle facture est payée)

Ce dernier point cause le plus de confusion. Exemple : un client paie 100 $, puis vous appliquez 60 $ à la facture A et 40 $ à la facture B. Le paiement est un seul mouvement de trésorerie, mais il crée deux allocations. Si vous ne stockez que « payment = invoice », vous ne pouvez pas gérer paiements partiels, trop-perçus ou réallocations.

Checklist et prochaines étapes

Avant d'ajouter des fonctionnalités, assurez-vous que les bases tiennent. Un schéma de grand livre de facturation se réconcilie quand chaque total se rattache à des lignes spécifiques, et chaque changement a une piste d'audit.

Vérifications rapides de réconciliation

Exécutez ces contrôles sur un petit échantillon (un client, un mois) puis sur l'ensemble des données :

  • Chaque nombre posté sur un rapport se trace jusqu'à des lignes source (ligne de facture, paiement, avoir, ajustement) avec une date de comptabilisation et une devise.
  • Les allocations ne dépassent jamais le document auquel elles s'appliquent (les allocations d'un paiement sont ≤ total du paiement ; idem pour les avoirs).
  • Rien n'est supprimé. Les écritures incorrectes sont annulées avec une raison, puis corrigées par une nouvelle ligne postée.
  • Le solde ouvert est dérivé, pas stocké (solde ouvert d'une facture = total facture moins allocations et avoirs postés).
  • Les totaux des documents correspondent à leurs lignes (total en-tête = somme des lignes, taxes et frais après règle d'arrondi).

Étapes suivantes pour livrer quelque chose d'utilisable

Une fois le schéma solide, construisez le workflow opérationnel autour :

  • Écrans d'admin pour créer, poster et annuler factures, paiements, avoirs et ajustements avec notes obligatoires
  • Une vue de réconciliation montrant documents et allocations côte à côte, incluant qui a posté quoi et quand
  • Exports que la finance attend (par date de comptabilisation, par client, par mappage GL si vous en avez un)
  • Un workflow de clôture de période : verrouiller les dates de comptabilisation pour les mois clos, et exiger des écritures d'annulation pour les corrections tardives
  • Scénarios de test (remboursements, paiements partiels, radiations) qui doivent correspondre aux totaux attendus

Si vous voulez un chemin plus rapide vers un portail financier interne fonctionnel, AppMaster (appmaster.io) peut vous aider à modéliser le schéma PostgreSQL, générer des API et construire les écrans d'administration à partir de la même source, afin que les règles de comptabilisation et d'allocation restent cohérentes à mesure que l'application évolue.

FAQ

Que signifie réellement « réconcilier » les données de facturation ?

La réconciliation signifie que chaque total affiché peut être reconstruit à partir des enregistrements source et tracé jusqu'à des écritures datées. Si votre rapport indique que vous avez encaissé 12 430 $, vous devez pouvoir montrer les paiements et remboursements postés qui totalisent ce montant, sans compter sur des champs écrasés.

Pourquoi les totaux de facturation cessent-ils de correspondre au fil du temps ?

La cause la plus courante est le stockage de « résultats » changeants comme paid_amount ou balance_due comme s'il s'agissait de faits. Si ces champs sont modifiés par des reprises, des bugs ou des éditions manuelles, vous perdez la trace historique et les totaux ne correspondent plus à la réalité.

Pourquoi ne devrais-je pas mettre factures, paiements, crédits et remboursements dans une seule table “transactions” ?

Parce que chaque type d'événement réel a une signification comptable différente. Quand ils sont compressés dans une même ligne « transaction » avec des champs optionnels, les rapports deviennent de la conjecture et les audits deviennent des débats sur l'intention d'une ligne.

Quelle est la différence entre un avoir et un remboursement ?

Un avoir (credit memo) réduit ce que le client vous doit, sans forcément faire sortir de l'argent. Un remboursement (refund) est de l'argent qui sort. Traiter les deux comme la même chose (ou comme des paiements négatifs) complique fortement le rapprochement bancaire et le reporting de trésorerie.

Comment corriger une erreur de facturation sans réécrire l'historique ?

Publiez une annulation (reversal) au lieu d'éditer ou de supprimer. Créez de nouvelles écritures qui reflètent les montants originaux avec des signes opposés, liez-les à l'écriture d'origine, puis publiez l'allocation corrigée : ainsi, l'historique montre exactement ce qui a changé et pourquoi.

Comment gérer les paiements partiels ou un paiement couvrant plusieurs factures ?

Utilisez des enregistrements d'allocation explicites (applications) qui relient un paiement ou un crédit à une ou plusieurs factures avec le montant et la date de comptabilisation. Le solde ouvert d'une facture doit être calculable à partir des totaux de facture plus les ajustements moins les allocations postées.

Quelles dates dois-je stocker pour garder la clôture de fin de mois cohérente ?

Conservez à la fois la date du document et la date de comptabilisation (posting date). La date du document est ce que voit le client ; la date de comptabilisation détermine quand l'élément apparaît dans les rapports et la clôture de période, afin que les totaux mensuels ne changent pas parce que quelqu'un a édité un enregistrement après coup.

Les taxes et frais doivent-ils être stockés par facture ou par ligne ?

Conservez les détails de taxes et de frais au niveau de la ligne, ainsi que les totaux exacts présentés au client. Si vous ne gardez qu'un tax_total au niveau de la facture, vous tomberez tôt ou tard sur un cas que vous ne pouvez pas expliquer ou reproduire, surtout avec des taux mixtes ou des exonérations.

Comment stocker les montants multi-devises et l'arrondi pour pouvoir reconstituer les totaux ?

Stockez les montants dans la devise de transaction et conservez aussi les montants en devise de reporting avec le taux FX utilisé lors de la comptabilisation. Choisissez une règle d'arrondi unique (par ligne ou par facture) et enregistrez explicitement toute différence d'arrondi afin de pouvoir recréer exactement les totaux.

Puis-je me fier au « statut » d'une facture (Paid/Void) pour le reporting ?

Utilisez le statut comme un simple label de workflow (Draft, Issued, Void, Paid), et considérez les écritures postées et les allocations comme la vérité comptable. Un statut peut être erroné ; des écritures immuables permettent à la finance de recalculer les totaux de la même façon à chaque fois.

Facile à démarrer
Créer quelque chose d'incroyable

Expérimentez avec AppMaster avec un plan gratuit.
Lorsque vous serez prêt, vous pourrez choisir l'abonnement approprié.

Démarrer