Formularios de usuarios dinámicos con React Hooks

Avatar img
Esteban Aristizábal
Software Developer @ Kushki
noviembre 16, 2020
Lectura de 2 minutos
Formularios de usuarios dinámicos con React Hooks

¿Cómo se crean los formularios de usuarios dinámicos con React Hooks en Kushki?

La creación de formularios con los cuales se captará la información de un usuario final puede ser una tarea difícil, debido a que se deben tomar en cuenta muchos factores como: validaciones en los campos, accesibilidad, mantenibilidad, que sea extensible y sujeto a cambios, lograrlo en el menor tiempo posible, con buenas prácticas, entre otros. Y puede ser más desafiante en el caso de que el formulario que deseemos desarrollar sea extenso, complejo, con numerosas secciones o que implique generar nuevos formularios según las elecciones del usuario.

En Kushki, llevamos a cabo este trabajo continuamente para ofrecer la mejor experiencia de usuario en el uso de nuestra plataforma, en este artículo te contaremos cómo logramos solucionar todas esas dificultades para un resultado óptimo en el desarrollo de formularios de usuario.

Formulario React Kushki

¿Cuáles son las tecnologías y librerías que se deben utilizar?

Es una librería para la construcción de interfaces de usuario, que principalmente ofrece la posibilidad de desarrollar complejas aplicaciones web con datos que cambian a través del tiempo. Se adapta muy bien a nuestras necesidades de captar constantemente información en nuestros distintos productos para actualizarlos en nuestra plataforma, además de presentar información que cambia continuamente de una forma inmediata y consistente. Algunas características muy importantes que también nos ofrece son: facilidad de uso, reusabilidad de componentes gráficos y eficiencia al construir interfaces complejas partiendo desde piezas más simples.

Son una nueva adición a React, permitiendo escribir aplicaciones con un enfoque funcional, reduciendo la cantidad de código necesario, simplificando los componentes complejos previamente desarrollados con clases a una estructura más simple la cual permite abstraer y reutilizar lógica en estas funciones para lograr componentes más fáciles de entender y mantener.

Es un lenguaje de programación que compila a Javascript, y la razón para utilizarlo es que Javascript no se pensó para la creación de grandes y complejos sistemas sino para la implementación de funcionalidades dinámicas a una página web; por eso Typescript se convierte en esa pieza fundamental para que Javascript sea altamente escalable manteniendo un gran nivel de flexibilidad. Al añadir un tipado estricto logramos un código más robusto y sólido, permitiendo que nuestras aplicaciones tengan menos errores, sean más fáciles de probar y una mayor mantenibilidad a través del tiempo, por eso nuestra adopción de este lenguaje de programación es muy alta en nuestro conjunto de aplicaciones.

Es una librería para la construcción de formularios con React, creada con el objetivo de lograr un mayor rendimiento y facilidad a la hora de implementar y validar los formularios.

Algunas razones por las cuales es recomendable utilizar React Hook Form son:

  • Es intuitiva, permitiendo al desarrollador utilizar una sola función encargada de abstraer toda la lógica del manejo del formulario.

  • Utiliza Hooks, consiguiendo un código más limpio al reutilizar funciones responsables del manejo de distintas partes de la interfaz.

  • Ofrece buen rendimiento, ya que minimiza el número de re-renderizaciones al utilizar Hooks y un aislamiento de los campos del formulario al momento que cambian su estado.

  • Es ligera, sin ninguna dependencia que afecte su tamaño al descargarla.

  • Posee validación incorporada; se encarga del control de errores que suceden al ingresar datos erróneos en los campos en el formulario.

  • Integración con Typescript, para mantener un tipado estricto de los campos que se deben captar del usuario.

Con algunas desventajas:

  • Requiere el uso de componentes funcionales, por lo que no es compatible con componentes realizados con clases.

  • El uso de Hooks al ser una característica nueva en React puede suponer un tiempo adicional para aprender a utilizarlos correctamente.

¿Cómo se debe implementar?

React Hook Form es la librería utilizada para la construcción del formulario, en esta sección nos centraremos en describir el proceso de desarrollo para llevarlo a cabo junto con explicaciones técnicas que permitan entender mejor cómo puede ser su adopción en un proyecto.

1. Define un tipado estricto del formulario

Al especificar una interfaz con los campos que tendrá el formulario nos permite mantener entendibilidad en el equipo de trabajo y brindar detección de errores en tiempo de compilación. A continuación tenemos una implementación de una interfaz de un formulario sencillo que captará información de un cliente.

interface IForm {
  clientName: string;
  clientDetails: {
    email: string;
    documentType: string;
    documentNumber: string;
  }
}

2. Inicializa el formulario con la función useForm()

Esta función retorna los métodos con los que se va a interactuar con la API de la librería, recibe como parámetro un tipado genérico con la interfaz que definimos anteriormente para mantener un tipado estricto del formulario y también especificamos que la validación de los campos sea con el modo "onBlur", es decir al momento que el elemento pierde el enfoque del usuario.

 export const FormComponent: React.FC = () => {
   const form = useForm <IForm> ({
     mode: "onBlur",
   });
 }

3. Envuelve las secciones del formulario con el componente FormProvider

Este componente que ofrece la librería hace uso de la API Context de React, que resuelve el problema de pasar "props" en cada nivel del árbol de componentes, esto es específicamente útil en formularios complejos con múltiples secciones anidadas. Para la implementación hemos definido que el formulario tendrá 2 secciones anidadas, la primera captará el nombre del cliente y la segunda los detalles del cliente. Además de especificar la función "handleSubmitForm" que será la encargada de procesar los datos una vez que el usuario realice un envío del formulario.

export const FormComponent: React.FC = () => {
  const form = useForm<IForm>({
    mode: "onBlur",
  });

  const handleSubmitForm: SubmitHandler<IForm> = async (formData) => {
    // Guardar campos recibidos del formulario
  };

  return (
    <FormProvider {...form}>

      <ClientNameSection/>

      <ClientDetailsSection/>

      <Button
        style={{ margin: 20 }}
        variant="contained"
        color="primary"
        disableElevation
        onClick={form.handleSubmit(handleSubmitForm)}
      >
        Guardar
      </Button>
    </FormProvider>
  );
}; 

4. Utiliza el componente ConnectForm para secciones anidadas del formulario

Es muy común desarrollar formularios que tengan secciones que estén profundamente anidadas dentro del árbol de componentes, en este caso el componente "ConnectForm" se integra muy bien, permitiendo envolver al componente anidado con los métodos de la librería sin necesidad de obtenerlos de los "props". Aquí hacemos uso de la técnica "renderProps" de React para reutilizar este componente en múltiples partes del código.

const ConnectForm = <T extends {}>({
  children,
}: {
  children: (form: UseFormMethods<T>) => JSX.Element;
}) => {
  const formMethods = useFormContext<T>();

  return children({
    ...formMethods,
  });
};

5. En las secciones anidadas del formulario utiliza el componente TypedController

Este componente de la librería se encargará de registrar el elemento en el estado del formulario para hacer un seguimiento de las entradas del usuario. Haremos uso del componente "Textfield" de la librería Material-UI el cual se envuelve dentro del TypedController en su atributo "render". Se crearán 2 secciones anidadas "ClientNameSection" y "ClientDetailsSection":

export const ClientNameSection: React.FC = () => {
  return (
    <ConnectForm<IForm>>
      {({ control, errors }) => {
        const TypedController = useTypedController<IForm>({
          control: control,
        });

        return (
          <div style={{ padding: 20 }}>
            <TypedController
              name={"clientName"}
              rules={{ required: true }}
              render={(props) => (
                <TextField
                  {...props}
                  label="Nombre del cliente"
                  variant="outlined"
                  error={!!errors.clientName}
                  required
                  fullWidth
                  margin="normal"
                  helperText={
                    !!errors.clientName &&
                    "Campo requerido"
                  }
                />
              )}
            />
          </div>
        );
      }}
    </ConnectForm>
  );
};
export const ClientDetailsSection: React.FC = () => {
  return (
    <ConnectForm<IForm>>
      {({ control, errors }) => {
        const TypedController = useTypedController<IForm>({
          control: control,
        });

        return (
          <div style={{ padding: 20 }}>
            <div>
              <Typography variant="h6" color="primary">
                Detalles del cliente
              </Typography>
              <TypedController
                name={["clientDetails", "email"]}
                rules={{ required: true, pattern: emailPattern }}
                render={(props) => (
                  <TextField
                    {...props}
                    label="Correo electrónico"
                    variant="outlined"
                    error={!!errors.clientDetails?.email}
                    required
                    fullWidth
                    margin="normal"
                    helperText={
                      !!errors.clientDetails?.email &&
                      "Email inválido"
                    }
                  />
                )}
              />
            </div>
            <div style={{ display: "flex" }}>
              <div style={{ width: "50%", marginRight: 10 }}>
                <FormControl
                  variant="outlined"
                  fullWidth
                  margin="normal"
                >
                  <InputLabel>Tipo de documento</InputLabel>
                  <TypedController
                    name={["clientDetails", "documentType"]}
                    defaultValue={"CI"}
                    render={(props) => (
                      <Select {...props} label="Tipo de documento">
                        <MenuItem key="CI" value="CI">
                          {"CI"}
                        </MenuItem>
                        <MenuItem key="RUC" value="RUC">
                          {"RUC"}
                        </MenuItem>
                        <MenuItem key="PAS" value="PAS">
                          {"PAS"}
                        </MenuItem>
                      </Select>
                    )}
                  />
                </FormControl>
              </div>
              <div style={{ width: "50%", marginLeft: 10 }}>
                <TypedController
                  name={["clientDetails", "documentNumber"]}
                  render={(props) => (
                    <TextField
                      {...props}
                      id="documentNumber"
                      label="Número de documento"
                      variant="outlined"
                      error={!!errors.clientDetails?.documentNumber}
                      fullWidth
                      margin="normal"
                    />
                  )}
                />
              </div>
            </div>
          </div>
        );
      }}
    </ConnectForm>
  );
}; 

Además el componente "TypedController" mantiene un tipado estricto del formulario como observamos en la siguiente sección de código, al colocar un argumento equivocado en el atributo "name", el compilador detecta un error en tiempo de ejecución.

Podemos ver cómo se visualizaría en el navegador con las 2 secciones anidadas del formulario.

6. Observar los cambios en los campos del formulario con la función useWatch()

En la fase de desarrollo es frecuente la necesidad de realizar acciones de acuerdo a las entradas del usuario, por ejemplo, para renderizar condicionalmente o para validar datos en tiempo real, la función "useWatch()" nos permite estar escuchando los cambios de un campo del formulario y actuar de acuerdo a este. En nuestra implementación, se puede utilizar la función para validar si el campo "email" existe al momento que el usuario lo ingresa en el formulario:

export const ClientDetailsSection: React.FC = () => {
  return (
    <ConnectForm<IForm>>
      {({ control, errors }) => {
        const TypedController = useTypedController<IForm>({
          control: control,
        });

        const email = useWatch({ name: "email" }) as string;

        useEffect(() => {
          // Verificar si email ya existe
        }, [email]);

        ...         

7. Enviar los valores del formulario con la función handleSubmit()

Esta función pasará la información recopilada una vez que se realice una validación exitosa para poder guardar los datos del formulario.

export const FormComponent: React.FC = () => {
    const form = useForm < IForm > ({
      mode: "onBlur",
    });

    const handleSubmitForm: SubmitHandler < IForm > = async (formData) => {

      // Guardar campos recibidos del formulario  
    };

    ...

Previamente a la invocación de la función se realiza una validación de los campos, como podemos observar en la siguiente imagen la librería se encarga de detectar los errores y actualizarlos en la interfaz.

Por último, con los campos completos podemos ver cómo se recibirán en la función para poder procesarlos:

 {
  "clientName": "John Doe",
  "clientDetails": {
    "email": "jhon.doe@test.com",
    "documentType": "CI",
    "documentNumber": "1764537289"
  }
}

¿Cuales son nuestros resultados?

Actualmente en Kushki, esta implementación nos ha permitido:

  • Construir formularios de una forma más eficiente reduciendo el código escrito.

  • Formularios extensos y complejos se los desarrolla a partir de componentes simples y se delega a la librería la responsabilidad de validarlo y controlarlo.

  • Contar con una estandarización en la forma de desarrollarlos para lograr una mejor mantenibilidad del código a lo largo del tiempo dentro del equipo de trabajo.

  • Lograr mejoras de rendimiento al reducir al mínimo el número de renderizaciones que debe realizar el navegador.

  • Detectar errores antes de que el código esté en producción gracias al tipado estricto del formulario.

También, es importante tomar en cuenta estas observaciones antes de adaptarlo en un proyecto.

  • Existirá un tiempo adicional de aprendizaje hasta que el equipo de trabajo implemente de forma adecuada la librería.

  • Puede ser una solución excesiva si el formulario que se va a desarrollar es sencillo con pocos elementos.

  • La librería cuenta con menos comunidad y colaboradores que otras librerías más antiguas en el mercado como son Formik o Redux Form. Puedes ver una completa comparación con estas librerías en este enlace.


Finalmente, espero que este artículo haya sido de ayuda en el proyecto que estés llevando a cabo o planees realizarlo, y puedas adoptar esta forma de construir formularios para que tengas un proceso de desarrollo óptimo y eficiente.

Sé el alma de la fiesta con la información más fresca sobre pagos digitales.

Suscríbete a nuestro Kushki Hub para recibir alertas de nuestro nuevo contenido.

Suscribe illustration
¿No sabes qué producto es el indicado para tu comercio?
¿El mundo de los pagos llama tu atención?

Más de nuestro Kushki Hub

De startup a scaleup: cómo el mindset emprendedor me ayudó a escalar un negocio

De startup a scaleup: cómo el mindset emprendedor me ayudó a escalar un negocio La última vez que escribí fue del gran paso que dimos en nuestro viaje emprendedor: vender nuestra startup y comenzar a caminar de la mano de una pasarela de pagos regional y mucho más grande. Pero antes de eso, ya llevábamos un tiempo en el juego con distintos negocios, algunos exitosos y otros no tanto. La mentalidad y la resiliencia generada en todos estos años de lucha emprendiendo, nos ha servido a mi y al equipo para poder fluir en ambientes altamente cambiantes, dinámicos y desafiantes. Todo ha pasado rápido y un poco de golpe, pero si algo hemos aprendido, es que es muy diferente crear una startup local a escalar un negocio regional. Uno no sucede sin la ayuda del otro: el camino del emprendedor te da las herramientas y más importante, la mentalidad, para poder hacer crecer una empresa aceleradamente. Lo básico Una startup es una pequeña institución o empresa que se mueve por un principio básico: resolver necesidades no satisfechas en la sociedad. Y no de casualidad, porque son esas necesidades naturales las que justamente se generan porque las grandes instituciones no son capaces de adaptarse lo suficientemente rápido a los cambios que vivimos día a día. Las startups, además, usan nuevas tecnologías y su elemento diferenciador es su capacidad de moverse rápido ¿Cuál es el gran objetivo de las startups? Encontrar un product market fit, es decir, un producto que solucione un problema del mercado. Es ahí cuando viene el punto de inflexión. Es ese minuto donde el mercado necesita más de tu producto de lo que tu pequeña empresa puede proveer, donde se genera el primer gran Black Swan, un evento impredecible que se sale de lo normal ¿Qué significa todo esto? La startup despega y se convierte en lo que muchos llaman una scaleup o high growth firm. ¿Una scaleup? Seguro te estarás preguntando qué es ese concepto. Una scaleup es una institución que tiene como único objetivo el crecimiento. Según organizaciones como la OCDE o Endeavor, son este tipo de empresas las que realmente generan impacto en los países y mejoran las economías al proveer gran cantidad de empleos. Se definen como aquellas que tienen al menos 10 trabajadores formales y han experimentado una tasa de crecimiento acumulado de al menos 72% durante tres años consecutivos (o una tasa anual promedio de 20%). Las scaleups usan su producto y su modelo de negocio ya validado para agarrar el mayor volumen de participación en el mercado. Pero algo tienen de startup también, pues buscan mantener la agilidad para poder adaptarse lo mejor posible a un crecimiento vertiginoso. Son lo que hace algún tiempo fueron Google, Amazon, Tesla y muchas más. Ambiciosas en su esencia, quieren romper barreras y tender a monopolios. Para eso, usan financiamiento, tecnología y capital humano. Todo para mantener el crecimiento exponencial. Suena como un caos, y en cierta medida, lo es. Pero es un buen caos, del tipo que logra soluciones genuinas a problemas dinámicos, que son cada vez más grandes. Es el tipo de caos que saca lo mejor de algunos y a otros los invita a adaptarse o a dar un paso al costado. Y es que en esta etapa hay múltiples variables: trabajamos en sistematizar los procesos que en la fase de startup se hacían de forma manual, en escalar las ventas para llegar aumentar nuestro alcance, en robustecer nuestro producto para responder a la nueva demanda, en estructurar la cultura para atraer el talento correcto y en aumentar el sentido de pertenencia de las nuevas personas que se unen al equipo. Es un minuto de cambio de prioridades, donde la pregunta pasa de cómo conseguimos más recursos (dinero, advisors, talento) a cómo podemos usar esos recursos para poder generar un mayor impacto. Escalar sin morir en el intento Para crecer así de rápido la institución tiene que lograr adaptarse de buena manera. En un ambiente dinámico y veloz como este, eso se logra entregando un sentido de pertenencia a las personas con las que trabajamos. Es importante generar autonomía, porque de la mano con el crecimiento, los roles van cambiando y las responsabilidades aumentan. Llega un punto donde recibes nuevos compañeros todas las semanas, pasan y pasan cosas que están fuera de nuestro control. El ejemplo más claro es la pandemia del Coronavirus. Es algo con lo que hay que lidiar, y rápido. Hay desorden y hay caos, pero del tipo que genera resultados, personas motivadas y más importante aún felices con su trabajo. Como en todo, hay días buenos y días muy malos, eso es lo que lo hace emocionante. Los fundadores ya no son los únicos que crean las dinámicas y toman decisiones. En ese crecimiento, hay varios modelos validados para lograr participación en el mercado y seguir desarrollando un producto escalable. Pero independiente de la estrategia, hay aspectos esenciales de los que hay que preocuparse: Primero, el punto clave para poder crecer: financiamiento. Las scaleups usan recursos externos para apalancar su escalamiento exponencial. Si la empresa decide no tener financiamiento externo desacelera su crecimiento. No tiene nada de malo, solo que no sería una Scaleup. Segundo, la cultura. A medida que se escala rápidamente y los desafíos van aumentando, es importante mantener el alma de la startup que una vez fuiste. Si no hay claridad de eso, es fácil que tus valores y tus objetivos se vayan desdibujando en el camino y que las decisiones no vayan acorde a eso. Tercero, las contrataciones, uno de los mayores desafíos. Es clave tener gente resiliente y dinámica, que tenga la capacidad de adaptarse a entornos cambiantes. Esto no es para todos, y eso está bien, solo hay que saber reconocerlo al minuto de ampliar los equipos.Dejemo Cuarto, gestión del caos. Un poco de caos es positivo, le da dinamismo al ambiente de trabajo y ayuda a seguir avanzando. Lo importante es tenerlo bajo control y desarrollar herramientas que permitan que cada uno haga su trabajo de la mejor manera, incluso en momentos caóticos. Y por último, hay un montón de preguntas de las que no tengo la respuesta. Nadie nace sabiendo cómo escalar un negocio. Las interrogantes son miles, y van sumándose en el camino, pero siempre con un objetivo claro: lograr cohesión en el equipo para sacar el potencial de este, para así lograr el mayor impacto posible y ayudar a nuestra región a desarrollarse. Si te gustan los negocios tradicionales, la estructura y lo conocido, trabajar en una scaleup no es para ti, pero si los desafíos te llaman, los ambientes cambiantes te entusiasman y fluyes en el cambio no puedo si no recomendarte trabajar en una scaleup, que llene tu vida de emoción e innovación.
Avatar img
Oscar Quevedo
Country Head de Chile y VP de Marketing @ Kushki
noviembre 05, 2020

Regulación que atrae inversión: así avanzan los países de la región en sus respectivas Leyes Fintech

Así avanzan los países de la región en sus respectivas Leyes Fintech No es raro que, una vez que comienza a explotar la creación de empresas en algún sector, surja una ley para regular y fiscalizar sus actividades. El caso de las fintech no es ninguna excepción: son estas empresas las que están llevando la batuta de la carrera hacia la economía digital, mezclando finanzas con tecnología y acercando los productos financieros a todas las personas. Tanto así, que la historia de las fintech es inédita en el mundo: no existe en los registros de la industria tecnológica un mercado que haya crecido tan rápido como este, llegando a una inversión de más de US $110 mil millones a nivel global tan solo en 2018. Ese mismo año, la industria contaba con 112 mil empresas fintech creadas. A pesar de que algunos aseguran que la regulación puede ser un potenciador para ciertas industrias, otros advierten que hay que tener cuidado cuando las leyes son muy restrictivas y no permiten el crecimiento. En la regulación a nivel mundial, el abanico es amplio y son aproximadamente 12 las naciones que cuentan con legislación en estas áreas. Países como China y el Reino Unido han optado por crear leyes nuevas que regulen el uso de estas tecnologías en sus sistemas financieros. En Estados Unidos, en cambio, han decidido actuar de manera reactiva, es decir, modificando reglas que ya existen. ¿Qué pasa en nuestra región? Tal como en un curso escolar de adolescentes, en Latinoamérica hay alumnos de todas las alturas. Algunos, cómo México y Brasil, están más avanzados que otros. De hecho, son esos dos países los que, casi compitiendo, sacaron regulaciones fintech al mismo tiempo. Eso sí, los expertos señalan que México es el único país que tiene una regulación integral y no parcializada. En marzo de 2018.), la regulación fintech brasileña introdujo dos nuevos tipos de instituciones financieras a través de plataformas electrónicas: las sociedades de crédito directo y las sociedades de préstamos entre pares. En abril de 2019, la regulación incluyó la implementación de un sistema financiero abierto, lo que se conoce como “open banking”. Ese entorno regulado ha comprobado ser un impulso para la inversión: según KPMG, Brasil registró una inversión récord en el sector de US $555 millones en 2018. México también fue uno de los más precoces: desde marzo de 2018 cuentan con una Ley Fintech Integral, aunque solo entró en vigencia en septiembre de ese mismo año. Esto, a pesar de que ya existían varias empresas fintech en el país, las que tuvieron hasta septiembre de 2019 para solicitar su autorización oficial bajo la nueva ley. Con la pandemia, la Comisión Nacional Bancaria y de Valores (CNBV) suspendió los procesos de autorización y dejó a 80 fintech en espera. Pero, en agosto de 2020, el proceso se reanudó, esta vez de manera 100% digital. La ley en sí incluye la regulación de cuatro figuras: el crowdfunding, las criptomonedas, las API y la regulación sandbox. Otro de los más avanzados, aunque sin contar aún con una legislación integral, es Colombia. Su regulación está a cargo del Ministerio de Hacienda, a través de la Unidad de Regulación Financiera (URF) y también la Superintendencia Financiera. Hasta ahora, han tomado pasos legislativos para dar entrada a los depósitos electrónicos, para permitir hacer crowdfunding financiero bajo ciertas normas y para permitir la llegada del robo-advisor al consumidor. También, la Superintendencia Financiera ha creado un sandbox regulatorio ¿Qué significa esto? Un sandbox es un espacio de experimentación, que permite a ciertas empresas operar temporalmente de forma legal, con la idea de que testeen sus soluciones en un ambiente aprobado por los fiscalizadores. Sin ley específica En Ecuador, a pesar de que se ha visto una buena apertura de la Superintendencia de Bancos hacia las fintech, aún no existe una ley que sea precisamente dirigida a estas compañías. En 2017, la Junta de Política y Regulación Monetaria y Financiera expidió la norma general que regula la definición, calificación y acciones de servicios auxiliares de los sectores financieros. Eso le dio oportunidad a varias compañías fintech de regularizarse y sacar autorización de forma oficial. Como no hay regulación específica, las fintech deben atenerse a las leyes aplicables a todas las empresas de naturaleza financiera. Ahí, existen dos sectores: el sector financiero privado (bancos, servicios financieros y entidades de servicios auxiliares) y el sector financiero popular y solidario (cooperativas de ahorro y crédito, bancos comunales, cajas de ahorro y cajas centrales). A diferencia de sus vecinos, aún no cuentan con un sandbox regulatorio. Es esta falta de leyes específicas la que justamente desacelera los procesos con las fintech, que se han visto obligadas a atenerse a leyes financieras que muchas veces no aplican para ellos. Un poco más rezagados Tanto Chile como Perú han demostrado su intención de avanzar en legislaciones fintech. Y es que ambos países cuentan con una alta actividad en la industria. En Chile, la última medición del Fintech Radar de Chile, de Finnovista, contabilizó 112 empresas fintech a mediados de 2019. En Perú, el crecimiento que han tenido este tipo de compañías supera a casi todos sus vecinos, registrando una tasa de avance de 256% entre 2017 y 2018. En mayo de 2019, el Gobierno peruano envió al congreso un proyecto de ley de crowdfunding para ofrecer mayor seguridad a los inversores y protección a los consumidores. El proyecto establece que las plataformas de financiación colectiva solo pueden ser administradas por empresas con sede en Perú y autorizadas por el regulador de valores SMV. Por ahora, es ese frente de las fintech el que tiene regulación en la nación peruana. Un poco más abajo en el continente, Chile lleva casi dos años discutiendo el tema de regular las empresas fintech. En abril de este año, el Gobierno anunció que ingresaría el proyecto de Ley Fintech al congreso a mediados de 2020, en un proceso que sería liderado por el Ministerio de Hacienda. Sin embargo, con el impacto de la pandemia, poco ha pasado en ese aspecto y el Gobierno ha señalado que el tema está detenido. “Nos comentaron que el asunto había sido desplazado, por no ser parte de la lista de prioridades más urgentes”, dice Ángel Sierra, director ejecutivo de la Asociación de Empresas Fintech de Chile (FinteChile). Un win-win Para muchos, una legislación fintech puede ser beneficiosa para los gobiernos. Lo cierto es que, según la experiencia internacional, ha quedado demostrado que una buena regulación puede ser una ganancia para todos. Una Ley Fintech bien desarrollada en cada país: Garantiza y promueve un buen funcionamiento de la industria Protege a los usuarios de estos servicios Fomenta la inversión, ya que para los inversionistas es más seguro arriesgar fondos en un país donde hay un marco regulatorio firme. Si algo ha dejado en claro la pandemia es la necesidad urgente de transitar hacia una economía digital. Empresas como dLocal, Rappi y Kushki están rompiendo esas barreras, donde la regulación juega un rol importante: puede hacerlas despegar o frenarlas en seco. El caso de México es un ejemplo positivo: a dos años de la creación de su Ley Fintech, el país ha registrado una inversión récord de casi US $1.300 millones en 2020, es decir, un 16% de la inversión regional. Además, no hay que olvidar que una industria que crece a este ritmo es un fuerte generador de empleo calificado y dinamismo laboral, cosa que, con los estragos de la pandemia y los más de 41 millones de personas desocupadas en la región, se hace más relevante que nunca. Como Kushki, queremos empujar la evolución de la industria fintech. Por eso, esperamos que la regulación en Latinoamérica acompañe el desarrollo de todas las empresas que, al igual que nosotros, buscan romper paradigmas, acercar los servicios financieros y facilitar la vida de todas las personas que viven en una de las regiones menos bancarizadas hasta ahora.
Avatar img
Magdalena Ovalle
Líder de Comunicaciones Internas @ Kushki
octubre 27, 2020

Wego y Kushki: Las tecnologías de pago que transforman el transporte público

Actualmente el transporte público es un nicho de mercado fragmentado y desatendido en Perú, donde las empresas transportistas no cuentan con infraestructura tecnológica para controlar su operación y gestionar eficientemente el recaudo de su dinero, de acuerdo a Roberto Chavéz, CEO de Wego. Como consecuencia se genera robo del recaudo, pérdida de tiempo contabilizando efectivo diariamente y, debido a la coyuntura actual, el temor de pasajeros y conductores a intercambiar dinero por ser un transmisor del virus COVID-19, además de la disminución en la venta de pasajes. Igualmente, el MTC de Perú, disminuyó en un 80% la afluencia de transporte Público en Lima y el Callao, en marzo del 2020, que se ha ido reactivando exigiendo el cumplimiento de estrictas reglas sanitarias. Por lo que es necesario, especialmente en estos momentos, mantener un control adecuado y eficiente de los ingresos generados, y el uso de pago sin contacto. Por esto nace Wego, una APP diseñada para hacer pago de transporte público a través de códigos QR, apoyado por la suite de medios de pago de Kushki, que busca transformar cultural y digitalmente el transporte público en la región, con el fin de generar un ecosistema de transporte seguro, eficiente y de calidad. Entendiendo el problema Los fundadores de Wego siendo usuarios recurrentes del transporte público en Lima, Perú, deseaban trasladarse de forma eficiente, segura y con calidad. Sin embargo, esto no era un servicio común debido a los procesos manuales y la falta de herramientas tecnológicas por parte de las empresas de transporte, cuyas soluciones actuales no son integrales y no contemplan la operación, recaudación y administración de la flota. Por esto, los fundadores de Wego, con su previa experiencia en transformación digital resolviendo problemas en diferentes industrias, decidieron crear una solución que ayuda a las empresas transportistas a mejorar sus procesos, optimizar sus servicios y permitir que sus pasajeros disfruten de sus viajes diarios de manera cómoda. La digitalización es, y debe ser, transversal Para poder realizar una Transformación Digital en el transporte público, es necesario involucrar a todo el ecosistema. Por ello, Wego decidió crear una solución integral que considera tanto al dueño de bus, como a la empresa de transporte, conductor y pasajero. Convirtiendo un servicio altamente operativo y manual, en uno mucho más eficiente y más rentable. Por otro lado, nuestra plataforma de pagos Kushki les permitió habilitar el pago con tarjeta de crédito y débito, para pagos únicos y recurrentes, así como pago en efectivo, en su herramienta tecnológica que apoya a cada uno de estos jugadores. Así, el empresario transportista tendrá acceso a una plataforma web para monitorear la recaudación de dinero por la venta de cada pasaje o la administración de su flota vehicular. El conductor posee dentro del bus un sistema de cobro y registro de venta de pasajes, mediante un hardware y el pasajero tiene una app en constante actualización con la que podrá pagar pasajes sin contacto y próximamente obtener mucha más información. Lo que genera como resultado que las empresas de transporte sean eficientes, rentables, seguras y brinden un mejor servicio. Pero esto no se queda aquí, la digitalización de pagos en las empresas de transporte público que ahora permiten pagos a través de tecnología QR o NFC en Perú, trae consigo la bancarización inmediata en su proceso de recaudación, lo que facilita el acceso a créditos bancarios para renovar su flota y mantenerse activos en el negocio, en este momento tan difícil para la industria. Ahora las empresas de este sector podrán aprovechar la gran cantidad de datos existentes, que al ser procesados por Wego, les servirán para tomar mejores decisiones, optimizar la operación de su flota vehicular y la gestión de su negocio desde cualquier smartphone o laptop y cualquier localización, acompañándolos en las constantes movilizaciones diarias que deben hacer para sus labores del día, nos comentó Roberto Chavéz. Finalmente, todo esto genera una mejora en la calidad del servicio de transporte público, lo cual es un incentivo para el ciudadano a utilizar el transporte masivo, lo que a su vez genera un impacto directo en la disminución del uso de vehículo privado y en el medio ambiente. Planes de expansión regional R. Chavez asegura que, el sistema de transporte público urbano en países como México, Colombia, Chile y Perú es similar, y debido a la pandemia los pagos sin contacto están teniendo un incremento en su aceptación. Por ello, Wego considera que expandir la solución de un sistema de recaudación electrónica de pagos y administración de flota para el transporte público es viable en los próximos años. Sin embargo, en este momento su objetivo principal es posicionarse en Perú, y luego ir a países como México o Chile, donde estaremos listos para apoyarlos con nuestros productos en su proceso de expansión.
Avatar img
Stella Vargas
Líder de contenido @Kushki
octubre 19, 2020