Consolidate only transactions with status = 'PROCESSED'
The Open Finance environment dictates that while a transaction is in 'PENDING' status, its properties such as internal_identification, description, amount and transactionDateTime can be changed at any time.
Therefore, collecting transactions only at the end of the process guarantees that they will not change afterwards.
It is worth noting that the process of settling a transaction can take days, as the image below shows, so it is expected that some transactions will take days to be updated with the status = 'PROCESSED'.
Convert transaction time zone
To populate the value_date field, we use the transactionDateTime received from the Open Finance institutions. The Open Finance environment follows the ISO8601 guidelines and therefore sends us the transactionDateTime values in the format below in UTC+0:
2024-08-14T20:28:39.455Z
In this case, we recommend converting the date-time to your own timezone such as Brasilia time (UTC-3), in the format below:
2024-08-14T17:28:39.455-3:00
Alternatively, we have created a field called local_datetime_transacted_at in which Belvo already converts this data to UTC-3.
Differences between the statement and API returns
The bank statement generated by the institutions usually shows an accounting view of the transactions, so all transactions are shown as being carried out on working days.
However, the date sent in the transactionDateTime field by the institutions always refers to the day on which the transaction was performed, so the value does not necessarily represent the accounting date of the transaction.
Example: In the statement we have a PIX transaction recorded on Monday 07/10, but in the API this transaction was created with the date 05/10, because the PIX was created on a Saturday.
This interaction can also occur on public holidays.
In this case, we recommend moving the transaction to the next working day so that there are no discrepancies with the statement.