> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Cuentas de empresa en OAuth

> Permite que un usuario autorice tu app contra una cuenta de empresa — o pre-apruebe permisos para una empresa que está por registrar — y entiende a qué cuenta resuelve realmente un código de autorización.

Un usuario de Fluz puede tener una cuenta personal y una o más cuentas de empresa. Hasta ahora el flujo OAuth siempre se resolvía en la cuenta personal. Ya no es así.

Si tu aplicación atiende a empresas, esta página es la diferencia entre una integración que funciona y una que silenciosamente asocia cada concesión a la cuenta equivocada.

<Info>
  Nada de lo aquí descrito cambia la URL de authorize, el contrato del callback ni el intercambio de token. Lo que cambia es **a qué cuenta queda vinculado el código devuelto** y **qué lista de permisos se usó para construir la pantalla de consentimiento**.
</Info>

***

## Los dos flujos

| Flujo                     | Cuándo ocurre                                                                                             | Contra qué va la concesión                                                                               |
| :------------------------ | :-------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- |
| **Autorización estándar** | El usuario selecciona una cuenta personal o una cuenta de empresa existente                               | Esa cuenta                                                                                               |
| **Registro de empresa**   | El usuario elige solicitar una nueva cuenta de empresa, o tu app es solo para empresas y aún no tiene una | Su cuenta personal, más un conjunto de permisos pre-aprobados para la empresa que se creará poco después |

El segundo flujo existe porque la empresa aún no existe en el momento del consentimiento. El usuario otorga el permiso de registrar una empresa en su cuenta personal y, en el mismo paso, pre-aprueba los permisos de empresa que tu app necesitará una vez que esa empresa exista. Esos permisos pre-aprobados quedan guardados contra el usuario hasta que se cree la empresa.

<Note>
  Un usuario puede ejecutar el flujo de registro de empresa más de una vez desde la misma cuenta personal, pre-aprobando permisos para varias empresas a lo largo del tiempo.
</Note>

***

## Habilitar cuentas de empresa en tu app

Las dos listas de permisos están en la pestaña **Permissions** de tu app, y tú mismo las editas. Consulta [Configure OAuth App](/create-an-o-auth-app). Si el flujo puede resolverse o no en una cuenta personal no está en esa pestaña — lo configura Fluz en tu aplicación.

<Steps>
  <Step title="Completa la lista Business permissions">
    Se edita de forma independiente de la lista **Permissions** de consumidor. **Una lista de empresa no vacía es lo que habilita tu app para empresas** — déjala vacía y a los usuarios nunca se les ofrecerá la opción de solicitar una cuenta de empresa.

    El permiso de registrar una empresa no está disponible en esta lista. Lo otorga la cuenta personal, así que pertenece a la lista de consumidor.
  </Step>

  <Step title="Habilita el permiso de registrar una empresa en la lista Permissions de consumidor">
    Es obligatorio para el flujo de registro de empresa. Sin él ese flujo no puede completarse.
  </Step>

  <Step title="Pide a Fluz que restrinja la app a cuentas de empresa, si lo necesitas">
    Fluz puede configurar tu aplicación para que el flujo nunca se resuelva en una cuenta personal. No es autogestionable: contacta a tu gerente de cuenta de Fluz si tu app solo debe operar sobre cuentas de empresa.

    Omite este paso si tu app atiende tanto a consumidores como a empresas. Sin la restricción, a un usuario sin cuenta de empresa se le ofrece su cuenta personal junto con la opción de solicitar una de empresa, y algunos elegirán la personal.
  </Step>
</Steps>

***

## Cómo se elige la cuenta

Fluz decide entre omitir el selector y mostrarlo. Tu app no controla esto, pero necesitas saber con qué se van a encontrar tus usuarios.

| Situación                                                         | Qué ocurre                                                                                                                             |
| :---------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------- |
| `external_id` ya resuelve a una cuenta de una autorización previa | Se omite el selector. Se reutiliza esa cuenta y, si la autorización anterior fue un flujo de registro de empresa, ese flujo se reanuda |
| Sin cuenta de empresa y la app restringida a cuentas de empresa   | Se omite el selector. Directo al registro de empresa                                                                                   |
| Sin cuenta de empresa y cuentas personales permitidas             | El selector muestra la cuenta personal y, si la app está habilitada para empresas, una opción para solicitar una cuenta de empresa     |
| Tiene cuenta(s) de empresa                                        | El selector las muestra. La cuenta personal se incluye solo cuando las cuentas personales están permitidas                             |
| Ya hay una solicitud de empresa en curso                          | La opción de "solicitar una cuenta de empresa" queda oculta                                                                            |

<Warning>
  El paso de selección de cuenta es la razón por la que no deberías asumir que el código que recibes está vinculado a la cuenta personal del usuario. Lee la cuenta de la respuesta del intercambio y persistela — no la infieras de tus propios registros de quién inició el flujo.
</Warning>

***

## Qué lista de permisos aplica

La pantalla de consentimiento se construye a partir de la configuración de tu app, nunca de la URL de authorize. Cuál de las dos listas usa depende del flujo:

| Flujo                       | La pantalla de consentimiento muestra                                                                                                                    |
| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cuenta personal             | Tus **Permissions** de consumidor                                                                                                                        |
| Cuenta de empresa existente | Tus **Business permissions**                                                                                                                             |
| Registro de empresa         | Ambas, como dos grupos distintos — los permisos de consumidor que se otorgan ahora, y los permisos de empresa que se pre-aprueban para la futura empresa |

En todos los casos la lista es de solo lectura. El usuario acepta todo o no completa la autorización.

Los permisos se validan de nuestro lado contra la lista que aplica al flujo. Cualquier cosa fuera de esa lista se rechaza, no se descarta en silencio.

***

## Usar `external_id` con empresas

`external_id` es único por aplicación y se vincula a una sola cuenta de Fluz en su primer uso. Con las empresas en juego, eso tiene una consecuencia que conviene prever:

* Si un usuario autoriza una cuenta personal bajo `external_id=acct_123`, ese ID queda vinculado a la cuenta personal. No podrás reutilizarlo después para su cuenta de empresa.
* Dale a cada cuenta que quieras rastrear su propio ID externo. Si modelas las empresas por separado en tu propio sistema, usa tu identificador de empresa, no el del usuario propietario.

Consulta [Managing External Reference IDs](/managing-external-reference-ids) para las reglas generales.

***

## Cuentas de empresa en el widget

Cuando tu integración usa el [widget embebido](/developers/widgets), una cuenta de empresa puede ser el contexto activo para **depósito, payout y pay-in**. Dos comportamientos difieren del contexto de consumidor:

* **La verificación de identidad de consumidor (KYC) no aplica.** Un contexto de empresa se verifica mediante verificación de empresa (KYB), y no se muestra ningún aviso de KYC de consumidor.
* **El PIN se define a nivel de usuario.** Un usuario que no ha definido un PIN puede hacerlo desde cualquiera de los dos contextos, y aplica a ambos.

***

## Resolución de problemas

| Síntoma                                                                   | Casi siempre                                                                                                                                                                             |
| :------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| No aparece la opción de solicitar una cuenta de empresa                   | **Business permissions** está vacía, así que la app no está habilitada para empresas — o el usuario ya tiene una solicitud de empresa en curso                                           |
| El flujo de registro de empresa no se completa                            | El permiso de registrar una empresa no está habilitado en la lista **Permissions** de consumidor                                                                                         |
| La autorización se rechaza por un permiso no reconocido                   | Se envió algo que no está en la lista que aplica a ese flujo. Las autorizaciones sobre cuenta personal se validan contra **Permissions**, las de empresa contra **Business permissions** |
| Falla al reutilizar un `external_id`                                      | Ya está vinculado a otra cuenta en esta app                                                                                                                                              |
| La concesión quedó en una cuenta personal cuando esperabas una de empresa | El usuario eligió la cuenta personal. Pide a tu gerente de cuenta de Fluz que restrinja la app a cuentas de empresa si nunca debe aceptar una personal                                   |

***

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Flujo de concesión de cara al cliente" icon="user-check" href="/client-facing-o-auth-grant-flow">
    La URL de authorize, `state` y el callback.
  </Card>

  <Card title="Configurar la app OAuth" icon="sliders" href="/create-an-o-auth-app">
    Dónde viven las dos listas de permisos.
  </Card>

  <Card title="IDs de referencia externos" icon="id-card" href="/managing-external-reference-ids">
    Elegir identificadores de los que no te arrepientas.
  </Card>

  <Card title="Intercambiar un código de autorización" icon="arrow-left-right" href="/exchange-an-o-auth-authorization-code">
    Convierte el código en tokens.
  </Card>
</CardGroup>
