SAFTCheck
Documentación / currency-exchange
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 CurrencyVeredicto
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.

Otras reglas

Usamos una cookie de sesión para iniciar sesión, una cookie de idioma para la preferencia lingüística y Tawk.to para el widget de chat en vivo (que establece sus propias cookies al abrir el chat). Google Analytics (GA4) se carga solo después de que aceptes, con anonimización de IP; sin rastreadores publicitarios. Consulta nuestra Política de Privacidad.