SAFTCheck
Documentação / currency-exchange
invoice.currency.exchange

Documentos em moeda estrangeira precisam de um bloco <Currency> completo

Quando um documento declara uma moeda não-EUR, CurrencyCode + CurrencyAmount + ExchangeRate têm de estar todos presentes.

O que se verifica

Quando um documento de venda / pagamento / trabalho declara uma moeda não-EUR através de um bloco <Currency>, três filhos são obrigatórios:

  • CurrencyCode — ISO-4217 (por exemplo, USD, GBP, BRL).
  • CurrencyAmount — montante bruto na moeda estrangeira.
  • ExchangeRate — taxa numérica positiva para EUR na data do documento.

Se qualquer um deles estiver em falta, vazio ou não-positivo, a regra dispara.

Porque é que a AT se importa

O motor fiscal da AT converte cada documento em moeda estrangeira para EUR, para IVA e agregados SAF-T. Sem uma taxa de câmbio não consegue fazer a conversão, e o documento é rejeitado à entrada. O XSD só obriga à presença de <Currency> quando o elemento existe — não obriga a que os três filhos venham juntos.

Exemplos

Bloco CurrencyVeredicto
USD / 100.00 / 0.92
USD / 100.00 / 0✗ ExchangeRate tem de ser > 0
USD / 100.00 / (em falta)✗ ExchangeRate em falta
(sem bloco Currency)✓ Documento em EUR, a regra não dispara

Como corrigir

Se o documento é mesmo em moeda estrangeira, edite-o no ERP para registar a taxa de câmbio do dia (o Banco de Portugal publica taxas de referência diárias). Se o documento é em EUR, retire o elemento <Currency> espúrio da exportação.

Outras regras

Usamos um cookie de sessão para autenticação, um cookie de idioma para a preferência linguística e o Tawk.to para o widget de chat ao vivo (que define os seus próprios cookies quando abre o chat). O Google Analytics (GA4) só é carregado depois de aceitar, com anonimização de IP; sem rastreadores publicitários. Consulte a nossa Política de Privacidade.