← Documentation / Guides
Comptabilisation des produits (IFRS 15 / ASC 606)
Produits constatés d'avance, échelles linéaires, par jalons et par pourcentage d'avancement, passifs au titre des remboursements, abonnements.
Diffèrement des produits par ligne et comptabilisation planifiée: passifs contractuels, méthodes fondées sur le temps, ventilation du prix de transaction, provisions pour remboursements, abonnements et modifications de contrats. Le comportement par défaut reste inchangé - une ligne de facture simple comptabilise l'intégralité du produit à l'émission (au moment de l'exécution), ce qui est conforme à la norme IFRS 15 / ASC 606 pour une obligation de prestation unique satisfaite lors de la livraison. Tout ce qui suit est optionnel et s'active ligne par ligne sur la facture.
Le logiciel dispose des fonctionnalités requises par les normes IFRS 15 et ASC 606, mais c'est l'entité émettrice qui est (ou n'est pas) en conformité. Le choix de la méthode appropriée par obligation, l'estimation des prix de vente unitaires et des taux de remboursement, ainsi que l'évaluation du caractère distinct des biens ou services restants en cas de modification relèvent du jugement comptable de l'entité déclarante.
Comptes
Trois comptes du plan comptable soutiennent ces flux, configurés sous forme de clés de règles de comptabilisation (modifiables par entreprise via ledger/posting-rules/update): revenue.deferredIncome → 4910 "Ateinančių laikotarpių pajamos" (passif contractuel), revenue.refundLiability → 4450 "Grąžinimo įsipareigojimai pirkėjams", revenue.contractAsset → 2910 "Sukauptos pajamos". Les entreprises existantes obtiennent ces comptes en réappliquant le modèle de plan comptable (ledger/accounts/apply-template).
Obligations de prestation sur les lignes de facture
Les lignes sales/invoices/create|update acceptent le paramètre recognition: { method, startDate, endDate, milestones } où method prend l'une des valeurs suivantes:
| Méthode | Comportement à l'émission | Comptabilisation |
|---|---|---|
point_in_time (par défaut) |
Crédit du produit en totalité | à l'émission, inchangé |
ratable (startDate..endDate) |
Crédit des produits constatés d'avance | plan mensuel pondéré par le nombre de jours sur la période de service |
milestone (milestones[], dont la somme des pourcentages atteint 100) |
Crédit des produits constatés d'avance | une tranche par jalon, comptabilisée lors de l'événement |
percent_complete |
Crédit des produits constatés d'avance | via des rapports d'avancement cumulés |
Les comptes clients et de TVA ne sont pas modifiés: l'émission enregistre un débit au compte 2410 pour le montant TTC, un crédit au compte 4492 pour la TVA, et ventile le montant HT entre le compte de produits (lignes comptabilisées à la date d'exécution) et le compte 4910 (lignes différées). Les échéanciers sont stockés dans la devise de base de l'entreprise au taux de change en vigueur à la date d'émission. L'endpoint sales/recognition-schedules/list (sales:read) affiche chaque tranche avec son statut pending | recognized | cancelled.
Ventilation du prix de transaction. En présence de plusieurs lignes, le champ standaloneSellingPrice renseigné sur chaque ligne répartit le montant net de la facture entre les obligations au prorata (IFRS 15 §76–80); le montant ainsi ventilé - et non le prix de ligne indiqué - détermine la répartition entre produits et produits constatés d'avance ainsi que les échéanciers. La TVA reste rattachée aux lignes de facture telles qu'elles ont été saisies.
Moteur de comptabilisation
La comptabilisation enregistre un débit au compte 4910 et un crédit au compte de produits (compte de service ou de produit et centre de coûts de la ligne d'origine) sous la forme d'une écriture unique par exécution, consignée dans sales/recognition/runs/list.
POST /v1/sales/recognition/compute(sales:read){ asOfDate? }- simulation préalable des tranches linéaires échues.POST /v1/sales/recognition/run(sales:write){ asOfDate?, postingDate?, scheduleIds? }- comptabilisation des tranches linéaires échues, ou précisément des tranches désignées parscheduleIds(quelle que soit la méthode).POST /v1/sales/recognition/progress(sales:write){ invoiceLineId, percentComplete, date? }- lignes au pourcentage d'avancement: déclaration de l'avancement cumulé; le delta nouvellement acquis est comptabilisé immédiatement, les régression sont rejetées.POST /v1/sales/recognition/summary(sales:read) - montant comptabilisé à ce jour, montant restant, nombre d'échéances en attente et prochaine date d'exigibilité par ligne, ainsi que les totaux de l'entreprise.
Trois événements déclenchent la comptabilisation sans nécessiter de scrutation (polling): le verrouillage de période (ledger/periods/lock), qui comptabilise d'abord l'ensemble des produits dus jusqu'à la fin de la période, enregistrés à la date de clôture de celle-ci; l'émission du procès-verbal de livraison (sales/acts/issue), qui comptabilise les tranches de jalons en attente de la facture associée à la date du procès-verbal; et un compte à rebours d'échéance, qui s'arme sur la prochaine date d'exigibilité linéaire et comptabilise pour chaque entreprise le moment venu (une période verrouillée reporte la comptabilisation à plus tard). Les jalons sont par nature déclenchés par des événements - la date prévisionnelle expectedDate d'un jalon relève de la planification et ne déclenche jamais de comptabilisation de manière autonome.
Contrepartie variable - passif au titre des remboursements
Le paramètre refundEstimatePercent sur une ligne crédite la part correspondante du montant net (ventilé) au compte 4450 au lieu des produits ou des produits constatés d'avance à l'émission - les remboursements attendus sont exclus du prix de transaction (IFRS 15 §55). L'état par facture est consultable via sales/refund-liability/list (montant estimé, consommé, règlements de remboursement constatés, montant restant).
Éléments réels: un avoir sur la facture débite le compte 4450 à concurrence du passif restant avant d'affecter les produits. L'appel sales/refund-liability/true-up (sales:write) { invoiceId, estimatedTotal, date? } révise l'estimation et comptabilise l'écart sur les produits dans un sens ou dans l'autre (avec pour plancher le montant consommé). Les remboursements de prestataires de services de paiement rattachés à la facture sont enregistrés sur le passif et génèrent un webhook refund_liability.actual - ils ne sont pas imputés directement au compte 4450, car la rectification des produits et de la TVA collectée requiert l'avoir comme pièce justificative de TVA.
Abonnements - des contrats aux factures
Associez à un contrat une période de facturation billingPeriod (monthly | quarterly | annual) et l'appel agreements/generate-invoice (agreements:write) génère le projet de facture de la prochaine période non facturée: les lignes proviennent des articles du contrat (ou de la valeur value sous forme d'une ligne par période), chacune assortie d'une comptabilisation linéaire sur la période de service. L'appel agreements/billing/run { asOfDate? } parcourt tous les contrats actifs, génère chaque période due et expire les contrats intégralement facturés au-delà de leur date de fin. Les dernières périodes courtes sont calculées au prorata des jours; le paramètre autoRenew prolonge la durée du contrat de sa propre longueur et poursuit la facturation. Les factures générées portent l'identifiant agreementId (filtrable dans sales/invoices/list).
Modifications de contrats
POST /v1/sales/recognition/modify (sales:write) { invoiceLineId, approach, date?, newEndDate?, newMilestones? }:
prospective- annulation de l'échéancier en attente et répartition du reliquat non comptabilisé sur les nouvelles conditions à compter de la date de modification (les biens ou services restants sont distincts: IFRS 15 §20(a), §21(a)). Les lignes linéaires prennent le paramètrenewEndDate; les lignes à jalons prennent le paramètrenewMilestones(pourcentages du montant restant).cumulative_catch_up(uniquement pour les lignes linéaires) - recalcul des produits comme si les nouvelles conditions s'appliquaient dès l'origine et comptabilisation immédiate de la différence, dans un sens ou dans l'autre (obligation unique partiellement satisfaite: §21(b)); le reliquat fait l'objet d'une nouvelle répartition.
Les diminutions de prix se traduisent par des avoirs: un avoir sur une facture comportant des échéanciers en attente débite d'abord les produits constatés d'avance et réduit le plan en attente en partant de son terme le plus éloigné, puis impute le passif au titre des remboursements, et seulement ensuite les produits. Les augmentations de prix donnent lieu à des factures supplémentaires dotées de leur propre comptabilisation - prospective par construction.
Limites
- Les échéanciers et les écritures de comptabilisation sont libellés en devise de base (EUR) pour des montants figés au taux de change de la date d'émission; les soldes de produits constatés d'avance ne font pas l'objet de réévaluation de change après l'émission.
- Le compte d'actif contractuel (2910) est fourni dans le plan comptable et en tant que clé de comptabilisation, mais aucun flux automatisé de produits non facturés n'y est encore rattaché - la comptabilisation en amont de la facturation s'effectue actuellement par une écriture manuelle.
- La ventilation requiert un prix de vente unitaire sur toutes les lignes de la facture ou sur aucune; la méthode résiduelle (§79(c)) n'est pas mise en œuvre.
- Les passifs au titre des remboursements sont suivis hors TVA au niveau de la facture; l'actif correspondant au droit de récupérer les produits retournés (§B25) n'est pas modélisé.
- La méthode de rattrapage cumulatif s'applique aux lignes linéaires; la replanification des jalons est strictement prospective; les lignes au pourcentage d'avancement sont ajustées par l'intermédiaire des rapports d'avancement et non via
modify. - Les composantes de financement significatives (§60–65), les contreparties non monétaires et les contreparties payables au client sont hors champ.
- Les exécutions automatiques d'échéances sont comptabilisées le jour de leur déclenchement; les écritures de rattrapage sur des périodes verrouillées sont rejetées - déverrouillez la période ou utilisez une date de comptabilisation ouverte.