Skip to content
financicaPublic

About

TypeScript libraries for e-invoicing (UBL, Peppol, Factur-X), bank statements (CODA, CAMT.053), tax and annual-accounts filings, and accounting reference data. Each is a separate npm package.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

@financica/ts-libs

TypeScript libraries for e-invoicing (UBL, Peppol, Factur-X, Stripe, Indian GST), bank statements, Belgian and Slovenian tax filings, and accounting reference data. The packages share one toolchain and release process; each is published to npm on its own.

Packages

Package Version Description
@financica/be-biztax 0.4.0 Belgian corporate income tax returns for Biztax: build, validate, render and read the be-tax XBRL instance and the .biztax file
@financica/be-vat-account 0.3.0 Belgian VAT current-account statement (Extrait de compte TVA) PDF parser
@financica/camt053 0.4.0 ISO 20022 CAMT.053 (Bank-to-Customer Statement) XML parser
@financica/coda 0.3.0 Belgian CODA (coded statement of account) bank file parser and serializer
@financica/ecb-client 0.2.1 European Central Bank euro FX reference rates, with historical lookups and last-business-day fallback
@financica/edavki 0.1.0 Slovenian eDavki (FURS): build and serialize the DDV-O VAT return as EDP XML
@financica/facturx 0.2.0 Factur-X / ZUGFeRD (EN 16931 CII) hybrid e-invoices: parse, generate, embed in PDF/A-3
@financica/gst-einvoice-qr 0.1.0 Decode, verify and reconcile the signed QR code on Indian GST e-invoices (IRP / IRN)
@financica/iso4217 0.2.0 ISO 4217 currency codes, numeric codes, minor units and entities
@financica/myminfin 0.12.1 Client and document generators for the Belgian SPF Finances MyMinFin and Intervat APIs
@financica/nace-codes 3.1.0 NACE and NACEBEL economic activity classification codes
@financica/nbb-cbso 0.8.0 Belgian annual-accounts filing for the NBB/BNB Central Balance Sheet Office
@financica/pcmn 0.4.0 Belgian PCMN class taxonomy and the statutory charts of accounts (/charts)
@financica/peppol 0.9.0 Peppol network: SML/SMP participant discovery, Directory lookups, EAS schemes
@financica/react-ubl-renderer 0.4.0 Render parsed UBL / Peppol BIS Billing 3.0 invoices as React or standalone HTML
@financica/scrada-client 0.5.0 HTTP client for the Scrada Peppol API
@financica/stripe-hosted-invoices 0.1.0 Read a Stripe invoice, credit note or receipt from its public hosted URL, without an API key
@financica/stripe-tax-invoices 0.1.0 PDF parser for Stripe's monthly tax invoice for its own fees
@financica/stripe-ubl 4.1.0 Convert Stripe invoices and credit notes into Peppol BIS Billing 3.0 UBL
@financica/ubl 0.19.0 UBL invoices: parse, build and serialize Peppol BIS Billing 3.0
@financica/xbrl 0.2.0 XBRL 2.1 instance document parser and serializer

Getting started

bun install
bun run ci      # lint, format:check, build, typecheck, test

Per-package work uses the same script names everywhere:

bun run --filter '@financica/ubl' test
bun run --filter '@financica/ubl' build
Script Does
build Bundle to dist/ with tsdown
clean Remove dist/
typecheck tsc --noEmit
lint / lint:fix oxlint
format / format:check oxfmt
test / test:watch / test:coverage vitest
ci All of the above, in order

Run at the repository root, build, clean and typecheck fan out across every package in dependency order; lint, format and test run once over the whole workspace. A package README lists only the scripts it adds beyond these.

Every package declares engines.node >= 24, and that is what CI runs.

Cross-package rules (error handling, absent values, types, packaging) are in CONVENTIONS.md.

Layout

Shared configuration lives at the root:

  • tsconfig.base.json: every package extends it and overrides only what it must (jsx, DOM libs, extra strictness).
  • .oxlintrc.json, .oxfmtrc.json: one lint and format configuration.
  • vitest.config.ts: a project per package; a package keeps its own vitest.config.ts only where its tests need different settings.
  • oxlint, oxfmt, tsdown, typescript, vitest and @types/node are root devDependencies. Packages declare only their own runtime and peer dependencies.

Cross-package dependencies are ordinary semver ranges (@financica/ubl: ^0.18.1), not workspace:*: the manifest that is published is the manifest in the tree, with no rewrite step. Bun resolves a range to the workspace copy when it matches, so a change in @financica/ubl is picked up by @financica/stripe-ubl without a publish, as long as the range is kept current when the dependency bumps.

Package history predates the monorepo; git log --follow packages/<name>/src/index.ts reaches it.

Releasing

A package is released by pushing a tag; the Release workflow publishes it through npm trusted publishing (OIDC, provenance attached, no token):

  1. Bump version in package.json and add the entry to the package's CHANGELOG.md.
  2. Update the version in the Packages table above.
  3. Commit and push, then tag the commit <name>@<version> (for example nbb-cbso@0.6.0) and push the tag. The workflow refuses a tag whose version differs from the package's package.json.

Documentation

Each package's README.md is its reference: purpose, contract, API, limits and the reasoning behind non-obvious choices. Longer reference material goes under packages/<name>/docs/ and is linked from that README. READMEs describe the package as it is now; history is in CHANGELOG.md and git. There are no per-package agent instruction files.

License

MIT

About

TypeScript libraries for e-invoicing (UBL, Peppol, Factur-X), bank statements (CODA, CAMT.053), tax and annual-accounts filings, and accounting reference data. Each is a separate npm package.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages