Skip to main content

The Movement object

A Movement represents a single transaction in a bank account, such as a transfer, a check, or another debit or credit. It is retrieved from an institution for an account under a Link and is returned when you list or fetch movements.
Movement Object
Post date and transaction dateEach movement includes post_date and transaction_date because banks use accounting dates internally. A transaction made on a Saturday can appear with Monday as its post_date. In that case, Saturday is the transaction_date, and Monday is the post_date.The post_date field is a date without a time, so Fintoc always returns it at 00:00:00.000Z. Don’t convert it to your local time zone, because the conversion can shift it to the previous day.The transaction_date field includes the time the institution reports. Depending on the institution, Fintoc can return Chilean local time with a Z suffix instead of a true UTC time. Check the values you receive for each institution before you convert transaction_date to another time zone.
Pending checksThe bank can take up to 48 business hours to confirm a check. The bank can reverse a pending check, for example because of lack of funds. Fintoc marks these checks with the pending flag so you know that the bank hasn’t cleared them yet. The pending flag doesn’t change the movement’s status.

Movement status

The status field indicates the current state of a movement. Most movements are confirmed. A movement can move to processing or reversed as Fintoc processes and validates the bank’s data. By default, List movements returns only confirmed movements. Send confirmed_only=false to also get processing and reversed movements.

pending and status

pending and status are separate fields, and each one answers a different question:
  • pending applies only to checks. It is true while the bank has yet to clear the check. For any other type of movement, it is always false.
  • status applies to every movement. It tells you whether the movement is confirmed, processing, or reversed.
A check can have pending set to true and status set to confirmed. Movements you stored earlier don’t update on their own. Request the movement again to get its current pending and status values.

Movements can change after creation

The bank can update movements in the account statement after they first appear. These updates can arrive days or weeks after Fintoc first returns the movement. Fintoc keeps the same movement id when a movement changes. Fields that can change include:
  • type. For example, a check deposit can first appear with type set to other and later change to check.
  • description.
  • status and pending. A confirmed movement isn’t guaranteed to be final. The bank can still reverse it.
  • Transfer data in sender_account and recipient_account.
To keep your records in sync:
  1. Subscribe to the account.refresh_intent.movements_modified and account.refresh_intent.movements_removed events. See Types of events.
  2. When you receive movements_modified, take the id of each movement in movements_changed. Request the movement with Get a movement and replace your stored copy with the response.
  3. When you receive movements_removed, remove the movements whose id appears in movements_removed from your records.
  4. Periodically list the current month’s movements again and replace your stored copies by id.
Use the movement id as the key for your stored records. Don’t match on type or description, because they can change.

Deposits with more than one check or document

Fintoc reads movements from the bank account statement. When you deposit more than one check or document together, the bank lists the deposit as a single line. Fintoc returns that line as one movement for the total amount. The Movements API doesn’t return a breakdown of the individual checks or documents in the deposit, and no field, parameter, or endpoint provides one. The type of a deposit depends on what you deposited:
  • Deposits of checks or documents have type set to check.
  • Cash deposits have type set to other.
If you filter movements by type, include both values so you don’t miss deposits. The bank can later split a deposit into its individual items. When Fintoc detects the split:
  1. Fintoc changes the aggregated movement’s status to reversed and sends an account.refresh_intent.movements_removed event with the aggregated movement’s id in movements_removed.
  2. Fintoc creates one movement for each individual item and counts them in the new_movements field of the account.refresh_intent.succeeded event.
See Types of events. To reconcile deposits, match a deposit to the total amount of its items, not to each item. If the aggregated movement changes to reversed, remove the aggregated movement from your records and reconcile the individual movements instead. Keeping both records counts the same deposit twice.

The Transfer Account object (within the Movement object)

The Transfer Account object identifies the account on the other side of a transfer, and it appears in the sender_account and recipient_account fields of a Movement.
Transfer data problemsTransfer data can sometimes be null or wrong. This can be due to the movement not being a transfer or because of matching problems with the banks statements. Always double check the transfer data before reconciliating your movements. On the other hand, movement data is always reliable. The transfer data can change up to 5 days after the movement was created.