Files
erp/fleet/profile/decisions/adc-001-km-autoliquidation-259-1.md
arcodangeandClaude Fable 5 a482bb18c4 feat(fleet): fiscal profile + compliance calendar + ADC register (erp#54, T11 data)
fleet/profile/ goes from stub to the machine-readable business-rules surface
the fleet reads (PRD agent-catalog document surface + compliance ADC framework):

- fiscal.yaml — entity, VAT position, 8 rules (regime reel simplifie until
  2026-12-31 -> quarterly CA3 from 2027-01-01 per LF 2025 art. 38; KM export
  autoliquidation 259-1 CGI box E2; FR 20% deductible; intra-EU reverse
  charge; FX 766/666; SaaS expensed; CCA 455 lane). Every rule carries
  effective_from/effective_until AND decision: adc-NNN; every date cites its
  PRD anchor as an inline comment (verified against factory origin/main).
- calendar.yaml — 15 entries: acomptes TVA (2026-07 month-window, 2026-12-15),
  last CA12 FY-2026 (2027-05-04), CA3 quarterly windows, CFE (December),
  AG comptes annuels (2027-06-30), e-invoicing milestones (2026-09-01
  reception, 2027-09-01 emission/e-reporting), URSSAF echeancier with the
  in-file NOTE that a real direct debit exists since May 2026 (erp#57 revisit
  of the payroll-dormant assumption), KM deferred due dates + renewal stub.
- JSON Schemas for both + scripts/validate.py (stdlib-only: strict YAML-subset
  parser, JSON-Schema-subset checker, rule->ADC resolution, calendar checks).
- decisions/ — ADC register: template + adc-001..005 Accepted formalizations
  (autoliquidation KM, FX->766/666, SaaS expensed, reel simplifie until
  abolition, CCA personal-card lane) + adc-006/007 Proposed stubs (retainer
  currency -> erp#53; capital path -> erp#51). Agents draft, the operator
  Accepts — never the reverse; immutable once merged, supersede never edit.
- Mutation policy in-file: PRs only (T12 proposes, human merges).
- Same-change: profile README stub -> real doc; fleet/README.md layout line
  and AGENTS.md fleet row updated (profile no longer a stub).

Validation: PASS — 8 rules, 15 entries, 7 ADCs, 0 errors, 7 warnings (the
warnings list exactly what awaits operator verification). Human gate left
open on purpose: operator sanity-read of the calendar + Acceptance of
adc-001..005.

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh
2026-07-18 23:45:00 +02:00

76 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: adc-001
title: "KM client invoices under autoliquidation - art. 259-1° CGI (no French VAT, box E2)"
status: Accepted
decided: 2026-07-18
effective_from: 2026-01-01
effective_until: null
supersedes: null
superseded_by: null
---
# adc-001 — KM client invoices under autoliquidation — art. 259-1° CGI
> **Accepted as formalization** of practice in force "since the first invoice"
> (PRD [compliance ADC seed table](https://gitea.arcodange.lab/arcodange-org/factory/src/branch/main/vibe/PRD/ai-back-office/compliance.md#accounting-decision-records-adc)).
> The operator's sanity read is the erp#54 human gate; amendments before the PR
> merges are edits to a draft — immutability starts at merge on main.
## Context
KissMetrics (US) is the sole client: B2B services exported outside the EU. The
first client invoice forced the VAT position — charge French VAT, or treat the
supply as outside French VAT scope.
## Decision
B2B services supplied to a non-EU taxable customer are outside French VAT
scope (place of supply = where the customer is established). Therefore:
TVA collectée = 0 on every KM invoice; each invoice carries the autoliquidation
mention referencing art. 259-1° CGI; the basis reports in box E2 of the
CA3/CA12. Applied to 100 % of client revenue today.
## Base légale & doctrine
- CGI art. 259-1° — place of supply of B2B services is where the *preneur
assujetti* is established.
- CA3 box E2 mapping per the T10 mode opératoire (PRD task-inventory § T10
step 1: "box E2 export — today 100 % of client revenue is box E2
autoliquidation Art. 259-1°, collectée = 0").
- Invoice mention checked structurally by the `dolibarr-invoice-audit` skill
("TVA 259-1° CGI").
- Expert-comptable confirmation pending — on the PRD compliance.md § Questions
list (PAF documentation expectations for the export invoices).
## Alternatives rejected
- **Charging French VAT** — wrong place-of-supply analysis for extra-EU B2B
services; would create undue TVA collectée.
- **Franchise en base** — would renounce the right to deduct while the company
runs a structural VAT credit (all revenue exported, FR expenses carrying
20 % VAT).
## Consequences
- Structural TVA credit while KM is the sole client (collectée 0 vs déductible
on FR supplier invoices) — surfaced in `fiscal.yaml` `vat_position`.
- Downstream rule: `fiscal.yaml` `client-export-autoliquidation`.
- E-invoicing: these export invoices stay OUT of domestic e-invoicing scope
but ENTER e-reporting on 2027-09-01 (PRD compliance.md § Obligations, PAF
row; roadmap § Milestones) — the PAF stays load-bearing for them.
- Annexe: the VAT method is disclosed from this record at close (ADC rule 3).
## QA & validation
- `dolibarr-tva-reconciliation` classifies every KM invoice in bucket E2
(autoliquidation, collectée = 0) — in production.
- `dolibarr-invoice-audit` verifies the invoice mention per invoice.
- Expert-comptable review: pending (PRD compliance.md § Questions).
## References
- PRD compliance.md § ADC seed table (adc-001) + § Obligations (PAF row).
- PRD task-inventory.md § T05 step 2, § T10 step 1.
- `fiscal.yaml` rule `client-export-autoliquidation`.
- erp#54 (this register's seeding issue).