Para información detallada sobre entornos (Sandbox y Producción), consulta la página dedicada:
SPIDI utiliza webhooks para notificar en tiempo real sobre eventos importantes (pagos completados, sesiones expiradas, etc.). Para información completa sobre:
Consulta la página dedicada:
Permite autenticar un usuario en el sistema SPIDI utilizando credenciales de acceso. Este endpoint es fundamental para obtener el token de autorización necesario para realizar operaciones posteriores en la API.
short_name y password).Una vez autenticado exitosamente, el token JWT debe incluirse en el header Authorization: Bearer {token} de todas las requests posteriores a la API.
| short_name required | string Nombre de usuario o identificador único del comercio. |
| password required | string Contraseña de acceso del usuario. |
{- "short_name": "spidiusuario1",
- "password": "clavesecreta"
}{- "token": "eyJhbGciOiJlUzI1NilsInR5cCI6IkpXVCJ9.eyJzaG9ydF9uYW1lljoiZGInaXRlbClslmlhdCI6MTc2MDY0NTU4OCwiZXhwljoxNzYwNjQ2MTg4fQ.ZZaXHRfa57i4frCFIKLsRHU9Z7tI7JfU_o-TbEcwkN8"
}Permite crear un nuevo agreement de pago que define las reglas de distribución y liquidación de las transacciones.
immediate_debit, crypto, mobile_payment).split:false: No aplica distribución; el owner recibe el 100 % del pago.true: Usa porcentajes predefinidos que se aplican de manera uniforme en todas las transacciones. Solo se definen las participaciones de los terceros receptores; la diferencia restante se asigna automáticamente al owner, quien siempre debe recibir una parte del pago.Una vez creado, el agreement puede emplearse en múltiples sesiones de pago, asegurando consistencia en la distribución, control sobre la liquidación bancaria, y trazabilidad completa en todos los movimientos de fondos.
| title required | string Título visible. |
| description | string or null <= 500 characters Descripción del acuerdo o del concepto de pago asociado a una sesión. |
required | object |
| default_bank_account_id required | string <uuid> UUID de la cuenta bancaria por defecto que se utilizará para la liquidación. |
Array of objects or null (En Desarrollo) Reglas de acuerdo. En caso de usar origin_bank_code y destination_bank_account_id, se aplicará una regla de ruteo por banco de origen. Cada regla define a qué cuenta bancaria se debe enviar el dinero según el banco del pagador. | |
| split required | boolean Modo de split: false (sin distribución) o true (permite split por sesión). |
{- "title": "Acuerdo sin Split",
- "description": "Sin distribución de fondos",
- "split": false,
- "payment_methods": {
- "immediate_debit": true,
- "crypto": false,
- "mobile_payment": true
}, - "default_bank_account_id": "uuid_sofitasa_001",
- "rules": [
- {
- "origin_bank_code": "0105",
- "destination_bank_account_id": "uuid_mercantil_007"
}
]
}{- "success": true,
- "data": {
- "agreement_id": "agr_none_01",
- "title": "Acuerdo sin Split",
- "type": "button",
- "description": "Sin distribución de fondos; el owner recibe el 100% de los pagos",
- "split": false,
- "payment_methods": {
- "immediate_debit": true,
- "crypto": false,
- "mobile_payment": true
}, - "default_bank_account_id": "uuid_sofitasa_001",
- "rules": [
- {
- "origin_bank_code": "0105",
- "destination_bank_account_id": "uuid_mercantil_007"
}
], - "status": "active",
- "created_at": "2024-01-15T10:30:00Z",
- "created_by": "user_123"
}
}Permite crear una sesión de pago a través del botón de pago de SPIDI.Incluye el agreement_id para determinar las reglas de liquidación y split.
| agreement_id required | string or null <uuid> Identificador único del acuerdo de liquidación. Debe ser UUID v4. |
| amount_reference required | number <double> Monto de referencia en la moneda especificada en currencyReference con 2 decimales. |
| currency_reference required | string Enum: "USD" "EUR" "COP" "USDT" "VES" Moneda de referencia que se fija para el pago. Usada para calcular el monto en bolívares con la tasa vigente. |
| identifier_label required | string or null Etiqueta que indica cómo debe interpretarse el valor enviado en identifier (ej. 'Nro de orden'). |
| identifier required | string Identificador del pagador, interpretado según el valor de identifier_label. Ejemplo: Nro de orden, Nombre, etc. |
| description required | string or null <= 500 characters Descripción del acuerdo o del concepto de pago asociado a una sesión. |
| success_url required | string or null <uri> ^[a-z1-9]+://[^\s]*$ URL de redirección que se utiliza cuando un intento de pago es exitoso. |
| failure_url required | string or null <uri> ^[a-z1-9]+://[^\s]*$ URL de redirección que se utiliza cuando un intento de pago falle. |
| webhook_url | string or null <uri> URL para recibir notificaciones de webhook. |
object or null Configuración de división de pagos (Request) / Eco del request del split (Response). | |
Array of objects Configuración dinámica opcional para personalizar la experiencia comercial del botón de pago. | |
| duration_minutes | integer or null [ 5 .. 20 ] Duración en minutos de la sesión. |
{- "agreement_id": "2432434",
- "amount_reference": 50,
- "currency_reference": "USD",
- "identifier_label": "Nombre del cliente",
- "identifier": "Juan Pérez",
- "description": "Pago de membresía",
- "duration_minutes": 5
}{- "success": true,
- "message": "Payment session created successfully.",
- "data": {
- "session_id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "session_origin": "button",
- "payment_url": "{{base_url}}/?id=3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "currency_reference": "USD",
- "amount_reference": 50,
- "identifier_label": "Nombre del cliente",
- "identifier": "Juan Pérez",
- "description": "Pago de membresía",
- "created_at": "2025-10-13T14:10:00Z"
}
}Este endpoint permite consultar el estado actual de una sesión de pago y sus datos esenciales, generada mediante una solicitud de pago o botón de pago.
Este endpoint es la fuente oficial y confiable para verificar si la sesión de pago fue completada con éxito (paid), rechazada (failed), expirada (expired) o está pendiente (pending).
Una sesión de pago puede crearse mediante un Botón de pago o una Solicitud de pago, cada una con su propio endpoint de creación. Sin embargo, para consultar una sesión de pago —sin importar cómo haya sido creada— se utiliza el mismo endpoint de consulta. En la respuesta, existe un campo session_origin que revelará si fue creada por botón de pago (button) o por solicitud (request).
En los casos donde la sesión fue creada a través de un Botón de pago, el campo status puede tener un valor adicional: failed.
No asumas paid solo por redirección; consulta este endpoint desde tu servidor antes de liberar servicios o productos.
Tras paid, la liquidación al receptor puede tardar unos segundos; en ese caso receiver_credits y receiver_credits_summary pueden venir null temporalmente.
Independientemente de si la liquidación al receptor aún no ha ocurrido, se considera en todo su concepto amplio que el pago fue realizado exitosamente, por lo que se debe continuar con la entrega del servicio o producto sin ningún problema.
La liquidación al receptor es un proceso interno y, aunque puede demorar pocos segundos o hasta 2 minutos, no existe riesgo de fallo. En los términos y condiciones se especifica esta garantía, que constituye un derecho causado e irrevocable según los términos acordados.
Por lo tanto: En caso de que tengas control, no retengas ni retrases la prestación del servicio al pagador mientras esperas la liquidación.
Si necesitas mostrar o procesar datos de la liquidación, consulta el endpoint de status periódicamente hasta que los campos de receiver_credits estén presentes.
Opcionalmente, si implementaste un webhook, recibirás una notificación automática en tu API cuando la liquidación se haya completado y los datos estén disponibles (eventos payment.paid / payment.settled).
Recuerda que se incluye el URL del comprobante exitoso (spidi_transaction_url), que debe ser mostrado al usuario de una forma u otra.
payment_method es "crypto", el objeto crypto_details contendrá información específica del pago criptopayment_method es distinto a "crypto", entonces crypto_details será null"paid_pending", entonces los objetos payment_details, receiver_credits y receiver_credits_summary estarán presentes con valores nullreceiver_credits tiene un solo elementoreceiver_creditspending: Sesión creada, esperando que el usuario complete el pagopaid: Pago completado exitosamenteexpired: Sesión expirada por inactividad o manualmentefailed: Pago fallido (solo para sesiones creadas con botón de pago)| session_id required | string <uuid> Example: 3ddc4cfb-c09a-43de-92c1-e4a069732e90 ID de la sesión de pago generada |
{- "success": true,
- "message": "Successful query.",
- "data": {
- "session_id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "session_origin": "button",
- "agreement_id": "c4cfb-c-43deb-c09a-4-92c109a",
- "status": "pending",
- "currency_reference": "USD",
- "amount_reference": 50.01,
- "identifier_label": "Nombre y Apellido",
- "identifier": "Federico Coppola",
- "description": "",
- "created_at": "2025-09-18T20:45:00Z",
- "session_payment": {
- "user_message": "Esperando que completes el pago",
- "due_date_session": "2025-10-31T23:59:59Z",
- "due_date_reached_behavior": "expire",
- "late_notice_message": null
}
}
}Este endpoint permite consultar el estado actual de una sesión de pago y sus datos esenciales, generada mediante una solicitud de pago o botón de pago.
Este endpoint es la fuente oficial y confiable para verificar si la sesión de pago fue completada con éxito (paid), rechazada (failed), expirada (expired) o está pendiente (pending).
Una sesión de pago puede crearse mediante un Botón de pago o una Solicitud de pago, cada una con su propio endpoint de creación. Sin embargo, para consultar una sesión de pago —sin importar cómo haya sido creada— se utiliza el mismo endpoint de consulta. En la respuesta, existe un campo session_origin que revelará si fue creada por botón de pago (button) o por solicitud (request).
En los casos donde la sesión fue creada a través de un Botón de pago, el campo status puede tener un valor adicional: failed.
No asumas paid solo por redirección; consulta este endpoint desde tu servidor antes de liberar servicios o productos.
Tras paid, la liquidación al receptor puede tardar unos segundos; en ese caso receiver_credits y receiver_credits_summary pueden venir null temporalmente.
Independientemente de si la liquidación al receptor aún no ha ocurrido, se considera en todo su concepto amplio que el pago fue realizado exitosamente, por lo que se debe continuar con la entrega del servicio o producto sin ningún problema.
La liquidación al receptor es un proceso interno y, aunque puede demorar pocos segundos o hasta 2 minutos, no existe riesgo de fallo. En los términos y condiciones se especifica esta garantía, que constituye un derecho causado e irrevocable según los términos acordados.
Por lo tanto: En caso de que tengas control, no retengas ni retrases la prestación del servicio al pagador mientras esperas la liquidación.
Si necesitas mostrar o procesar datos de la liquidación, consulta el endpoint de status periódicamente hasta que los campos de receiver_credits estén presentes.
Opcionalmente, si implementaste un webhook, recibirás una notificación automática en tu API cuando la liquidación se haya completado y los datos estén disponibles (eventos payment.paid / payment.settled).
Recuerda que se incluye el URL del comprobante exitoso (spidi_transaction_url), que debe ser mostrado al usuario de una forma u otra.
payment_method es "crypto", el objeto crypto_details contendrá información específica del pago criptopayment_method es distinto a "crypto", entonces crypto_details será null"paid_pending", entonces los objetos payment_details, receiver_credits y receiver_credits_summary estarán presentes con valores nullreceiver_credits tiene un solo elementoreceiver_creditspending: Sesión creada, esperando que el usuario complete el pagopaid: Pago completado exitosamenteexpired: Sesión expirada por inactividad o manualmentefailed: Pago fallido (solo para sesiones creadas con botón de pago)| session_id required | string <uuid> Example: 3ddc4cfb-c09a-43de-92c1-e4a069732e90 ID de la sesión de pago generada |
{- "success": true,
- "message": "Successful query.",
- "data": {
- "session_id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "session_origin": "button",
- "agreement_id": "c4cfb-c-43deb-c09a-4-92c109a",
- "status": "pending",
- "currency_reference": "USD",
- "amount_reference": 50.01,
- "identifier_label": "Nombre y Apellido",
- "identifier": "Federico Coppola",
- "description": "",
- "created_at": "2025-09-18T20:45:00Z",
- "session_payment": {
- "user_message": "Esperando que completes el pago",
- "due_date_session": "2025-10-31T23:59:59Z",
- "due_date_reached_behavior": "expire",
- "late_notice_message": null
}
}
}Permite crear una o múltiples sesiones de pago en forma de batch para solicitudes de pago. Cada item del batch contiene los campos de una sesión de pago más campos específicos para el manejo de vencimientos y notificaciones tardías.
| continue_on_error required | boolean or null Default: false Indica si el procesamiento debe continuar con el resto de los ítems aunque alguno falle en operaciones de batch.
|
required | Array of objects non-empty Array de objetos con los datos de cada sesión de pago a crear. |
{- "continue_on_error": true,
- "items": [
- {
- "title": "israeldavidvm",
- "currency_reference": "USD",
- "amount_reference": 100,
- "agreement_id": "agr_5dc73cf74215ae4d",
- "identifier_label": "Nombre Cliente",
- "identifier": "Rafael",
- "description": "Pago Batch 1",
- "due_date_session": "2026-12-31T23:59:59Z",
- "due_date_reached_behavior": "keep_active",
- "late_notice_message": "Pago vencido",
- "internal_reference": "REF-001",
- "success_url": "miapp://pago/exitoso",
- "failure_url": "miapp://pago/fallido",
}
]
}{- "success": true,
- "message": "Payment sessions created successfully.",
- "data": {
- "processed_count": 1,
- "successful_count": 1,
- "failed_count": 0,
- "items": [
- {
- "session_origin": "request",
- "session_id": "9896eec6-5448-4948-94dc-eec29735585f",
- "payment_qr": "data:image/png;base64,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",
- "currency_reference": "USD",
- "amount_reference": 100,
- "identifier_label": "Nombre Cliente",
- "identifier": "Rafael",
- "title": "israeldavidvm",
- "description": "Pago Batch 1",
- "due_date_session": "2026-12-31T23:59:59Z",
- "due_date_reached_behavior": "keep_active",
- "late_notice_message": "Pago vencido",
- "internal_reference": "REF-001",
- "created_at": "2026-03-10T17:54:58.000Z"
}
], - "errors": [ ]
}
}Fuerza el cierre de una sesión de pago que se encuentra en estado pendiente.
PENDING, pasa a EXPIRED inmediatamente.EXPIRED no hace nada.PAID, NO puede expirarse (regla de negocio - retorna error 422).Si la sesión estaba asociada como activa en una Parada SPIDI, al pasar a expired deja de estar activa y queda en el histórico de la parada, por lo que el usuario podrá ver el mensaje que se le deja en user_message.
No necesitas llamar a /payment-stops/payment-sessions/batch con un item con op = remove; al expirar, la sesión sale sola del conjunto activo de cualquier parada a la que esté asociada (queda en histórico).
Usa message_audit para auditoría (quién, cuándo, por qué).
| session_id required | string <uuid> UUID único de la sesión de pago a invalidar. |
| category required | string Enum: "INCORRECT_DATA" "ALTERNATIVE_PAYMENT_RECEIVED" "OTHER" Clasificación técnica obligatoria. Permite segmentar el motivo de cancelación para análisis de conversión y auditoría. Definiciones:
|
| message_audit | string or null Nota de auditoría interna. Espacio para justificaciones técnicas o administrativas. Este contenido no es visible para el cliente final y se utiliza exclusivamente para trazabilidad recomienda usarlo con esta estructura: (quién, cuándo, por qué). |
| message_user | string or null Mensaje para el usuario final cuado por ejemplo el administrador necesita dar una instrucción específica. |
{- "category": "INCORRECT_DATA",
- "message_audit": "La orden se habia generado de forma automatizada pero el usuario liquido la la sesión en nuestra sucursal por medio de pagos en efectivo.",
- "message_user": "Sesión cancelada por pago en efectivo"
}{- "success": true,
- "message": "Session status expired.",
- "data": {
- "session_id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "status": "expired",
- "category": "ALTERNATIVE_PAYMENT_RECEIVED",
- "message_user": "El pago fue expirado forzosamente por que el usuario pago por otro medio.",
- "processed_at": "2026-05-06T17:15:00Z"
}
}Las Paradas SPIDI son espacios únicos y permanentes asociados a cada cliente, donde este puede consultar, gestionar y pagar todas sus solicitudes de pago activas o históricas, sin necesidad de recibir nuevos enlaces cada vez.
Beneficios clave:
Estados de una Parada:
Lista todas las paradas (stops) del comercio autenticado, con soporte de búsqueda y filtros (por estado, título, referencia interna) y paginación. Es útil para construir listados administrativos, buscadores y reportes.
| status | string Enum: "active" "disabled" Example: status=active Filtra por estado de la parada |
| q | string Example: q=caja Búsqueda por texto en stop_title y/o internal_reference (contiene) |
| internal_reference | string Example: internal_reference=caja_001 Filtra por coincidencia exacta de la referencia interna |
| from_date | string <date-time> Example: from_date=2025-01-01T00:00:00Z ISO 8601 (UTC). Devuelve paradas creadas desde esta fecha/hora (inclusive) |
| to_date | string <date-time> Example: to_date=2025-12-31T23:59:59Z ISO 8601 (UTC). Devuelve paradas creadas hasta esta fecha/hora (inclusive) |
| limit | integer [ 1 .. 200 ] Default: 50 Example: limit=20 Máximo de elementos a devolver |
| offset | integer >= 0 Default: 0 Example: offset=0 Desplazamiento para paginación |
| sort | string Default: "created_desc" Enum: "created_desc" "created_asc" "updated_desc" "updated_asc" Example: sort=created_desc Orden de los resultados |
{- "success": true,
- "message": "Payment stops retrieved successfully.",
- "data": {
- "total": 2,
- "limit": 20,
- "offset": 0,
- "items": [
- {
- "stop_id": "stp_92f3a5e1-1c9f-4a23-bbcd-6d42b0a0a9f4",
- "internal_reference": "caja_001",
- "stop_title": "Caja Principal",
- "empty_state_message": "No hay pagos disponibles en este momento.",
- "status": "active",
- "created_at": "2025-09-27T14:05:21Z",
- "updated_at": "2025-09-30T10:12:34Z",
- "links_active_count": 1
}, - {
- "stop_id": "stp_a12f34cd-56ef-78ab-90cd-12ef34ab56cd",
- "internal_reference": "condominio_torre_a",
- "stop_title": "Condominio Torre A",
- "empty_state_message": "No existen deudas registradas.",
- "status": "disabled",
- "created_at": "2025-08-12T09:31:10Z",
- "updated_at": "2025-09-01T08:15:00Z",
- "links_active_count": 0
}
]
}
}Crea una o múltiples Paradas SPIDI en un mismo request.
Las Paradas SPIDI son espacios únicos y permanentes asociados a cada cliente, donde este puede consultar, gestionar y pagar todas sus solicitudes de pago activas o históricas, sin necesidad de recibir nuevos solicitudes de pago cada vez.
Funcionan como un punto de acceso trazable y constante, ideal para relaciones comerciales continuas, suscripciones o pagos recurrentes, simplificando la experiencia tanto para el pagador como para la empresa.
stop_url única que el cliente puede visitar en cualquier momentoIdempotency-Keyempty_state_messageSe recomienda definir y mantener un campo internal_reference para cada recurso (cliente, contrato o factura), que servirá para conciliar y auditar operaciones entre tu sistema y SPIDI, y asociar solicitudes de pago con su Parada correspondiente.
| spidi_id required | string Identificador único de tipo UUID para el usuario SPIDI |
| continue_on_error required | boolean or null Default: false Indica si el procesamiento debe continuar con el resto de los ítems aunque alguno falle en operaciones de batch.
|
required | Array of objects non-empty Listado de paradas a crear (mínimo 1 ítem) |
{- "continue_on_error": false,
- "spidi_id": "88eab2b9-739e-11f0-9e3f-42010a1ce014",
- "items": [
- {
- "internal_reference": "8233232",
- "stop_title": "Federico Díaz",
- "empty_state_message": "No tienes pagos pendientes",
- "status": "active"
}
]
}{- "success": true,
- "message": "Batch processed: 2 items created.",
- "batch_id": "batch_54fa7a9e-31f1-41f0-a6b9-2cd05662c721",
- "results": [
- {
- "internal_reference": "8233232",
- "success": true,
- "data": {
- "stop_id": "stp_f9317c1b-8a4f-4d7e-9f25-3a2b8b9a4f12",
- "stop_title": "Federico Díaz",
- "empty_state_message": "No tienes pagos pendientes",
- "status": "active",
- "created_at": "2025-09-27T14:15:43Z"
}
}, - {
- "internal_reference": "8233235",
- "success": true,
- "data": {
- "stop_id": "stp_a12f34cd-56ef-78ab-90cd-12ef34ab56cd",
- "stop_title": "Juan González",
- "empty_state_message": "No tienes pagos pendientes",
- "status": "active",
- "created_at": "2025-09-27T14:15:43Z"
}
}
]
}Consulta los detalles y metadatos de una Parada SPIDI específica.
Devuelve información completa de la parada incluyendo:
stop_id, stop_url)stop_title, empty_state_message, status)internal_reference)links_active)Para consultar el historial completo de solicitudes de pago (incluyendo pagados y expirados), utiliza el endpoint /api/v1/ext/payment-stops/{stop_id}/payment-sessions.
| stop_id required | string <uuid> Example: 7f8b2c6a-4d19-45df-9a10-3e872aa812c1 Identificador único de la parada (UUID) |
{- "success": true,
- "message": "Payment stop details retrieved successfully.",
- "data": {
- "stop_id": "7f8b2c6a-4d19-45df-9a10-3e872aa812c1",
- "internal_reference": "USER-2025-0931",
- "stop_title": "Caja Principal - Suscripción Premium",
- "empty_state_message": "Actualmente no tienes pagos pendientes.",
- "status": "active",
- "created_at": "2025-02-10T15:42:00Z",
- "links_active": [
- {
- "session_id": "21f43a2b-d9ff-42d2-87ce-559bdaf1f901",
- "status": "pending",
- "amount": 15.5,
- "currency_reference": "USD",
- "amount_ves": 1900,
- "due_date_link": "2025-03-01T00:00:00Z",
- "expire_behavior_link": "keep_active",
- "late_notice_message": "Tu servicio está inactivo. Realiza el pago ahora para recuperar la continuidad de tu suscripción."
}
]
}
}Actualiza los metadatos de una Parada SPIDI existente.
Permite modificar:
active o disabled)Los campos stop_id, stop_url e internal_reference no pueden modificarse una vez creada la parada.
| stop_id required | string <uuid> Example: stp_9f82b1d3-6e9a-4b0a-9bcd-4fd3f2e5c8a7 Identificador único de la parada (UUID) |
| stop_title required | string Nuevo título visible de la parada |
| status required | string Enum: "active" "disabled" Estado de la parada |
| empty_state_message required | string Texto mostrado al pagador cuando no existan solicitudes de pago activas en la parada |
{- "stop_title": "Caja Principal",
- "status": "disabled",
- "empty_state_message": "Actualmente no hay deudas asociadas a esta parada."
}{- "success": true,
- "message": "Payment stop updated successfully.",
- "data": {
- "stop_id": "stp_9f82b1d3-6e9a-4b0a-9bcd-4fd3f2e5c8a7",
- "stop_title": "Caja Principal",
- "status": "disabled",
- "empty_state_message": "Actualmente no hay deudas asociadas a esta parada.",
- "updated_at": "2025-09-29T14:45:12Z"
}
}Elimina definitivamente una Parada SPIDI.
⚠️ Importante:
Idempotency-Key no crearán duplicados** Recomendación:** En lugar de eliminar, considera deshabilitar la parada usando el endpoint PATCH con status: "disabled". Esto permite reactivarla en el futuro si es necesario.
| stop_id required | string <uuid> Example: stp_9f82b1d3-6e9a-4b0a-9bcd-4fd3f2e5c8a7 Identificador único de la parada (UUID) |
{- "success": true,
- "message": "Payment stop deleted successfully.",
- "data": {
- "stop_id": "stp_9f82b1d3-6e9a-4b0a-9bcd-4fd3f2e5c8a7",
- "deleted_at": "2025-09-30T16:12:04Z"
}
}Consulta el historial completo de solicitudes de pago asociados a una Parada SPIDI.
Devuelve la lista completa de solicitudes de pago asociados a un stop_id, incluyendo:
pending)paid)expired)Soporta filtros avanzados por estado, rango de fechas y paginación para manejar colecciones grandes.
Diferencia con GET /payment-stops/{stop_id}:
| stop_id required | string <uuid> Example: 7f8b2c6a-4d19-45df-9a10-3e872aa812c1 Identificador único de la parada (UUID) |
| status | string Enum: "pending" "paid" "expired" Example: status=pending Filtra por estado del link. Si se omite, se devuelven todos |
| from_date | string <date-time> Example: from_date=2025-01-01T00:00:00Z ISO 8601 (UTC). Devuelve elementos creados desde esta fecha/hora (inclusive) |
| to_date | string <date-time> Example: to_date=2025-12-31T23:59:59Z ISO 8601 (UTC). Devuelve elementos creados hasta esta fecha/hora (inclusive) |
| limit | integer [ 1 .. 200 ] Default: 50 Example: limit=20 Máximo de elementos a devolver |
| offset | integer >= 0 Default: 0 Example: offset=0 Desplazamiento para paginación |
| sort | string Default: "created_desc" Enum: "created_desc" "created_asc" "updated_desc" "updated_asc" Example: sort=created_desc Orden de los resultados |
{- "stop_id": "stp_123",
- "page": 1,
- "page_size": 20,
- "total": 2,
- "has_next": false,
- "items": [
- {
- "session_id": "sess_A",
- "status": "pending",
- "amount": {
- "value": "15.00",
- "currency": "USD_BCV"
}, - "amount_bs": {
- "value": "Bs. 552,00",
- "rate_date": "2025-10-16"
}, - "created_at": "2025-10-15T14:25:32Z",
- "expires_at": "2025-10-15T14:35:32Z",
- "order_index": 0
}, - {
- "session_id": "sess_B",
- "status": "pending",
- "amount": {
- "value": "120.000.000,00",
- "currency": "VES"
}, - "created_at": "2025-10-15T12:01:10Z",
- "expires_at": "2025-10-15T12:11:10Z",
- "order_index": 1
}
]
}Ejecuta operaciones en lote para asociar/desasociar/reemplazar/limpiar sesiones de pago (session_id) visibles en una o varias Paradas (stop_id) en una sola llamada.
Operaciones soportadas:
session_id como activos (si ya estaban, es no-op y se reportan en already_present)session_id activos (si no estaban activos, se reportan en not_active o not_found)session_ids. Con lista vacía ⇒ clearCaracterísticas:
Idempotency-Key (TTL: 24 horas)Notas importantes:
pending pueden activarse (add/replace). Las sesiones paid/expired pasan a histórico automáticamentereplace con lista vacía equivale a clear (limpieza atómica)Idempotency-Key en operaciones en lote| continue_on_error required | boolean or null Default: false Indica si el procesamiento debe continuar con el resto de los ítems aunque alguno falle en operaciones de batch.
|
required | Array of objects non-empty Lista de operaciones por Parada. Debe contener al menos 1 ítem. |
{- "continue_on_error": true,
- "items": [
- {
- "stop_id": "stp_111",
- "op": "add",
- "session_ids": [
- "sess_A",
- "sess_B"
]
}, - {
- "stop_id": "stp_222",
- "op": "remove",
- "session_ids": [
- "sess_C"
]
}, - {
- "stop_id": "stp_333",
- "op": "replace",
- "session_ids": [
- "sess_D"
]
}, - {
- "stop_id": "stp_444",
- "op": "clear"
}
]
}{- "success": true,
- "message": "Batch processed: 4 items succeeded.",
- "batch_id": "batch_9a1b2c3d-ef45-6789-abcd-0123456789ab",
- "results": [
- {
- "stop_id": "stp_111",
- "op": "add",
- "success": true,
- "added": [
- "sess_A",
- "sess_B"
], - "already_present": [ ]
}, - {
- "stop_id": "stp_222",
- "op": "remove",
- "success": true,
- "removed": [
- "sess_C"
], - "not_active": [ ],
- "not_found": [ ]
}, - {
- "stop_id": "stp_333",
- "op": "replace",
- "success": true,
- "active_now": [
- "sess_D"
], - "replaced_previous": [
- "sess_X"
]
}, - {
- "stop_id": "stp_444",
- "op": "clear",
- "success": true,
- "cleared": true
}
]
}Define el orden de visualización de los solicitudes de pago activas (derivados de sesiones session_id) dentro de una o varias Paradas (stop_id) en una sola llamada.
Características:
Idempotency-Key (TTL: 24 horas)order_version (recomendado)Modos de operación:
Notas importantes:
reorder solo para ordenar. Para agregar/quitar/sustituir, utiliza el batch de operar solicitudes de pagoIdempotency-Key; misma clave + mismo payload ⇒ misma respuesta| continue_on_error required | boolean or null Default: false Indica si el procesamiento debe continuar con el resto de los ítems aunque alguno falle en operaciones de batch.
|
required | Array of objects non-empty Lista de instrucciones de reorden por Parada. Al menos 1 ítem |
{- "continue_on_error": true,
- "items": [
- {
- "stop_id": "stp_111",
- "session_ids": [
- "sess_B",
- "sess_A",
- "sess_C"
], - "mode": "append"
}, - {
- "stop_id": "stp_222",
- "session_ids": [
- "sess_X",
- "sess_Y"
], - "mode": "strict"
}
]
}{- "success": true,
- "message": "Batch reorder processed: 2 items succeeded.",
- "batch_id": "batch_5e9a1b2c-3344-5566-7788-99aabbccdd00",
- "results": [
- {
- "stop_id": "stp_111",
- "success": true,
- "applied_order": [
- "sess_B",
- "sess_A",
- "sess_C",
- "sess_D"
], - "mode": "append"
}, - {
- "stop_id": "stp_222",
- "success": true,
- "applied_order": [
- "sess_X",
- "sess_Y"
], - "mode": "strict"
}
]
}Devuelve, en una sola llamada, los solicitudes de pago activas (derivados de sesiones pending) para varias Paradas (stop_id).
Incluye paginación por Parada, filtros básicos y posibilidad de limitar campos para reducir payload.
¿Por qué POST para "leer"?
Acepta listas grandes de stop_id (hasta 200) y tokens de paginación por Parada; un GET se quedaría corto por límites de longitud de URL. Este patrón es común en APIs modernas (Google Cloud, AWS) para queries complejas.
Características:
status=pending)stop_ids por requestNotas importantes:
status: "historical" o include_history: true en el request| stop_ids required | Array of strings [ 1 .. 200 ] items Lista de Paradas a consultar (máx. recomendado: 200 por request) |
| status | string Default: "active" Enum: "active" "pending" "paid" "expired" "historical" Filtro de estado: active (default, alias de pending), pending, paid, expired, historical (paid+expired) |
object Configuración de paginación y filtros por Parada |
{- "stop_ids": [
- "stp_111",
- "stp_222",
- "stp_333"
]
}{- "success": true,
- "requested": {
- "stop_ids": [
- "stp_111",
- "stp_222",
- "stp_333"
], - "status": "active",
- "per_stop": {
- "page_size": 20,
- "sort": "created_at",
- "order": "desc"
}
}, - "results": [
- {
- "stop_id": "stp_111",
- "page_size": 20,
- "has_next": true,
- "next_cursor": "cur_aaa_next",
- "total_estimate": 72,
- "items": [
- {
- "session_id": "sess_A",
- "status": "pending",
- "amount": {
- "value": "15.00",
- "currency": "USD_BCV"
}, - "amount_bs": {
- "value": "Bs. 552,00",
- "rate_date": "2025-10-16"
}, - "created_at": "2025-10-15T14:25:32Z",
- "expires_at": "2025-10-15T14:35:32Z",
- "order_index": 0
}
]
}, - {
- "stop_id": "stp_222",
- "page_size": 20,
- "has_next": false,
- "next_cursor": null,
- "total_estimate": 2,
- "items": [
- {
- "session_id": "sess_X",
- "status": "pending",
- "amount": {
- "value": "120.00",
- "currency": "USD_BCV"
}, - "created_at": "2025-10-15T12:01:10Z",
- "expires_at": "2025-10-15T12:11:10Z",
- "order_index": 1
}, - {
- "session_id": "sess_Y",
- "status": "pending",
- "amount": {
- "value": "90000000",
- "currency": "VES"
}, - "created_at": "2025-10-14T19:01:10Z",
- "expires_at": "2025-10-14T19:11:10Z",
- "order_index": 2
}
]
}, - {
- "stop_id": "stp_333",
- "error": {
- "code": "not_found",
- "message": "Stop not found."
}
}
]
}Endpoint para la creación de un nuevo partner en el sistema.
| name required | string or null Nombre o razón social del partner |
| identification required | string or null RIF del partner |
| contact_email required | string <email> Correo electrónico del partner. |
| contact_phone required | string Teléfono del partner. |
| bank_code required | string Código del banco. Solo acepta 3–4 dígitos (p.ej., 105 o 0137). |
| payment_phone_or_cnta required | string Teléfono o número de cuenta para el pago. |
| user_type required | string Enum: "personal" "comercial" Tipo de usuario. |
{- "name": "string",
- "identification": "string",
- "contact_email": "user@example.com",
- "contact_phone": "string",
- "bank_code": "string",
- "payment_phone_or_cnta": "string",
- "user_type": "personal"
}{- "success": true,
- "message": "Partner created successfully",
- "data": {
- "partner_id": "cc3014e7-f7ea-427d-8f2f-f38592786e58",
- "short_name": "miempresa_p2",
- "name": "Mi Empresa",
- "identification": "J123456789",
- "email": "mi empresa",
- "phone": "04992362571",
- "user_type": "comercial",
- "bank_account_id": "22086f69-076e-4592-a06c-33995afd7bba",
- "split_recipient_agreement_id": "rcv_859f0e4f694f5f5a"
}
}Crea un agreement de recepción de split —un destinatario final que puede recibir montos distribuidos desde otros usuarios que apliquen un split en sus acuerdos de pago.
Al crear este recurso, SPIDI genera un identificador único global (split_recipient_agreement_id) con prefijo semántico rcv_, que debes compartir con los usuarios que deseen enviar parte de sus pagos hacia tu cuenta.
Este agreement no admite splits adicionales: su única función es definir el ruteo de la liquidación, determinando la cuenta bancaria destino.
split_recipient_agreement_id (UUID SPIDI)default_bank_account_idsplit_recipient_agreement_iddefault_bank_account_idrules, cada origin_bank_code no puede repetirseorigin_bank_code, se utiliza el default_bank_account_iddefault_bank_account_id → errorUsa siempre Idempotency-Key (UUID v4). Reenviar el mismo POST con igual payload devolverá el mismo resultado sin duplicar efectos.
Datos del acuerdo de recepción de split
| title required | string Título visible. |
| description | string or null <= 500 characters Descripción del acuerdo o del concepto de pago asociado a una sesión. |
| split_recipient_agreement_id | string <uuid> UUID global SPIDI del agreement de recepción. Este ID se usará en acuerdos de distribución para identificar al receptor del split. (Requerido en distribution) |
| default_bank_account_id required | string <uuid> UUID de la cuenta bancaria por defecto que se utilizará para la liquidación. |
Array of objects or null (En Desarrollo) Reglas de acuerdo. En caso de usar origin_bank_code y destination_bank_account_id, se aplicará una regla de ruteo por banco de origen. Cada regla define a qué cuenta bancaria se debe enviar el dinero según el banco del pagador. |
{- "title": "Partner 1 (recepción)",
- "description": "Recibir de marketplace X",
- "default_bank_account_id": "uuid_sofitasa_001",
- "rules": [
- {
- "origin_bank_code": "0105",
- "destination_bank_account_id": "uuid_mercantil_007"
}, - {
- "origin_bank_code": "0108",
- "destination_bank_account_id": "uuid_provincial_001"
}
]
}{- "success": true,
- "data": {
- "split_recipient_agreement_id": "rcv_01c3f7a2-4eaa-4a11-9d1d-3d3a6723c1a2",
- "title": "To receive from Partners",
- "description": "Recibir de marketplace X",
- "default_bank_account_id": "uuid_sofitasa_001",
- "rules": [
- {
- "origin_bank_code": "0105",
- "destination_bank_account_id": "uuid_mercantil_007"
}, - {
- "origin_bank_code": "0108",
- "destination_bank_account_id": "uuid_provincial_001"
}
], - "created_at": "2025-10-20T14:30:00Z",
- "created_by": "user_456"
}
}Se produce cuando se crea una nueva sesión de pago. Esta sesión queda disponible para que el pagador realice el pago correspondiente. Se enviará una notificación de este evento mediante un webhook cuando se crea una nueva sesión de pago.
| spidi-signature required | string Example: d9c8227652758252615617f6a8759526703902939d892376987f22387a672889 Firma HMAC-SHA256 para validar la autenticidad e integridad del mensaje. |
| spidi-timestamp required | string <date-time> Example: 2026-02-06T15:24:36.000Z Timestamp ISO 8601 de la creación del evento para prevenir ataques de replay. |
| idempotency-key required | string <uuid> Example: 93465a7e-ea9b-41a8-8dca-14e811641c25 UUID v4 único para garantizar que la operación se procese una sola vez. |
| event required | string Value: "payment_session.created" Tipo de evento siguiendo el estándar de jerarquía por puntos. |
required | object |
{- "event": "payment_session.created",
- "data": {
- "session_id": "ce075ab5-a4e0-4d16-8281-a27fced565f2",
- "session_origin": "button",
- "status": "pending",
- "identifier_label": "Nombre del cliente",
- "identifier": "Juan Pérez",
- "description": "Pago de servicio de internet",
- "payment_method": "immediate_debit",
- "amount_reference": 5,
- "currency_reference": "VES",
- "success_url": "miapp://pago/exitoso",
- "failure_url": "miapp://pago/fallido",
- "split": {
- "document": {
- "document_name": "D001-00045678",
- "document_type": "Factura",
- "document_date": "2025-10-20",
- "document_observations": "any observation to owner"
}, - "distribution": [
- {
- "split_recipient_agreement_id": "rcv_014…723c1a2",
- "label": "Partner 1",
- "amount_reference": 10,
- "observations": "any observation to communicate to Partner 1"
}, - {
- "split_recipient_agreement_id": "rcv_016…112dde3",
- "label": "Partner 2",
- "amount_reference": 0,
- "observations": "any observation to communicate to Partner 2"
}
]
}
}
}Se produce cuando el pagador completa exitosamente el pago de una sesión, confirmándose la recepción de los fondos. Se enviará una notificación de este evento mediante un webhook cuando el pagador completa exitosamente el pago de una sesión
| spidi-signature required | string Example: d9c8227652758252615617f6a8759526703902939d892376987f22387a672889 Firma HMAC-SHA256 para validar la autenticidad e integridad del mensaje. |
| spidi-timestamp required | string <date-time> Example: 2026-02-06T15:24:36.000Z Timestamp ISO 8601 de la creación del evento para prevenir ataques de replay. |
| idempotency-key required | string <uuid> Example: 93465a7e-ea9b-41a8-8dca-14e811641c25 UUID v4 único para garantizar que la operación se procese una sola vez. |
| event required | string Value: "payment_session.paid" Tipo de evento de cobro exitoso. |
required | object |
{- "event": "payment_session.paid",
- "data": {
- "session_payment": {
- "id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "origin": "request",
- "agreement_id": "c4cfb-c-43deb-c09a-4-92c109a",
- "currency_reference": "USD",
- "amount_reference": 50.01,
- "identifier_label": "Nombre y Apellido",
- "identifier": "Federico Coppola",
- "description": "",
- "payment_method": "immediate_debit",
- "spidi_transaction": {
- "id": 643,
}
}, - "crypto_details": null,
- "payment_details": {
- "action_date": "2025-09-18T21:00:08Z",
- "bank_name": "BANCO PLAZA",
- "bank_reference_id": "00001440",
- "amount_ves": 6100.56,
- "bcv_rate_usd_ves": 122.0112,
- "bcv_rate_eur_ves": 145.2414,
- "rate_usdt_ves": 183.1112,
- "rate_col_ves": 0.0501,
- "paid_via": "direct"
}
}
}Advertencia: Este endpoint está en desarrollo
Se produce cuando ocurre un fallo en el intento de acreditar los fondos a un receptor esperado del pago. Se enviará una notificación de este evento mediante un webhook por cada intento fallido. El sistema realizará reintentos automáticos hasta lograr la acreditación exitosa.
| spidi-signature required | string Example: d9c8227652758252615617f6a8759526703902939d892376987f22387a672889 Firma HMAC-SHA256 para validar la autenticidad e integridad del mensaje. |
| spidi-timestamp required | string <date-time> Example: 2026-02-06T15:24:36.000Z Timestamp ISO 8601 de la creación del evento para prevenir ataques de replay. |
| idempotency-key required | string <uuid> Example: 93465a7e-ea9b-41a8-8dca-14e811641c25 UUID v4 único para garantizar que la operación se procese una sola vez. |
| event required | string Value: "payment_session.accreditation_to_recipient_failed" Se enviará cuando ocurre un fallo en el intento de acreditar los fondos a un receptor esperado del pago. |
required | object |
{- "event": "payment_session.accreditation_to_recipient_failed",
- "data": {
- "session_payment": {
- "id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "origin": "request",
- "agreement_id": "c4cfb-c-43deb-c09a-4-92c109a",
- "currency_reference": "USD",
- "amount_reference": 50.01,
- "identifier_label": "Nombre y Apellido",
- "identifier": "Federico Coppola",
- "payment_method": "immediate_debit"
}, - "credit": {
- "id": "1122",
- "amount_ves_credited": 1000.12,
- "bank_commissions_ves": 2.32,
- "receive_date": "2025-09-18T21:00:10Z",
- "bank_name": "BANESCO",
- "bank_reference_id": "4555111",
- "recipient": {
- "id": "partner_1",
- "agreement_id": "rcv_014…723c1a2",
- "partner_info": {
- "name": "Restaurante Los Sabores C.A.",
- "rif_number": "J-40011223-5"
}
}, - "errors": [
- "Límite diario de transferencias excedido"
]
}
}
}Advertencia: Este endpoint está en desarrollo
Los fondos han sido acreditados a uno de los receptores esperados del pago. Se enviará una notificación de este evento mediante un webhook por cada receptor esperado y únicamente cuando el pago contempla múltiples acreditaciones (split).
| spidi-signature required | string Example: d9c8227652758252615617f6a8759526703902939d892376987f22387a672889 Firma HMAC-SHA256 para validar la autenticidad e integridad del mensaje. |
| spidi-timestamp required | string <date-time> Example: 2026-02-06T15:24:36.000Z Timestamp ISO 8601 de la creación del evento para prevenir ataques de replay. |
| idempotency-key required | string <uuid> Example: 93465a7e-ea9b-41a8-8dca-14e811641c25 UUID v4 único para garantizar que la operación se procese una sola vez. |
| event required | string Value: "payment_session.accreditation_to_recipient_completed" Se enviará cuando los fondos han sido acreditados a uno de los receptores esperados del pago. |
required | object |
{- "event": "payment_session.accreditation_to_recipient_completed",
- "data": {
- "session_payment": {
- "id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "origin": "request",
- "agreement_id": "c4cfb-c-43deb-c09a-4-92c109a",
- "currency_reference": "USD",
- "amount_reference": 50.01,
- "identifier_label": "Nombre y Apellido",
- "identifier": "Federico Coppola",
- "description": "",
- "payment_method": "immediate_debit"
}, - "credit": {
- "id": "1122",
- "amount_ves_credited": 1000.12,
- "bank_commissions_ves": 2.32,
- "receive_date": "2025-09-18T21:00:10Z",
- "bank_name": "BANESCO",
- "bank_reference_id": "4555111",
- "recipient": {
- "id": "partner_1",
- "type": "partner",
- "agreement_id": "rcv_014…723c1a2",
- "partner_info": {
- "observations": "any observation to Partner 1",
- "name": "Restaurante Los Sabores C.A.",
- "rif_number": "J-40011223-5"
}
}
}
}
}La totalidad de los fondos ha sido acreditada al receptor o a los receptores esperados del pago. Se enviará una notificación de este evento mediante un webhook cuando el pago contemple una única acreditación, se enviara el evento cuando se complete dicha acreditación. En caso de múltiples acreditaciones (split), se emitirá una sola vez al completarse exitosamente la totalidad de las acreditaciones.
| spidi-signature required | string Example: d9c8227652758252615617f6a8759526703902939d892376987f22387a672889 Firma HMAC-SHA256 para validar la autenticidad e integridad del mensaje. |
| spidi-timestamp required | string <date-time> Example: 2026-02-06T15:24:36.000Z Timestamp ISO 8601 de la creación del evento para prevenir ataques de replay. |
| idempotency-key required | string <uuid> Example: 93465a7e-ea9b-41a8-8dca-14e811641c25 UUID v4 único para garantizar que la operación se procese una sola vez. |
| event required | string Value: "payment_session.accredited" Tipo de evento de acreditación completa. |
required | object |
{- "event": "payment_session.accredited",
- "data": {
- "session_payment": {
- "id": "3ddc4cfb-c09a-43de-92c1-e4a069732e90",
- "origin": "request",
- "agreement_id": "c4cfb-c-43deb-c09a-4-92c109a",
- "currency_reference": "USD",
- "amount_reference": 50.01,
- "identifier_label": "Nombre y Apellido",
- "identifier": "Federico Coppola",
- "description": "",
- "payment_method": "immediate_debit"
}, - "receiver_credits": {
- "owner": {
- "receiver_id": "owner",
- "memo": "propio",
- "spidi_credit_id": "1122",
- "amount_ves_credited": 5090.56,
- "bank_commissions_ves": 8.01,
- "receive_date": "2025-09-18T21:00:10Z",
- "bank_name": "BANESCO",
- "bank_reference_id": "4555111"
}, - "partners": [
- {
- "receiver_id": "partner_1",
- "memo": "",
- "partner_rif_name": "Restaurante Los Sabores C.A.",
- "partner_rif_number": "J-40011223-5",
- "split_recipient_agreement_id": "rcv_014…723c1a2",
- "spidi_credit_id": "1122",
- "amount_ves_credited": 1000.12,
- "bank_commissions_ves": 2.32,
- "receive_date": "2025-09-18T21:00:10Z",
- "bank_name": "BANESCO",
- "bank_reference_id": "4555111",
- "observations": "any observation to Partner 1"
}
]
}, - "receiver_credits_summary": {
- "split": true,
- "total_credits": 2,
- "total_amount_ves_credited": 6090.56,
- "total_bank_commissions_ves": 10.3,
- "split_general_info": {
- "document_name": "D001-00045678",
- "document_date": "2025-10-20",
- "document_observations": "any observation to owner"
}
}
}
}