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
400con{ "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: 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):
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:nullhasta que el pago se liquida; después, el detalle de lo que se llevó cada cuenta.
{
"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
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.