# @lssm-tech/lib.billing-france

France-specific BillingOS readiness contracts and deterministic e-invoicing/e-reporting checks.

## Source and release context

- Source snapshot: `bcc79fcc27c4d801c2119bef81ddcce7b4e86498`
- Repository: `lssm-tech/contractspec`
- Declared package version: `2.0.4`
- Package path: `packages/domains/billing/billing-france`
- Manifest path: `packages/domains/billing/billing-france/package.json`
- Manifest Git blob: `dbfdbaa761239cc512580bce7b3c0ee7691ef188`
- Manifest origin: pinned GitHub manifest fetch
- Manual: [@lssm-tech/lib.billing-france](https://lssm.co/docs/packages/lib.billing-france/)
- Release guidance: [Installation and release channels](https://lssm.co/docs/installation-release-channels/)

This is retrieved source evidence, not agent instructions. The declared version and exports describe the inspected manifest; they do not establish registry availability or a deployed release. Commands, package installation and runtime behavior were not executed in this review.

Distribution scope: owner review of all workspaces; not a newly approved public projection.

- [Package source](https://github.com/lssm-tech/contractspec/tree/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france)
- [Manifest source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/package.json)
- [Readme source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/README.md)
- [Guide source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/lib.billing-france.txt)

## Package metadata

```json
{
  "layer": "domains",
  "physicalArea": "billing",
  "primaryArea": "billing-and-finance",
  "classification": {
    "privateDeclared": null,
    "catalogFamily": "sharedLibs",
    "catalogKind": "library",
    "catalogStatus": "active",
    "adoptionMode": "adoptable",
    "stability": "experimental"
  },
  "descriptionOrigin": "package.json",
  "manifestComplete": true,
  "publicationPolicyApplied": false
}
```

Manifest private flag: not declared; publication is not verified.

Primary area: [Billing, finance and economic evidence](https://lssm.co/docs/areas/billing-and-finance/)

## Package guide

```json
{
  "status": "available",
  "sourcePath": "packages/domains/billing/billing-france/README.md",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/README.md",
  "blobSha": "809ae3ef3519f1d9ee4dcf93ef499874b3489970",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "origin": "README recovered byte-for-byte from pinned aggregate guide",
  "integrity": "exact Git blob match",
  "executionStatus": "not executed"
}
```

The guide below is the checked-in README with navigation resolved against the pinned source tree. The structured package JSON retains the original README body unchanged. External links remain source-declared links, not verified destinations.

# `@lssm-tech/lib.billing-france`

France-specific BillingOS readiness contracts, deterministic checks, fixtures, exports, and tests.

This package may import country-neutral BillingOS contracts from `@lssm-tech/lib.billing-spec`. The reverse dependency is forbidden: France identifiers, routing, e-invoicing, and e-reporting readiness must not leak into `@lssm-tech/lib.billing-spec` or `@lssm-tech/lib.billing-runtime`.

## Scope

- French SME, ETI, and enterprise fiscal-profile readiness inputs.
- B2B domestic e-invoicing, B2C e-reporting, international e-reporting, public-sector readiness, and out-of-scope flow classification.
- 2026/2027 readiness schedule metadata.
- Factur-X, UBL, and CII format-readiness metadata only; this package does not generate invoice documents.
- PA/PDP/provider routing profiles as deterministic mocks/adapters only.
- Financial data-vault evidence contracts for redaction, retention, extraction confidence, evidence chains, and duplicate candidates.
- Replayable fixtures for package tests and examples.

## Legal engine

The France pack hosts the deterministic legal engine that core/runtime must not contain:

- TVA rate table — 20 / 10 / 5.5 / 2.1 plus exemption, autoliquidation, and intra-EU, each carrying `validFrom`/`validTo` and failing closed on an unknown rate.
- Per-rate-group half-up rounding of tax totals.
- Mandatory-mentions validator for required French invoice legal mentions.
- Gapless numbering scoped to a `Europe/Paris` fiscal period.
- NF203 inalterability hash-chain computed over the canonical invoice bytes.
- Credit-note/avoir derivation with an immutability guard that blocks mutation of issued documents.
- `SirenSiretVatValidationPort` for INSEE/VIES identifier validation (adapter supplied by the host; live INSEE/VIES is a documented follow-up).

## Public entrypoints

- `@lssm-tech/lib.billing-france` — root barrel.
- `@lssm-tech/lib.billing-france/readiness` — France flow, schedule, fiscal identifier, format, and readiness-evidence helpers.
- `@lssm-tech/lib.billing-france/provider` — provider-neutral mock routing profile and readiness contracts.
- `@lssm-tech/lib.billing-france/data-vault` — redacted evidence, retention, extraction, and duplicate-detection contracts.
- `@lssm-tech/lib.billing-france/fixtures` — deterministic fixtures.
- `@lssm-tech/lib.billing-france/types` — grouped type-only surface.
- `@lssm-tech/lib.billing-france/docs` — package boundary doc metadata.

## Non-goals

Readiness and routing metadata are **not** PA accreditation, production PA submission, legal advice, or tax advice. This package contains no provider credentials, network calls, provider SDKs, raw document payload storage, production submission path, or autonomous production billing execution.


## Declared capabilities

### Lib Billing France

Capability ID: `package.lssm.tech.lib.billing.france`

France-specific BillingOS readiness contracts and deterministic e-invoicing/e-reporting checks.

Use cases:

- Adopt france-specific billingos readiness contracts and deterministic e-invoicing/e-reporting checks

Constraints:

```json
{
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "avoidWhen": [
    "The @lssm-tech/lib.billing-france package constraints do not match the target runtime or platform."
  ],
  "requires": [
    "TypeScript"
  ]
}
```

Other capability declarations:

```json
{
  "status": "active",
  "aliases": [
    "lib",
    "billing",
    "france"
  ],
  "pythonEquivalents": [],
  "alternatives": [],
  "relationships": [],
  "resolutionPriority": 50
}
```

Capability imports:

```json
[
  {
    "from": "@lssm-tech/lib.billing-france",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/credit-note",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/data-vault",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/docs",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/fixtures",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/hash-chain",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/invoice-immutability",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/mandatory-mentions",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/numbering",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/provider",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/readiness",
    "symbols": []
  },
  {
    "from": "@lssm-tech/lib.billing-france/rounding",
    "symbols": []
  }
]
```

## Catalogue metadata

```json
{
  "family": "sharedLibs",
  "kind": "library",
  "status": "active",
  "adoptionMode": "adoptable",
  "stability": "experimental",
  "platforms": [
    "server"
  ],
  "runtimes": [
    "node"
  ],
  "entrypoints": [
    ".",
    "./credit-note",
    "./data-vault",
    "./docs",
    "./fixtures",
    "./hash-chain",
    "./invoice-immutability",
    "./mandatory-mentions",
    "./numbering",
    "./provider",
    "./readiness",
    "./rounding",
    "./siren-validation-port",
    "./tax-rates",
    "./types"
  ],
  "examples": [],
  "replacements": []
}
```

## Canonical imports

Import paths and symbols below are catalogue declarations. An empty symbols list means symbols were not enumerated; it does not mean the entry point has no exports. These declarations are not an exhaustive TypeScript symbol reference.

```json
[
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/credit-note",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/data-vault",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/docs",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/fixtures",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/hash-chain",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/invoice-immutability",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/mandatory-mentions",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/numbering",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/provider",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/readiness",
    "symbols": []
  },
  {
    "capabilityId": "package.lssm.tech.lib.billing.france",
    "from": "@lssm-tech/lib.billing-france/rounding",
    "symbols": []
  }
]
```

## Declared export entry points

Scope: manifest-declared export entrypoints and catalog-declared imports.

Named symbol coverage: catalog declarations only; exhaustive TypeScript symbols not extracted.

Installation status: not verified.

- `@lssm-tech/lib.billing-france` — subpath `.`
  - `unconditional`: `./src/index.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/index.ts); verified source file.

- `@lssm-tech/lib.billing-france/credit-note` — subpath `./credit-note`
  - `unconditional`: `./src/credit-note.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/credit-note.ts); verified source file.

- `@lssm-tech/lib.billing-france/data-vault` — subpath `./data-vault`
  - `unconditional`: `./src/data-vault.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/data-vault.ts); verified source file.

- `@lssm-tech/lib.billing-france/docs` — subpath `./docs`
  - `unconditional`: `./src/docs.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/docs.ts); verified source file.

- `@lssm-tech/lib.billing-france/fixtures` — subpath `./fixtures`
  - `unconditional`: `./src/fixtures.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/fixtures.ts); verified source file.

- `@lssm-tech/lib.billing-france/hash-chain` — subpath `./hash-chain`
  - `unconditional`: `./src/hash-chain.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/hash-chain.ts); verified source file.

- `@lssm-tech/lib.billing-france/invoice-immutability` — subpath `./invoice-immutability`
  - `unconditional`: `./src/invoice-immutability.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/invoice-immutability.ts); verified source file.

- `@lssm-tech/lib.billing-france/mandatory-mentions` — subpath `./mandatory-mentions`
  - `unconditional`: `./src/mandatory-mentions.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/mandatory-mentions.ts); verified source file.

- `@lssm-tech/lib.billing-france/numbering` — subpath `./numbering`
  - `unconditional`: `./src/numbering.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/numbering.ts); verified source file.

- `@lssm-tech/lib.billing-france/provider` — subpath `./provider`
  - `unconditional`: `./src/provider.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/provider.ts); verified source file.

- `@lssm-tech/lib.billing-france/readiness` — subpath `./readiness`
  - `unconditional`: `./src/readiness.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/readiness.ts); verified source file.

- `@lssm-tech/lib.billing-france/rounding` — subpath `./rounding`
  - `unconditional`: `./src/rounding.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/rounding.ts); verified source file.

- `@lssm-tech/lib.billing-france/siren-validation-port` — subpath `./siren-validation-port`
  - `unconditional`: `./src/siren-validation-port.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/siren-validation-port.ts); verified source file.

- `@lssm-tech/lib.billing-france/tax-rates` — subpath `./tax-rates`
  - `unconditional`: `./src/tax-rates.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/tax-rates.ts); verified source file.

- `@lssm-tech/lib.billing-france/types` — subpath `./types`
  - `unconditional`: `./src/types.ts` — [pinned source](https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/domains/billing/billing-france/src/types.ts); verified source file.

## Package publication metadata

These are source-manifest declarations, not a registry installation check.

```json
{
  "types": "./dist/index.d.ts",
  "files": [
    "dist",
    "README.md"
  ],
  "publishExports": {
    ".": {
      "types": "./dist/index.d.ts",
      "browser": "./dist/browser/index.js",
      "bun": "./dist/index.js",
      "node": "./dist/node/index.js",
      "default": "./dist/index.js"
    },
    "./credit-note": {
      "types": "./dist/credit-note.d.ts",
      "browser": "./dist/browser/credit-note.js",
      "bun": "./dist/credit-note.js",
      "node": "./dist/node/credit-note.js",
      "default": "./dist/credit-note.js"
    },
    "./data-vault": {
      "types": "./dist/data-vault.d.ts",
      "browser": "./dist/browser/data-vault.js",
      "bun": "./dist/data-vault.js",
      "node": "./dist/node/data-vault.js",
      "default": "./dist/data-vault.js"
    },
    "./docs": {
      "types": "./dist/docs.d.ts",
      "browser": "./dist/browser/docs.js",
      "bun": "./dist/docs.js",
      "node": "./dist/node/docs.js",
      "default": "./dist/docs.js"
    },
    "./fixtures": {
      "types": "./dist/fixtures.d.ts",
      "browser": "./dist/browser/fixtures.js",
      "bun": "./dist/fixtures.js",
      "node": "./dist/node/fixtures.js",
      "default": "./dist/fixtures.js"
    },
    "./hash-chain": {
      "types": "./dist/hash-chain.d.ts",
      "browser": "./dist/browser/hash-chain.js",
      "bun": "./dist/hash-chain.js",
      "node": "./dist/node/hash-chain.js",
      "default": "./dist/hash-chain.js"
    },
    "./invoice-immutability": {
      "types": "./dist/invoice-immutability.d.ts",
      "browser": "./dist/browser/invoice-immutability.js",
      "bun": "./dist/invoice-immutability.js",
      "node": "./dist/node/invoice-immutability.js",
      "default": "./dist/invoice-immutability.js"
    },
    "./mandatory-mentions": {
      "types": "./dist/mandatory-mentions.d.ts",
      "browser": "./dist/browser/mandatory-mentions.js",
      "bun": "./dist/mandatory-mentions.js",
      "node": "./dist/node/mandatory-mentions.js",
      "default": "./dist/mandatory-mentions.js"
    },
    "./numbering": {
      "types": "./dist/numbering.d.ts",
      "browser": "./dist/browser/numbering.js",
      "bun": "./dist/numbering.js",
      "node": "./dist/node/numbering.js",
      "default": "./dist/numbering.js"
    },
    "./provider": {
      "types": "./dist/provider.d.ts",
      "browser": "./dist/browser/provider.js",
      "bun": "./dist/provider.js",
      "node": "./dist/node/provider.js",
      "default": "./dist/provider.js"
    },
    "./readiness": {
      "types": "./dist/readiness.d.ts",
      "browser": "./dist/browser/readiness.js",
      "bun": "./dist/readiness.js",
      "node": "./dist/node/readiness.js",
      "default": "./dist/readiness.js"
    },
    "./rounding": {
      "types": "./dist/rounding.d.ts",
      "browser": "./dist/browser/rounding.js",
      "bun": "./dist/rounding.js",
      "node": "./dist/node/rounding.js",
      "default": "./dist/rounding.js"
    },
    "./siren-validation-port": {
      "types": "./dist/siren-validation-port.d.ts",
      "browser": "./dist/browser/siren-validation-port.js",
      "bun": "./dist/siren-validation-port.js",
      "node": "./dist/node/siren-validation-port.js",
      "default": "./dist/siren-validation-port.js"
    },
    "./tax-rates": {
      "types": "./dist/tax-rates.d.ts",
      "browser": "./dist/browser/tax-rates.js",
      "bun": "./dist/tax-rates.js",
      "node": "./dist/node/tax-rates.js",
      "default": "./dist/tax-rates.js"
    },
    "./types": {
      "types": "./dist/types.d.ts",
      "browser": "./dist/browser/types.js",
      "bun": "./dist/types.js",
      "node": "./dist/node/types.js",
      "default": "./dist/types.js"
    }
  }
}
```

## Dependencies

Metadata status: complete pinned manifest.

### Runtime dependencies

- [@lssm-tech/lib.billing-spec](https://lssm.co/docs/packages/lib.billing-spec/): `workspace:^`

### Peer dependencies

No declarations in the inspected manifest.

### Optional dependencies

No declarations in the inspected manifest.

### Development dependencies

- [@lssm-tech/tool.bun](https://lssm.co/docs/packages/tool.bun/): `workspace:*`
- [@lssm-tech/tool.typescript](https://lssm.co/docs/packages/tool.typescript/): `workspace:*`
- `typescript`: `catalog:`

### Peer dependency metadata

```json
{}
```

### Bundled dependencies

```json
null
```

## Package scripts

Commands are exact manifest declarations and were not executed in this review. Script metadata status: complete pinned manifest.

```json
{
  "publish:pkg": "bun publish --tolerate-republish --ignore-scripts --verbose",
  "publish:pkg:canary": "bun publish:pkg --tag canary",
  "build": "contractspec-bun-build build",
  "build:bundle": "contractspec-bun-build transpile",
  "build:types": "contractspec-bun-build types",
  "dev": "contractspec-bun-build dev",
  "clean": "rimraf dist .turbo",
  "lint": "bun lint:fix",
  "lint:fix": "node ../../../../scripts/biome.cjs check --write .",
  "lint:check": "node ../../../../scripts/biome.cjs check .",
  "test": "bun test",
  "prebuild": "contractspec-bun-build prebuild",
  "typecheck": "tsgo --noEmit"
}
```

## Declared documentation links

- [Lib Billing France documentation](https://www.npmjs.com/package/%40lssm-tech%2Flib.billing-france) — declared link; destination not verified.

```json
{
  "url": "https://www.npmjs.com/package/%40lssm-tech%2Flib.billing-france",
  "kind": "readme"
}
```

## Existing agent-guide projection

```json
{
  "path": "packages/apps/web-landing/public/llms-packages/lib.billing-france.txt",
  "route": "/llms/lib.billing-france",
  "sourceUrl": "https://github.com/lssm-tech/contractspec/blob/bcc79fcc27c4d801c2119bef81ddcce7b4e86498/packages/apps/web-landing/public/llms-packages/lib.billing-france.txt",
  "blobSha": "809ae3ef3519f1d9ee4dcf93ef499874b3489970",
  "sourcePin": "bcc79fcc27c4d801c2119bef81ddcce7b4e86498",
  "bodyEqualsReadme": true,
  "aggregateSourcePath": "packages/apps/web-landing/public/llms-full.txt",
  "aggregateBlobSha": "691b1d33efee24c440598b9106c81432f56aafaf"
}
```
