> ## 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.

# Resumen

**Las transferencias de cuenta a cuenta** mueven fondos entre dos cuentas de Fluz utilizando la mutación `createTransfer`. A diferencia de una transferencia interna — que mueve dinero entre dos de tus propias cuentas de gasto — una transferencia de cuenta a cuenta envía dinero a una **cuenta de Fluz diferente**: la de uno de tus usuarios, tu aplicación o entre dos de tus usuarios.

Cada transferencia tiene un flujo de dos pasos: primero identifica al destinatario, luego crea la transferencia.

| Paso                         | Página                                                                               | Propósito                                                                                    |
| ---------------------------- | ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| 1. Encontrar al destinatario | [Búsqueda de destinatario de transferencia de billetera](/features/recipient-lookup) | Resolver un teléfono, correo electrónico o razón social en el ID de cuenta del destinatario. |
| 2. Enviar los fondos         | [Transferir a otra billetera de Fluz](/features/transfer-to-another-fluz-wallet)     | Mover los fondos al destinatario con `createTransfer`.                                       |

<Note>
  **No es lo mismo que una transferencia interna.**

  Para mover dinero entre tus propias cuentas de gasto, usa [Transferir fondos internamente](/features/transfer-between-spend-accounts). Las transferencias de cuenta a cuenta son para mover fondos a una cuenta de Fluz **separada**.
</Note>

***

## Las tres direcciones de transferencia

La misma mutación `createTransfer` admite tres direcciones. Cuál estás realizando se determina por tu método de autenticación y si proporcionas un `destination`.

| Dirección                | Método de autenticación | Remitente     | Uso típico                                                                                   |
| ------------------------ | ----------------------- | ------------- | -------------------------------------------------------------------------------------------- |
| **Usuario → Aplicación** | Bearer token            | El usuario    | Cobrar un pago a un usuario (no se necesita `destination` — se asigna por defecto a tu app). |
| **Aplicación → Usuario** | Basic Auth              | Tu aplicación | Desembolsar fondos a un usuario (se requiere `destination`).                                 |
| **Usuario → Usuario**    | Bearer token            | El usuario    | Mover fondos entre dos de tus usuarios (`destination` establecido al destinatario).          |

<Warning>
  **Las transferencias de cuenta a cuenta requieren una aplicación pública.**

  Las transferencias con Basic Auth (aplicación como remitente) requieren que tu aplicación esté en estado `ACTIVE`. Las aplicaciones personales no pueden enviar vía Basic Auth. El destinatario también debe ser un usuario registrado de tu aplicación.
</Warning>

***

## Paso 1 — Buscar al destinatario

Antes de enviar, resuelve al destinatario a un `accountId` utilizando las queries de búsqueda (ambas requieren el scope `QUERY_RECIPIENT`):

* `lookupUser` — encuentra a una persona por **número de teléfono** (formato E.164) o **correo electrónico**.
* `lookupBusiness` — encuentra a una empresa por **razón social** (coincidencia exacta sin distinción de mayúsculas; busca tanto el nombre registrado como el nombre comercial/DBA).

Si ya almacenaste el `accountId` de Fluz del destinatario — o le asignaste un `externalReferenceId` cuando lo creaste — puedes omitir la búsqueda y pasar ese identificador directamente en el Paso 2.

Consulta [Búsqueda de destinatario de transferencia de billetera](/features/recipient-lookup) para entradas, respuestas y códigos de error.

***

## Paso 2 — Crear la transferencia

Envía los fondos con la mutación `createTransfer`. Como mínimo proporcionas un `idempotencyKey` y un `amount`; el `destination` y la fuente de fondos dependen de la dirección.

* **Identifica al destinatario** por `accountId` o por el `externalReferenceId` que asignaste — proporciona uno, no ambos. Opcionalmente apunta a un `userCashBalanceId` específico en la cuenta del destinatario.
* **Fondea la transferencia** desde el saldo en efectivo del remitente por defecto, o (solo Bearer token) desde un `bankCardId`, `bankAccountId` o `paypalVaultId` vinculados. Solo una fuente de fondos por solicitud.
* **Anota** la transferencia con un `memo`, `transactionCategory` o `attachmentId` opcionales.

Las transferencias con Bearer token (enviadas por el usuario) requieren el scope `MAKE_PAYOUT_TRANSFER_SEND`.

Consulta [Transferir a otra billetera de Fluz](/features/transfer-to-another-fluz-wallet) para la referencia completa de entrada, ejemplos para cada dirección y manejo de errores.

***

## Idempotencia

Cada transferencia debe incluir un `idempotencyKey` único generado por el cliente. Si la misma clave se envía más de una vez, la API devuelve el resultado de la solicitud original en lugar de crear una transferencia duplicada. Las claves son válidas por 10 minutos.

***

## Requisitos de un vistazo

| Operación                                        | Auth                 | Scope                         |
| ------------------------------------------------ | -------------------- | ----------------------------- |
| Buscar un destinatario                           | Bearer token         | `QUERY_RECIPIENT`             |
| Crear una transferencia (enviada por usuario)    | Bearer token         | `MAKE_PAYOUT_TRANSFER_SEND`   |
| Crear una transferencia (enviada por aplicación) | Basic Auth (Api Key) | Aplicación pública / `ACTIVE` |

***

**¿Quieres saber más?** Habla con nuestros expertos para obtener más información o solicitar una demostración.
