Skip to main content

El objeto Movement

Un Movement representa una transacción en una cuenta bancaria, como una transferencia, un cheque u otro cargo o abono. Fintoc obtiene el objeto desde una institución para una cuenta asociada a un Link. La API devuelve el objeto cuando listas o consultas movimientos.
Movement Object
El objeto Movement incluye los siguientes atributos:
post_date y transaction_dateCada movimiento incluye dos fechas: post_date y transaction_date. Los bancos usan fechas contables, por lo que una transacción realizada un sábado puede aparecer con fecha del lunes. En este ejemplo, transaction_date corresponde al sábado y post_date, al lunes.El campo post_date es una fecha sin hora, por lo que Fintoc siempre la entrega a las 00:00:00.000Z. No la conviertas a tu zona horaria local, porque la conversión puede moverla al día anterior.El campo transaction_date incluye la hora que informa la institución. Según la institución, Fintoc puede entregar la hora local de Chile con el sufijo Z en lugar de una hora UTC real. Revisa los valores que recibes de cada institución antes de convertir transaction_date a otra zona horaria.
Cheques pendientesEl banco puede tardar hasta 48 horas hábiles en confirmar un cheque. El banco puede revertir un cheque pendiente por motivos como la falta de fondos. Fintoc marca estos cheques con pending para que sepas que el banco aún no los hace efectivos. El campo pending no cambia el status del movimiento.

Estado del movimiento

El campo status indica el estado actual de un movimiento. La mayoría de los movimientos están confirmed. Un movimiento puede pasar a processing o reversed mientras Fintoc procesa y valida los datos del banco. Por defecto, List movements solo entrega movimientos confirmed. Envía confirmed_only=false para obtener también los movimientos processing y reversed:

pending y status

pending y status son campos distintos, y cada uno responde una pregunta diferente:
  • pending aplica solo a cheques. Es true mientras el banco aún no hace efectivo el cheque. Para cualquier otro tipo de movimiento, siempre es false.
  • status aplica a todos los movimientos. Indica si el movimiento está confirmed, processing o reversed.
Un cheque puede tener pending en true y status en confirmed. Los movimientos que guardaste antes no se actualizan solos. Vuelve a consultar el movimiento para obtener sus valores actuales de pending y status.

Los movimientos pueden cambiar después de crearse

El banco puede actualizar movimientos de la cartola después de que aparecen por primera vez. Estas actualizaciones pueden llegar días o semanas después de que Fintoc entrega el movimiento por primera vez. Fintoc mantiene el mismo id cuando un movimiento cambia. Entre los campos que pueden cambiar están:
  • type. Por ejemplo, un depósito de cheque puede aparecer primero con type en other y luego cambiar a check.
  • description.
  • status y pending. Un movimiento confirmed no tiene garantía de ser final. El banco aún puede revertirlo.
  • Los datos de transferencia en sender_account y recipient_account.
Para mantener tus registros sincronizados:
  1. Suscríbete a los eventos account.refresh_intent.movements_modified y account.refresh_intent.movements_removed. Revisa Tipos de eventos.
  2. Cuando recibas movements_modified, toma el id de cada movimiento en movements_changed. Consulta el movimiento con Get a movement y reemplaza tu copia guardada con la respuesta.
  3. Cuando recibas movements_removed, elimina de tus registros los movimientos cuyo id aparece en movements_removed.
  4. Vuelve a listar periódicamente los movimientos del mes en curso y reemplaza tus copias guardadas según su id.
Usa el id del movimiento como clave de tus registros. No identifiques movimientos por type o description, porque pueden cambiar.

Depósitos con más de un cheque o documento

Fintoc lee los movimientos desde la cartola de la cuenta bancaria. Cuando depositas más de un cheque o documento en una misma operación, el banco muestra el depósito como una sola línea. Fintoc entrega esa línea como un solo movimiento por el monto total. La API de Movements no entrega el desglose de los cheques o documentos individuales del depósito, y ningún campo, parámetro o endpoint lo entrega. El type de un depósito depende de lo que depositaste:
  • Los depósitos de cheques o documentos tienen type en check.
  • Los depósitos en efectivo tienen type en other.
Si filtras movimientos por type, incluye ambos valores para no perder depósitos. El banco puede descomponer un depósito en sus abonos individuales más adelante. Cuando Fintoc detecta la descomposición:
  1. Fintoc cambia el status del movimiento agregado a reversed y envía un evento account.refresh_intent.movements_removed con el id del movimiento agregado en movements_removed.
  2. Fintoc crea un movimiento por cada abono individual y los cuenta en el campo new_movements del evento account.refresh_intent.succeeded.
Revisa Tipos de eventos. Para conciliar depósitos, asocia un depósito al monto total de sus abonos, no a cada abono. Si el movimiento agregado cambia a reversed, elimina el movimiento agregado de tus registros y concilia los movimientos individuales. Mantener ambos registros cuenta el mismo depósito dos veces.

El objeto Transfer Account dentro de Movement

El objeto Transfer Account identifica la cuenta en el otro extremo de una transferencia. Aparece en los campos sender_account y recipient_account de un Movement:
Problemas con datos de transferenciaLos datos de transferencia pueden ser null o incorrectos si el movimiento no es una transferencia o existen problemas de coincidencia con las cartolas del banco. Verifica los datos de transferencia antes de conciliar tus movimientos. Los demás datos del movimiento son siempre confiables. Los datos de transferencia pueden cambiar durante los 5 días posteriores a la creación del movimiento.