Desde tu sistema · Pago dividido (piloto)
Docs · Desde tu sistema Descargar .md

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: 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:

CampoQué es
cuentaLa cuenta que recibe: tipo (cuenta o telefono), valor, banco (código de 4 dígitos), identificacion y nombre (hasta 40 caracteres)
porcentajePorcentaje del neto, mayor que 0 y hasta 100, con 2 decimales como máximo
montoMonto 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.

HTTPerrorCuándo
400split_no_disponibleEl pago dividido no está activo para tu cuenta
400split_invalidoFalta un dato de la cuenta, viene porcentaje y monto a la vez (o ninguno), o un campo desconocido. detail dice cuál
400split_max_beneficiariosMás de 5 beneficiarios
400 o 422split_excede_netoLos porcentajes suman más de 100 (400), o el reparto pasa del neto de ese monto después de la comisión (422)
422split_requiere_liquidacion_inmediataTu cuenta no tiene liquidación inmediata
400split_cuenta_no_preaprobadaUna de las cuentas no está entre las que aprobaste en el portal. detail dice cuál (split[1]: …)
400split_beneficiario_bloqueadoUn control de seguridad no permite pagarle a una de las cuentas, o esa cuenta pasa el tope diario por beneficiario. detail dice cuál
503split_no_disponible_ahoraNo 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énReglaRecibe
Socio Uno30 %Bs 29,70
Socio DosBs 10 fijosBs 10,00
Túel restoBs 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

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.