Tarjetas guardadas
Cuando un cobro es aprobado, Seif puede almacenar la tarjeta para volver a cobrarla luego. Cada tarjeta se identifica con un token de Seif (tok_seif_…) y, si lo enviaste, con tu customerRef.
Para que una tarjeta se guarde, crea la sesión de pago con un customerRef (tu id
de cliente). Al aprobarse el cobro, la tarjeta queda asociada a ese cliente.
Listar tarjetas
GET /v1/cardsAutenticación: clave secreta (Authorization: Bearer sk_…).
Parámetros de consulta
| Parámetro | Tipo | Descripción |
|---|---|---|
customerRef | string | Tu id de cliente. Devuelve solo las tarjetas de ese cliente. |
Ejemplo
curl "https://api.seif.pagosripei.com/v1/cards?customerRef=usuario_123" \
-H "Authorization: Bearer sk_test_tu_clave"Respuesta 200
[
{
"id": "c0a2...-9f",
"seifToken": "tok_seif_Xa92...kQ",
"brand": "visa",
"lastFour": "4242",
"expMonth": 8,
"expYear": 2028,
"holderName": null,
"status": "active",
"customerRef": "usuario_123",
"createdAt": "2026-06-09T18:05:10.000Z"
}
]| Campo | Descripción |
|---|---|
seifToken | El token con el que vuelves a cobrar la tarjeta (tok_seif_…). |
brand / lastFour | Marca y últimos 4 dígitos. |
expMonth / expYear | Vencimiento. |
status | active · expired · deleted. |
customerRef | Tu id de cliente asociado. |
Las respuestas nunca incluyen el número real de la tarjeta ni el identificador
del vault. Solo el tok_seif_…. Trátalo como un dato sensible de tu lado: con él
se puede iniciar un cobro a esa tarjeta.
¿Cómo asocio una tarjeta a uno de mis usuarios?
Usa customerRef — es tu identificador, el que ya usas en tu sistema (un id, un correo, un uuid). El flujo:
- Tu cliente inicia un pago → creas la sesión con
"customerRef": "usuario_123". - El cobro se aprueba → la tarjeta se guarda etiquetada con
usuario_123. - Más tarde recuperas sus tarjetas:
GET /v1/cards?customerRef=usuario_123.
Así un mismo cliente puede tener varias tarjetas, y tú las identificas con tus propios ids — sin manejar nunca datos sensibles.
Volver a cobrar una tarjeta guardada
Este es el segundo pago: tu cliente ya pagó una vez, la tarjeta quedó guardada y ahora quieres cobrarle de nuevo sin pedirle todos los datos otra vez.
Se hace con el mismo endpoint de siempre — POST /v1/sessions — agregando el cardToken. Seif reconoce que la sesión ya tiene tarjeta y el checkout pide solo el CVV.
El flujo completo
El CVV no se guarda nunca (por diseño es de un solo uso). Por eso el comprador lo reingresa: es el único dato de tarjeta que vuelve a viajar, y lo captura el iframe de Seif — tu servidor no lo ve.
1. Recupera las tarjetas de tu cliente
curl "https://api.seif.pagosripei.com/v1/cards?customerRef=usuario_123" \
-H "Authorization: Bearer sk_test_tu_clave"2. Crea la sesión con el seifToken de la tarjeta elegida
curl -X POST https://api.seif.pagosripei.com/v1/sessions \
-H "Authorization: Bearer sk_test_tu_clave" \
-H "Content-Type: application/json" \
-d '{
"amountMinor": 105000,
"currency": "VES",
"cardToken": "tok_seif_Xa92...kQ",
"description": "Pedido #1043"
}'3. Abre el checkout con el checkoutUrl de la respuesta
Exactamente igual que en un pago normal — redirección o iframe (ver Checkout incrustado):
window.location.href = session.checkoutUrl;El comprador ve Visa •••• 4242, escribe su CVV y confirma. El resto (webhooks, estados, reintentos) es idéntico al primer pago.
¿Por qué este flujo es 100 % PCI para ti?
| Primer pago | Segundo pago (este flujo) | |
|---|---|---|
| Número de tarjeta | Lo captura el iframe de Seif | Sale de la bóveda |
| Vencimiento | Lo captura el iframe de Seif | Sale de la bóveda |
| CVV | Lo captura el iframe de Seif | Lo captura el iframe de Seif |
| Lo que maneja tu servidor | cs_… | cs_… y tok_seif_… |
En ningún momento tu servidor recibe, guarda ni reenvía datos de tarjeta: solo tokens.
Guarda el tok_seif_… como un dato sensible de tu lado y no lo expongas en el
navegador: con él se puede iniciar un cobro. La creación de la sesión siempre
ocurre en tu servidor, con la clave secreta.
Eliminar una tarjeta
DELETE /v1/cards/{seifToken}Autenticación: clave secreta (Authorization: Bearer sk_…).
Marca la tarjeta como deleted: deja de poder cobrarse de inmediato. Es un borrado lógico — el registro se conserva porque las transacciones pasadas lo referencian. La operación es idempotente: eliminar una tarjeta ya eliminada devuelve la misma tarjeta, sin volver a notificar.
Ejemplo
curl -X DELETE "https://api.seif.pagosripei.com/v1/cards/tok_seif_Xa92...kQ" \
-H "Authorization: Bearer sk_test_tu_clave"Respuesta 200
{
"id": "c0a2...-9f",
"seifToken": "tok_seif_Xa92...kQ",
"brand": "visa",
"lastFour": "4242",
"status": "deleted",
"customerRef": "usuario_123",
"createdAt": "2026-06-09T18:05:10.000Z"
}| HTTP | Cuándo |
|---|---|
200 | Tarjeta eliminada (o ya estaba eliminada). |
404 | No existe una tarjeta con ese tok_seif_… en tu comercio. |
Al eliminarse se emite el webhook card.deleted (ver Webhooks). Requiere un rol con permiso de escritura (no disponible para usuarios de solo lectura).
El borrado es lógico: la tarjeta no vuelve a aparecer en GET /v1/cards ni puede
cobrarse, pero las transacciones que la usaron siguen consultables.
Notas
- El CVV no se almacena (por diseño es de un solo uso). Por eso, al volver a cobrar una tarjeta guardada, el comprador lo reingresa en el checkout.
- Tarjetas repetidas se deduplican: si el mismo cliente paga dos veces con la misma tarjeta, se reutiliza un único registro.