# Pago dividido

> **En piloto.** El pago dividido está detrás de una bandera y todavía no está activo para todos los comercios. Si lo pides y no está activo para tu cuenta, crear el enlace responde `400` con `{ "error": "split_no_disponible" }` y no se crea nada. Escríbenos para entrar al piloto.

Un enlace de pago puede repartir lo que te llega de ese pago entre **hasta 5 cuentas además de la tuya**: por porcentaje o por monto fijo. Lo que sobra es tuyo.

El reparto se hace **sobre el neto**: lo que pagó tu cliente (con la propina, si agregó una) menos la comisión. Corre con la [liquidación inmediata](/developers/comisiones-y-liquidacion): tu cuenta necesita tenerla activa.

## Antes de empezar: aprueba las cuentas

Sólo se reparte a cuentas que **tú aprobaste en el portal**, en **Ajustes → Cuentas para pago dividido** (hasta 20). Una cuenta que no esté ahí se rechaza al crear el enlace con `400` `split_cuenta_no_preaprobada`.

Es una protección: las cuentas aprobadas sólo se cambian desde el portal, no con tu llave. Si alguien llegara a tener tu llave, no podría mandar tu dinero a una cuenta suya.

La cuenta del enlace tiene que coincidir con la aprobada en tipo, banco, número y cédula o RIF del titular.

## Crear un enlace con reparto

Agrega `split` al crear el enlace (`POST /switch/v1/links`):

```bash
curl -s https://pay.pagaconquickpay.com/switch/v1/links \
  -H "x-switch-key: $QP_KEY" -H "content-type: application/json" \
  -d '{
    "monto": 100,
    "concepto": "Pedido 1234",
    "split": [
      { "cuenta": { "tipo": "cuenta", "valor": "01020000000000000001", "banco": "0102", "identificacion": "V00000000", "nombre": "Socio Uno" }, "porcentaje": 30 },
      { "cuenta": { "tipo": "cuenta", "valor": "01020000000000000002", "banco": "0102", "identificacion": "V00000000", "nombre": "Socio Dos" }, "monto": 10 }
    ]
  }'
```

Cada elemento de `split` lleva:

| Campo | Qué es |
|---|---|
| `cuenta` | La cuenta que recibe: `tipo` (`cuenta` o `telefono`), `valor`, `banco` (código de 4 dígitos), `identificacion` y `nombre` (hasta 40 caracteres) |
| `porcentaje` | Porcentaje del neto, mayor que 0 y hasta 100, con 2 decimales como máximo |
| `monto` | Monto fijo en la moneda del enlace, con 2 decimales como máximo |

Cada beneficiario lleva `porcentaje` **o** `monto`, no los dos. La respuesta de crear trae el mismo `split` que guardamos.

Todo se valida al crear el enlace y queda fijo: un enlace no se edita, así que para cambiar el reparto se cancela y se crea otro.

| HTTP | `error` | Cuándo |
|---|---|---|
| 400 | `split_no_disponible` | El pago dividido no está activo para tu cuenta |
| 400 | `split_invalido` | Falta un dato de la cuenta, viene `porcentaje` y `monto` a la vez (o ninguno), o un campo desconocido. `detail` dice cuál |
| 400 | `split_max_beneficiarios` | Más de 5 beneficiarios |
| 400 o 422 | `split_excede_neto` | Los porcentajes suman más de 100 (400), o el reparto pasa del neto de ese monto después de la comisión (422) |
| 422 | `split_requiere_liquidacion_inmediata` | Tu cuenta no tiene liquidación inmediata |
| 400 | `split_cuenta_no_preaprobada` | Una de las cuentas no está entre las que aprobaste en el portal. `detail` dice cuál (`split[1]: …`) |
| 400 | `split_beneficiario_bloqueado` | Un control de seguridad no permite pagarle a una de las cuentas, o esa cuenta pasa el tope diario por beneficiario. `detail` dice cuál |
| 503 | `split_no_disponible_ahora` | No pudimos revisar las cuentas en ese momento. No se creó nada: intenta de nuevo en unos minutos |

## Cómo se reparte

En el ejemplo, con una comisión del 1 %, el neto de Bs 100 es Bs 99:

| Quién | Regla | Recibe |
|---|---|---|
| Socio Uno | 30 % | Bs 29,70 |
| Socio Dos | Bs 10 fijos | Bs 10,00 |
| Tú | el resto | Bs 59,30 |

- **Los montos se fijan con el neto de ese pago.** Si cuando se liquida el neto no alcanza para el reparto (por ejemplo, porque la comisión cambió después de crear el enlace), no se le paga a nadie: el pago queda en revisión y lo resolvemos contigo.
- **Redondeo:** cada porcentaje se calcula en céntimos y se redondea hacia abajo. El céntimo que sobra es tuyo. Si un porcentaje da menos de un céntimo, esa parte no se paga.
- **Cuándo:** sólo cuando el banco confirma que el pago de tu cliente entró, igual que tu liquidación. Mientras tanto, nadie recibe nada.
- **Una sola vez:** cada pago del reparto tiene su propio identificador y no se repite. Si un pago a un beneficiario no tiene una respuesta clara del banco, queda en revisión y no se reintenta solo.
- **Se revisa otra vez antes de pagar:** entre que creas el enlace y que el pago se liquida pueden pasar horas. Justo antes de pagarle a cada cuenta volvemos a revisar que siga aprobada, que ningún control de seguridad la frene y que no pase el tope diario por beneficiario. Si algo falla, esa parte queda en revisión y no se paga sola; las demás siguen.
- **En revisión:** una persona de nuestro equipo la resuelve con el banco: la paga, la da por pagada con la referencia bancaria o la cierra sin pagar (con una nota). Si se cierra sin pagar, ese monto no sale de nuestra cuenta y lo resolvemos contigo.

## Ver el reparto

`GET /switch/v1/links/:id` de un enlace con reparto trae, además de lo de siempre:

- `split`: las reglas que mandaste al crearlo.
- `reparto`: `null` hasta que el pago se liquida; después, el detalle de lo que se llevó cada cuenta.

```json
{
  "split": [ "…las reglas…" ],
  "reparto": {
    "estado": "repartido",
    "moneda": "VES",
    "monto_comercio": 59.3,
    "monto_repartido": 39.7,
    "beneficiarios": [
      { "banco": "0102", "tipo": "cuenta", "ultimos4": "0001", "nombre": "Socio Uno", "porcentaje": 30, "monto_fijo": null,
        "monto": 29.7, "estado": "pagado", "referencia_bancaria": "70000001", "liquidacion_txn_id": "…" }
    ]
  }
}
```

`reparto.estado` es `pendiente` (falta pagar alguna parte), `repartido` (todo pagado), `en_revision` (algo lo está revisando una persona) o `cerrado` (terminó, pero alguna parte se cerró sin pagar). Cada beneficiario tiene `estado` `pendiente`, `pagado`, `en_revision`, `sin_monto` (su parte dio menos de un céntimo) o `descartado` (se cerró sin pagarle). Las cuentas van enmascaradas: banco, tipo, últimos 4 dígitos y nombre.

En el portal, el detalle de cada transacción con reparto muestra lo mismo.

## El aviso `link.acreditado`

Con reparto, `link.acreditado` llega **cuando todo el reparto terminó** (no antes): cada parte pagada, o cerrada sin pagar por una persona. Trae:

- `monto_acreditado`: lo que llegó a **tu** cuenta (el resto).
- `reparto`: el mismo detalle de arriba.

Si el reparto se llevó todo el neto, no hay transferencia a tu cuenta: `monto_acreditado` es `0` y `liquidacion_txn_id` es el id del pago de tu cliente. → [Webhooks](/developers/webhooks-referencia)

## Reintegros

Con tu llave en vivo (`sk_live`), `POST /switch/v1/reintegro` responde **403 `reintegro_no_habilitado`**. Con tu llave de prueba (`sk_test`) funciona como se describe aquí.

Si el reparto ya le pagó (o está pagándole) a algún beneficiario, `POST /switch/v1/reintegro` de ese pago responde **409 `cobro_con_split_repartido`**: devolverle todo a tu cliente sería pagar dos veces. Escríbenos y lo resolvemos.

Si el reintegro se hace antes de que se reparta, el reparto se detiene y queda en revisión.

## En modo prueba

Con una `sk_test_` el reparto se simula: no se transfiere nada, y el aviso `link.acreditado` (con `mode: "test"`) trae el `reparto` calculado igual que en producción. Las cuentas también tienen que estar aprobadas en el portal, así ves el mismo rechazo que verás en producción.
