invoice.currency.exchange
Los documentos en moneda extranjera necesitan un bloque <Currency> completo
Cuando un documento declara una moneda distinta del EUR, CurrencyCode + CurrencyAmount + ExchangeRate deben estar todos presentes.
Qué comprueba
Cuando un documento de venta / cobro / trabajo declara una moneda distinta del EUR mediante un bloque <Currency>, son obligatorios tres hijos:
CurrencyCode— ISO-4217 (p. ej.USD,GBP,BRL).CurrencyAmount— importe bruto en la moneda extranjera.ExchangeRate— tasa numérica positiva a EUR en la fecha del documento.
Si cualquiera de ellos falta, está vacío o no es positivo, la regla se dispara.
Por qué le importa a la AT
El motor fiscal de la AT convierte cada documento en moneda extranjera a EUR para IVA y agregados SAF-T. Sin tipo de cambio no puede hacer la conversión y el documento se rechaza a la entrada. El XSD solo obliga a la presencia de <Currency> cuando el elemento existe — no obliga a que los tres hijos vayan juntos.
Ejemplos
| Bloque Currency | Veredicto |
|---|---|
USD / 100.00 / 0.92 | ✓ |
USD / 100.00 / 0 | ✗ ExchangeRate debe ser > 0 |
USD / 100.00 / (falta) | ✗ ExchangeRate ausente |
(sin bloque Currency) | ✓ Documento en EUR, la regla no se dispara |
Cómo corregir
Si el documento es realmente en moneda extranjera, edítalo en tu ERP para registrar el tipo de cambio del día (el Banco de Portugal publica tasas de referencia diarias). Si el documento es en EUR, elimina el elemento <Currency> espurio de la exportación.