\RequirePackage{pdfmanagement}
\SetKeys[document/metadata]{lang=DE,pdfstandard=a-3b,uncompress}
\documentclass{article}
\usepackage[xrechnung]{zugferd}
\AddToHook{shipout/lastpage}{\typeout{shipout!!!!}}
\AddToHook{enddocument}{\typeout{end document!!!!}}
\NewDocumentEnvironment{letter}{}{}{} % works
% \RenewDocumentEnvironment{letter}{}{}{\newpage} % fails, zugferd data are not written.
\begin{document}
\begin{letter}
\begin{ZUGFeRD}
blub
\end{ZUGFeRD}
\end{letter}
\end{document}
The xmp-data are now written in the
enddocumenthook. This is too late as l3pdfmeta writes the file in theshipout/lastpagehook which can be before theenddocumenthook.