Consolidar somente transações com status = 'PROCESSED'
O ambiente Open Finance estipula que enquanto uma transação estiver com status 'PENDING' suas propriedades como internal_identification, description, amount e transactionDateTime podem ser alteradas a qualquer momento.
Portanto coletar as transações somente no fim do processo garante que elas não sofrerão alterações após essa coleta.
Vale ressaltar que o processo de liquidação de uma transação pode demorar dias, conforme a imagem abaixo demonstra, portanto é esperado que algumas transações demorem dias para serem atualizadas com o status = 'PROCESSED'.
Converter fuso horário das transações
Para preenchermos o campo value_date nós utilizamos o transactionDateTime recebido das instituições do Open Finance.
O ambiente Open Finance segue as diretrizes da ISO8601 e portanto nos envia os valores de transactionDateTime no formato abaixo em UTC+0:
2024-08-14T20:28:39.455Z
Nesse caso recomendamos converter data-hora para o horário de Brasília (UTC-3), no formato abaixo:
2024-08-14T17:28:39.455-3:00
Alternativamente, criamos um campo chamado local_datetime_transacted_at no qual a Belvo já converte este dado.
Diferenças entre o extrato e o retorno da API
No extrato bancário gerado pelas instituições normalmente é exibido uma visualização contábil das transações, portanto todas as transações constam como sendo realizadas em dias úteis.
No entanto a data enviada no campo transactionDateTime pelas instituições é sempre referente ao dia em que a transação foi realizada, portanto valor não necessariamente representa a data contábil da transação.
Exemplo: No extrato temos uma transação de PIX registrada na segunda-feira 07/10, mas na API essa transação foi criada com a data 05/10, pois o PIX foi criado num sábado.
Essa interação também podem ocorrer em feriados.
Nesse caso recomendamos que a transação seja movida para o próximo dia útil, para que não ocorra divergências em relação ao extrato.