The Movement object
AMovement 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
Thestatus 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:
pendingapplies only to checks. It istruewhile the bank has yet to clear the check. For any other type of movement, it is alwaysfalse.statusapplies to every movement. It tells you whether the movement isconfirmed,processing, orreversed.
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 movementid when a movement changes. Fields that can change include:
type. For example, a check deposit can first appear withtypeset tootherand later change tocheck.description.statusandpending. Aconfirmedmovement isn’t guaranteed to be final. The bank can still reverse it.- Transfer data in
sender_accountandrecipient_account.
- Subscribe to the
account.refresh_intent.movements_modifiedandaccount.refresh_intent.movements_removedevents. See Types of events. - When you receive
movements_modified, take theidof each movement inmovements_changed. Request the movement with Get a movement and replace your stored copy with the response. - When you receive
movements_removed, remove the movements whoseidappears inmovements_removedfrom your records. - Periodically list the current month’s movements again and replace your stored copies by
id.
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. Thetype of a deposit depends on what you deposited:
- Deposits of checks or documents have
typeset tocheck. - Cash deposits have
typeset toother.
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:
- Fintoc changes the aggregated movement’s
statustoreversedand sends anaccount.refresh_intent.movements_removedevent with the aggregated movement’sidinmovements_removed. - Fintoc creates one movement for each individual item and counts them in the
new_movementsfield of theaccount.refresh_intent.succeededevent.
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 thesender_account and recipient_account fields of a Movement.