Early accessSome features may be unavailable
Integration · SAF-T

OECD-ready across five jurisdictions.

Structurally-valid SAF-T XML for Portugal, Poland, Romania, Norway, and Luxembourg. Audit-PoC ready for tax-software validation, compliance simulation, and integration testing.

Jurisdictions

Five OECD variants. One toggle.

Each jurisdiction emits a single structurally-valid XML conforming to its schema, with header metadata, master files (GL accounts, customers, suppliers, products), and general-ledger entries.

PTPortugalSAF-T PT 1.04_01
PLPolandJPK_KR 1.0
RORomaniaD406 3.0
NONorwaySAF-T Fin 1.10
LULuxembourgFAIA 2.01
Configuration

One YAML block. Jurisdiction-aware.

Specimen · generation config
output:
  format: saft
  saft:
    jurisdiction: pt           # pt | pl | ro | no | lu
    company_tax_id: PT123456789
    company_name: "Your Company Ltd"

The XML lands at saft/saft_{jurisdiction}.xml inside the job archive. Header metadata (CompanyID, TaxRegistrationNumber, FiscalYear, SoftwareCompanyName), master files (GL accounts, customers, suppliers, products), and general-ledger entries (one journal, one transaction per JE, one debit/credit line per GL line).

Compliance · caveat

Structurally valid. PoC-ready, not filing-ready.

These XMLs conform to jurisdiction schemas and are suitable for audit PoCs, vendor integration testing, and tax-software validation workflows. For regulatory filing, validate against the jurisdiction XSD and extend the source-document layer first.

TaxTable is a single-row stub

The generated TaxTable entry is a placeholder. Extend it with your jurisdiction's full tax-code hierarchy before filing.

Extend before filing

TaxAccountingBasis = 'F'

All entries are stamped with basis 'F' (standard fiscal). Cash-basis and mixed-basis filings require manual remapping.

Standard basis only

SourceDocuments are omitted

Invoice-level SourceDocuments are not emitted. Most jurisdictions require them for VAT; the GL-entries layer is sufficient for audit-trail PoCs.

VAT audit — not yet

Opening/closing balances are zero

DataSynth doesn't track period-level balances today. Jurisdictions that require explicit opening balances need post-processing.

Balances · zeroed

Validate before filing

Always run xmllint --schema against the jurisdiction XSD (DGITA for PT, MF for PL, ANAF for RO, Skatteetaten for NO, ACD for LU).

xmllint --schema

Roadmap: 4.5 addresses these

Sub-ledger balance tracking and invoice-level SourceDocuments are planned for DataSynth 4.5. Hungary, France, and Germany jurisdictions follow.

DS 4.5
Begin

Generate your first SAF-T reference.

SAF-T export is available on Scale and Enterprise. 1.25× credit multiplier applies on jobs using the format.