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

# Pagos externos

Se usa para enviar dinero desde un saldo en efectivo de Fluz a la cuenta bancaria de un beneficiario externo guardado, a través de ACH.

### Descripción general

Un pago externo mueve dinero **fuera de Fluz** a una cuenta bancaria de EE. UU. que pertenece a otra persona, por ejemplo, un contratista, un proveedor o un amigo. El destinatario no necesita tener una cuenta de Fluz.

Por qué usar pagos externos:

* **Paga a cualquier persona con una cuenta bancaria de EE. UU.** El destinatario solo necesita un número de ruta y un número de cuenta. No tiene que registrarse en Fluz.
* **Paga desde tu saldo de Fluz.** Los fondos provienen de uno de los saldos en efectivo de la cuenta, por lo que no hay un paso de fondeo aparte.
* **Seguro de reintentar.** Cada pago incluye una clave de idempotencia, por lo que un reintento de red nunca envía el dinero dos veces.
* **Costo claro desde el inicio.** La respuesta muestra la comisión y el total debitado del saldo.

Cómo funciona:

1. Guarda la cuenta bancaria del destinatario como beneficiario con [`createExternalPayee`](https://docs.fluz.app/features/external-payees).
2. Llama a `createExternalPayout` con el beneficiario, el saldo en efectivo de origen y el monto.
3. Fluz debita el saldo en efectivo de inmediato y devuelve el pago con el estado `PENDING`.
4. El dinero se envía al banco del destinatario en el siguiente archivo ACH estándar.

Una operación envía los pagos:

* `createExternalPayout` - Enviar dinero a un beneficiario externo

> [!NOTE]
>
> Los pagos externos sirven para enviar dinero a cuentas bancarias de **otras personas**. Para mover dinero a la cuenta bancaria del propio usuario, usa [retiros](https://docs.fluz.app/features/move-funds-with-external-accounts.md). Para enviar dinero a otra cuenta de Fluz, usa [Transferencias de cuenta a cuenta](https://docs.fluz.app/features/account-to-account-transfers.md).

***

### createExternalPayout

Envía dinero desde uno de los saldos en efectivo del usuario autenticado a un beneficiario externo a través de ACH.

#### Mutación (CreateExternalPayoutInput)

```graphql theme={null}
createExternalPayout(input: CreateExternalPayoutInput!): ExternalPayoutResult
```

**Requiere**: alcance `MAKE_PAYOUT_TRANSFER_SEND`.

#### Entrada

| Campo | Tipo | Requerido | Descripción |
| :- | :- | :- | :- |
| idempotencyKey | UUID! | Sí | Una clave única para este pago. Reutiliza la misma clave solo cuando reintentes la misma solicitud. |
| externalPayeeId | UUID! | Sí | El beneficiario al que se le paga. Debe pertenecer a la cuenta del usuario autenticado. |
| sourceCashBalanceId | UUID! | Sí | El saldo en efectivo que se debita. Debe pertenecer a la cuenta del usuario autenticado y estar activo. |
| amount | Float! | Sí | El monto que recibe el beneficiario, en USD. Mayor que 0, con un máximo de dos decimales. La comisión se cobra además de este monto. |

#### Respuesta (ExternalPayoutResult)

| Campo | Tipo | Descripción |
| :- | :- | :- |
| transferId | ID! | El ID del pago |
| externalPayeeId | ID! | El beneficiario al que se le pagó |
| amount | Float! | El monto que recibe el beneficiario |
| fee | Float! | La comisión que se cobra además del monto |
| totalDebited | Float! | `amount + fee`. El total que se toma del saldo en efectivo de origen. |
| status | ExternalPayoutStatus! | Siempre es `PENDING` cuando se crea el pago |

#### Ejemplo

```graphql theme={null}
mutation {
  createExternalPayout(
    input: {
      idempotencyKey: "550e8400-e29b-41d4-a716-446655440020"
      externalPayeeId: "3f1c2b7e-8d4a-4c1e-9f2a-6b5d4e3c2a10"
      sourceCashBalanceId: "aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee"
      amount: 100.00
    }
  ) {
    transferId
    externalPayeeId
    amount
    fee
    totalDebited
    status
  }
}
```

**Éxito:**

```json theme={null}
{
  "data": {
    "createExternalPayout": {
      "transferId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "externalPayeeId": "3f1c2b7e-8d4a-4c1e-9f2a-6b5d4e3c2a10",
      "amount": 100,
      "fee": 1.5,
      "totalDebited": 101.5,
      "status": "PENDING"
    }
  }
}
```

*La comisión de este ejemplo es solo ilustrativa. Usa siempre los valores de `fee` y `totalDebited` que se devuelven en la respuesta.*

**Saldo insuficiente:**

```json theme={null}
{
  "errors": [
    {
      "message": "The sender does not have sufficient balance to complete this transfer.",
      "extensions": { "code": "PT-0007" }
    }
  ]
}
```

#### Códigos de error

| Código | Descripción |
| :- | :- |
| ARG-0002 | Falta un campo obligatorio, o `amount` no es mayor que 0 |
| ARG-0001 | Entrada no válida. Por ejemplo: `idempotencyKey` no es un UUID, el beneficiario no se encontró o no se puede usar para un pago, el saldo en efectivo de origen no está activo, o la clave de idempotencia ya se usó para una solicitud distinta. |
| PT-0001 | Se superó el límite diario de pagos |
| PT-0002 | Se superó el límite semanal de pagos |
| PT-0003 | Se superó el límite mensual de pagos |
| PT-0004 | Se superó el límite anual de pagos |
| PT-0005 | El monto es inferior al monto mínimo de pago |
| PT-0006 | El monto es superior al monto máximo de pago |
| PT-0007 | No hay saldo suficiente para cubrir el monto más la comisión |
| PT-0008 | Una parte del saldo aún se está liberando. Reduce el monto e inténtalo de nuevo. |
| G-0003 | El envío de dinero a cuentas bancarias externas no está habilitado en esta cuenta, o no se pudo autorizar el pago |
| G-0004 | No se pudo completar el pago |
| G-0001 | Error del servidor |

***

### Estado del pago

`ExternalPayoutStatus` enumera los posibles estados de un pago.

| Estado | Descripción |
| :- | :- |
| PENDING | El pago se creó y el saldo se debitó. El dinero aún no ha salido de Fluz. |
| PROCESSING | El pago se está procesando |
| COMPLETED | El pago se completó |
| FAILED | El pago falló |
| FAILED\_INITIAL | El pago falló cuando se envió por primera vez |
| CANCELED | El pago se canceló antes de enviarse |
| REFUNDED | El monto del pago se devolvió al saldo en efectivo |
| RETURNED | El banco del destinatario devolvió el pago |

`createExternalPayout` siempre devuelve `PENDING`. Por ahora, la API no ofrece una consulta para ver el estado de un pago después de crearlo.

***

### Notas importantes

#### Fondos y plazos

* El saldo en efectivo se debita por `totalDebited` en cuanto la mutación se completa correctamente.
* Los pagos usan ACH estándar. El ACH del mismo día y el ACH acelerado no están disponibles.
* El dinero sale de Fluz en el siguiente archivo ACH. El tiempo que tarda en llegar al destinatario depende del procesamiento ACH y del banco del destinatario.

#### Comisiones y límites

* Fluz fija la comisión y se suma al `amount`. El destinatario recibe el `amount` completo.
* Los límites diario, semanal, mensual y anual, además de los montos mínimo y máximo, se aplican por cuenta. Cuando se alcanza un límite, la solicitud falla con un código de error `PT-`.
* Los fondos que aún se están liberando no se pueden enviar.

#### Idempotencia

* Envía un UUID nuevo por cada pago nuevo.
* Si una solicitud agota el tiempo de espera, reinténtala con la **misma** clave y la misma entrada. Obtienes el resultado original y el dinero no se envía dos veces.
* Se rechaza una clave usada con un monto, un saldo de origen o un beneficiario distintos.
* Las claves de idempotencia se comparten entre todos los tipos de transferencia. Una clave que ya se usó para otro tipo de transferencia no se puede reutilizar aquí.

#### Beneficiarios

* El beneficiario debe estar activo en la cuenta. No se puede pagar a beneficiarios eliminados.
* Algunas cuentas bancarias no pueden recibir pagos. En ese caso, la solicitud falla con `ARG-0001`.

#### Pagos devueltos

* Si el banco del destinatario rechaza el pago, por ejemplo porque la cuenta está cerrada, el dinero se devuelve al saldo en efectivo de origen.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.