Saftlint
Migration

From SAF-T 1.30 to 1.40.

Treat the change as a versioned export migration: update the complete source bundle, regenerate test data and pin expected validation behaviour in CI.

Saftlint understands both profiles: 1.30 is checked against the historical 1.30 XSD, while 1.40 is checked against the 1.40 XSD and the complete content ruleset. Old and new fixtures can therefore remain separate without applying the wrong schema.

Migration checklist

Try the same fixture against both profiles

saftlint validate old-1.30.xml
saftlint validate --profile 1.40 old-1.30.xml

The second run treats 1.40 as the target profile and reports structural and semantic differences, including metadata that still identifies 1.30. Saftlint explains the findings; it does not rewrite the accounting file.

See the official 1.40 artefacts ↗