Automatizacion: Bancos

Lecherito

Solucion

He terminado usando Tink, lo que comento en #2 y un agregador. He ido comentando como lo he ido haciendo pero si se tiene alguna duda, preguntad en el hilo.

Con esto de Tink, no necesitas saber nada de lo que es el openbanking ni toda esa parafernalia, ya que Tink es un AISP (tambien PISP) que soluciona todos los temas legales por ti.

Intro

He estado investigando un poco como funciona esto de automatizar los bancos y la verdad es que tiene pinta de imposible debido a la burocracia (que raro... me cago en dios). Pero abro este hilo como recopilador de informacion y terminos ademas de que quiza alguien sabe otras cosas o tiene contactos!

Que es el OpenBanking?

El OpenBanking es una directiva europea (PSD2, Payments Service Directive 2) que unifica la forma de pagar y recuperar informacion de los bancos. Es algo bastante innovativo en este aspecto ya que hasta hace muy poco cada banco solo podia operar con cosas de ese banco pero las cosas estan cambiando a pasos agigantados (aunque supngo que se va a estancar una vez que todos adopten PSD2).

Terminos

  1. PSD2: Payments Service Directive 2
  2. OpenBanking: Basicamente un alias a PSD2 (Por lo que he visto)
  3. TPP: Third Party Provider. Una aplicacion externa que puede acceder a la informacion de los bancos (ya veremos como)
  4. ASPSP: Account Servicing Payment Service Provider. Basicamente un banco, por ejemplo: caixabank, santander...
  5. AISP: Account Information Service Provider. Es uno de los grupos de APIs que engloban el ver la informacion sobre la cuenta, transacciones...
  6. PISP: Payment Initiation Service Provider. Otro de los grupos de API que engloban todo lo relacionado con los pagos
  7. SCA: Strong Customer Authentication. Otra de las directivas europeas sobre como autenticar a un cliente. Es basicamente un 2FA de las tarjetas de credito y se necesitan 2 de 3 opciones (knowledge, possession inherence. Que vienen a ser password/tarjeta/huella dactilar o firma). Pero esto parece necesario solamente para PISP asi que no nos interesa demasiado por ahora.

Estos serian los terminos mas importantes, se pueden ver muchos mas en una de las paginas de openbanking: https://www.openbanking.org.uk/about-us/glossary/

Menudo rollo, que se puede hacer con esto?

Con todo esto se podrian hace muchas cosas! La imaginacion es tu limite, pero empezamos con unas ideas random:

  1. Saber cuanto gastas y recibir informes mes a mes/semana a semana
  2. Saber en que lo gastas
  3. Saber cuanto ganas/ahorras mes a mes y ver la evolucion
  4. Calcular lo que te falta de hipoteca y para cuando vas a poder pagarla etc etc

No se, hay bastantes ideas, cada cual tendra sus propios planes para estas cosas.

Y como empiezo?

Facil! De normal en tu banco habra un apartado con APIs, y es basicamente seguir el proceso. Hay bastante perdida la verdad, ya que la autorizacion va con oAuth2 asi que necesitaras un endpoint HTTPS para recibir el token y poder autenticar. Y no solo eso si no que la primera vez vas a necesitar usar un navegador para hacer la autenticacion en la web del banco pertinente.

Ejemplos de APIs:

Regulaciones

Pues aqui esta toda la miga del asunto. Se supone que para empezar necesitas estar registrado como TPP y no parece haber un consenso sobre como se hace. Cuando vuelva por Espa;ita tengo pensado ir a dar por saco al banco a ver si saco algun contacto sobre como puedo empezar el proceso pero no parece un camino sencillo.

No solo eso si no que ademas va por paises, asi que la cosa se complica incluso mas. Agradeceria si alguien sabe algo respecto a esto.

Agregadores

Lo malo del punto anterior viene lo bueno, que han aparecido agregadores que te hacen la vida mucho mas facil en este aspecto. Pero tiene otro aspecto malo y es que la mayoria son cerrados y/o hay que pagar. Asi que tambien es un co;azo.

Conclusion

La verdad es que parece un mundo bastante cerrado o que no compensa ser un individual pero a ver si hay suerte y podemos sacar algo en claro.

3
Lecherito

He investigado otro poquito y he visto Tink, uno de los agregadores que hablaba en #1, bastante guay por lo que veo y he conseguido de una manera super sencilla sacar todas las transacciones de mi cuenta de Revolut (por ahora solo usando curl).

Les he mandado un ticket de soporte con algunas de las preguntas pero sinceramente tiene una pinta cojonuda, se supone que cuesta 0.15 euros por agregacion (que en verdad no se lo que significa esto, y es una de las preguntas del ticket) pero como mucho serian unos 15 centimos por cuenta bancaria al mes, por lo que yo que tendria de 1 a 3, no seria nada descabellado teniendo en cuenta que te dan todo el PSD2/OpenBanking ya hecho.

Espero que contesten pronto porque parece que esto esta mas dedicado a empresas que a particulares pero bueno.

2
hda

Me interesa mucho. A favs.

PaCoX

lo de los bancos tenia su miga antiguamente... ahora lo mejor que podéis hacer es tirar por algún agrupador como afterbanks.com que creo que tiene version gratis para particulares

1 respuesta
NeV3rKilL

No si al final lo mejor va a ser tirar de fuerza bruta con selenium como en https://www.mediavida.com/foro/dev/python-hilo-general-551473/35#1027

:confounded:

1
Lecherito

#4 Afterbanks lo he estado mirando y tenia buena pinta pero la API es solo para autonomos/empresas. Y para particulares no parece tener soporte para la API. Tienes experiencia con esto?

Edit: Ademas no soporta Revolut :(

2 respuestas
NeV3rKilL

#6 https://developer.ing.com/openbanking/get-started/openbanking
en ing parece que lo máximo que piden es cuenta de github.

1 respuesta
PaCoX

#6 el particular no lo conozco, la documentación de la api https://www.afterbanks.com/api/documentation/en/

1 respuesta
Lecherito

#7 No tengo ING y por ahora no estoy interesado. De todas maneras solamente para el oAuth es mas co;azo de lo que parece.

#8 La verdad es que cada vez que lo veo me gusta menos xD pero bueno, les he abierto otro ticket a estos a ver que me contestan.

PaCoX

las de bbva https://www.bbvaapimarket.com/products?country=bbva-spain

Zoko

En su día unos conocidos tenían esto, no sé si estará roto a día de hoy: https://github.com/bankscrap/bankscrap

Poisonous

La verdad yo llevo tiempo queriendo automatizar el anotar el cobro de dividendos a un sheet.

Las pocas veces que he mirado he llegado a la misma conclusión, va a tocar scrappear como un campeón y me da mucha pereza

Lecherito

Pues en esto el scraping me parece una chapuza así que dudo que lo hiciera además de que necesita mucho tiempo de mantenimiento ya que cada vez que cambien algo, rip.

Y los agregadores parecen guays a ver si me responden los de tinker.

B

Se les acaba el tiempo

isvidal

Pues no me parece mal proyecto el montar un scraper con Python + Selenium para CAIXABANK donde saque toda la data de mis cuentas.

Si le das la suficiente abstraccion luego puedes modulizarlo maximo y hacer que tocando solo tema de urls y parseo puedas tener de otros bancos.

Es cierto te tocan un div y te rompen el tinglado, pero ni veo que sea un proyecto que cueste mucho de hacer, ni mucho luego de mantener.

Lo voy a poner muy alto en mi lista de proyectos por hacer, tan alto que puede que lo empiece en agosto, ya abrire un hilo si eso.

NeV3rKilL

De verdad es tan complicado conseguir el token para utilizar openbank que preferis tirar de fuerza bruta con scrapers?

1 1 respuesta
Wei-Yu

Yo creo que el tema de scrapers para cosas así es invertir tiempo en algo que vas a dejar abandonadísimo más temprano que tarde; si no os frecen una api de la que podáis tirar o agregadores random como ha puesto lecherito u os bajáis un csv a primeros de mes y lo tiráis en algún sitio donde se procese (api, bots, daemons con hooks a las carpetas o alguna milonga así).

2
Lecherito

#16 Si, o estoy muy equivocado en #1 o no te lo has leido (apartado Regulaciones).

Pues bueno, ahora que me han contestado pues me he decidido a seguir con Tinker. El modo premium son 35 centimos por usuario al mes independentemente del numero de bancos. Asi que estoy empezando con ello

1 respuesta
NeV3rKilL

#18 Sí, me lo leí. Pero vi que en la web de ing que pasé yo, pone que simplemente linkando la cuenta de github es suficiente, así que no sé.

Step 1: Sign up and log in to ING Developer Portal
To start consuming the APIs in production environment, you need to create an account or sign up with your GitHub account as described below:

Create an account with your email address and follow the instructions in the email you will receive from ING Developer Portal.
Alternatively, you can sign up with your existing GitHub account and authorize the “ING Developer Portal” app to access your GitHub account.

Luego dicen que ahí registras tu app en su servicio y que entonces puedes generar el token. Lo vi sencillo pero sí es verdad que no me he puesto y supongo que cada banco lo hará diferente.

1 respuesta
HeXaN

#19 Y te respondió que no tiene ING.

1 respuesta
NeV3rKilL

#20 Correcto, lo vi pero el tema sobre oauth 2.0 sigue sin quedarme claro.

La teoría es sencilla. Necesitas que un tercero te identifique y te de un token para hacer la identificación de manera segura como lo resume bien esta imagen.

Sin embargo te pones a leer las instrucciones sobre cómo utilizar la API y los TTP/AISPs no se ven por ningún lado. Aparece el ING Oauth 2.0 y un market propio de APIs de ING y ahí me quedo loco. Te explican como crear el token y tal cuando en teoría eso debería ser creado por terceros si no entiendo mal.

Entonces, ¿Está ING ofreciendo servicio de TTP/AISP para logearte directamente a traves de estas APIs del market?, ¿serviría esto incluso con otros bancos?

edit: He mirado lo de revolut y dice si fa no fa lo mismo. Que te registres en su web y ya está.

1 respuesta
Lecherito

Pues no se si ING es un TTP pero creo que para utilizar las APIs de PSD2 necesitas ser uno.

No se, para mi, solamente el tener el callback para oAuth (puede ser incluso que lo este entendiendo mal) ya es un lio para algo que me cuesta 35 centimos al mes lol. Ademas de no pensar cosas de bancos, endpoints, auth... hay demasiadas cosas como para usar uno de estos agregadores.

9 días después
Kondoriano

Yo trabajo en una empresa que se dedica a esto y os digo que en la mayoría de los bancos para pasar a modo producción se necesita una licencia expedida por una entidad certificadora. Así que si no sois un TPP, está bastante complicado. Y por lo general todo el flujo es un poco lioso al principio.

Lecherito

Pues lo que yo pensaba, de ahi que me parezca super comodo esto de los agregadores. Gracias por confirmarlo!

Lecherito

Me acaban de llamar de Tink para resolver dudas y muy majo el tio, aunque me he sorprendido por el telefono de Estocolmo pero me ha hablado en castellano, asi que 10/10.

Y el Premium es lo que busco asi que me van a contactar para los siguientes pasos y ya poder yo seguir con lo mio. Ya pondre codigo y eso casi seguro

1 respuesta
2 meses después
Wei-Yu

#25 cómo va esto? Yo me estoy cambiando de banco y todo para tener un poco más de manga ancha con este tipo de operaciones (también es que el mío es muy regional aún tras una o dos fusiones xd).

Revisé en su día la página de tink y tenían integrada la plataforma del banco al que estoy migrando, así que probablemente pille su API. Ya estás usándolo a nivel personal? Muchas pegas? Baratejo?

2 respuestas
Lecherito

#26 Pues mira, lo he tenido un poco abandonado con esto de aprender Rust. Este fin de semana de hecho estuve haciendo un poquito sobre el manejo de credenciales (cacheo y eso) asi que espero que este fin de semana pueda hacerle ya deploy de todo y tenerlo funcionando.

Para bancos nuevos esto esta de puta madre pero no para cuentas antiguas dado que los bancos solo te dan hasta 2-3 a;os de transacciones. Siempre puedes pedir un extracto con todas tus transacciones y meterlas "a mano", pero claro, eso cuesta y solo se puede hacer a mano. Yo tengo uno de estos bancos, y ademas otro que no es soportado (Bank of Ireland), y me toca las pelotas la verdad pero es que todas las demas opciones eran MUCHO peor. Pero me inventare las ID (y que empiecen por X, asi las tengo identificadas esas transacciones), pero bueno, por ahora no va mal la cosa.

1 1 respuesta
isvidal

#27 En la caixa te puedes bajar toda tu historia de transanciones.

1 respuesta
Lecherito
#27Lecherito:

Siempre puedes pedir un extracto con todas tus transacciones y meterlas "a mano", pero claro, eso cuesta y solo se puede hacer a mano.

#28

Lecherito

#26 Se me olvido comentarte lo del precio. Cuesta literalmente unos 45 centimos al mes xDDD, a mi ni me cobran (aunque tampoco es que lo este usando demasiado), no me han pedido datos bancarios ni siquiera.

Por otra parte, al final he decidido insertar esas transacciones a mano, he creado dos tablas (para poder diferenciar cuales vienen de tink y cuales no), y una view para poder ver todos los datos juntos. El formato de los datos en los dos casos es el mismo asi que no tengo ningun problema (excepto las malditas categorias, en todas he puesto UNKNOWN por ahora lol). Ya solo me queda a;adir las transacciones restantes del Bank of Ireland (que son pocas), y ya tendre una posicion actualizada.

Este fin de semana hare login y deploy de esto (aunque no me gusta demasiado el codigo) y a ver en que queda la cosa y a actualizar los dashboards de Grafana con algunos graficos nuevos y esas cosas. Ademas espero que se pueda a;adir alguna especie de prediccion para yo tener una mejor vision del futuro.

2