Conectores
Registra, lista, actualiza y elimina conectores de proveedores de pago — los conjuntos de credenciales que vinculan a cada merchant con sus PSPs y potencian el enrutamiento de Tokeflow.
Un conector es un conjunto de credenciales configurado para un proveedor de servicios de pago (PSP). Conectar el mismo proveedor dos veces — por ejemplo, un conjunto de credenciales en modo de prueba y otro en modo producción, o una cuenta por país — produce dos conectores independientes. Todo lo que ocurre después de la configuración habla en términos de conectores, no de proveedores: los perfiles de enrutamiento referencian conectores, y cada intento en la cronología de una transacción registra el connector_id por el que pasó.
Tokeflow orquesta los cobros a través de tus conectores; no procesa ni liquida fondos. El conector es donde le entregas a Tokeflow las credenciales del proveedor que necesita para enviar cobros en tu nombre — y donde configuras los webhooks del proveedor para que los eventos asíncronos (confirmaciones de PIX, contracargos, actualizaciones de reembolso) vuelvan a llegar.
Las credenciales son solo de escritura. Se validan, cifran y almacenan al crearse, y nunca aparecen en ninguna respuesta de la API. El objeto conector expone has_webhook_secret — un booleano — en lugar del propio secreto. Para rotar las credenciales, haz un PATCH al conector con un nuevo objeto credentials.
Cómo se crea un conector
Usa GET /payment-providers para descubrir qué proveedores están disponibles para conectar y qué métodos de autenticación admite cada uno, crea el conector y luego apunta tu enrutamiento hacia él.
El objeto conector
| Campo | Tipo | Descripción |
|---|---|---|
id | string | ID del conector, con prefijo conn_. |
merchant_id | string | Merchant propietario, con prefijo mrc_. |
provider_slug | string | Slug del proveedor de pago (p. ej. provider_a, provider_b, provider_c, provider_d, provider_e). Consulta Proveedores compatibles. |
payment_provider_id | string | ID del proveedor de pago detrás de este conector. Úsalo con GET /payment-providers/:provider_id para leer los detalles del proveedor, incluso después de que el proveedor deje de figurar como activo. |
name | string | Tu etiqueta para este conjunto de credenciales (p. ej. "Provider A BRL"). |
country_code | string | null | Código de país ISO 3166-1 alpha-2. Nulo para proveedores no específicos de país. |
auth_method | string | Método de autenticación (api_key en V1). |
is_test_mode | boolean | Si este es un conector en modo de prueba. |
is_active | boolean | Si el conector está activo. Consulta Conectores activos e inactivos. |
created_at | string | Marca de tiempo de creación (ISO 8601 UTC). |
webhook_url | string | null | La URL que debes configurar en el dashboard de tu PSP para que los eventos del proveedor lleguen a Tokeflow. Trátala como una credencial — lleva un token por conector en su query string. Consulta Trata webhook_url como un secreto. |
has_webhook_secret | boolean | Si los webhooks entrantes del proveedor pueden verificarse — hay un webhook_secret almacenado, o el proveedor firma con una clave que ya está en credentials (algunos proveedores firman con la clave secreta de la cuenta, así que sus conectores informan true sin un webhook_secret). |
config | object | null | Configuración opcional y no sensible por conector. Nulo cuando no hay anulaciones definidas. Consulta Configuración del conector. |
Configuración del conector
config contiene anulaciones no sensibles por conector:
| Campo | Tipo | Descripción |
|---|---|---|
card_brands | array | Restringe las marcas de tarjeta expuestas al Bridge SDK para este conector. Debe ser un subconjunto del default_supported_card_brands del proveedor. Cuando config es nulo (sin anulaciones), el SDK recurre al valor predeterminado del proveedor. |
installments_enabled | boolean | null | La elección de cuotas del merchant para este conector, dentro del installment_config del proveedor. Sin definir (o null para borrar): los cargos por API que piden cuotas se aceptan, pero el checkout no las ofrece. true: las cuotas también se ofrecen en el checkout. false: los cargos en cuotas se rechazan en este conector. Un proveedor cuyo installment_config no tiene entrada para el método de pago nunca acepta cuotas, diga lo que diga esta bandera. |
Al actualizar, cada clave se fusiona de forma independiente: envía un array vacío u omite card_brands para borrar la anulación de marcas, y envía installments_enabled: null para volver al estado sin definir.
Conectores activos e inactivos
Un conector inactivo (is_active: false) es omitido por la evaluación de enrutamiento y es rechazado como conector predeterminado de un perfil de enrutamiento por PATCH /routing/profiles/:id/default-connector. Desactivar es la forma segura de sacar un conjunto de credenciales de la rotación sin eliminarlo.
Cuando Tokeflow retira de servicio un proveedor de pago, sus conectores todavía pueden renombrarse, rotar sus credenciales y desactivarse — pero un conector desactivado no puede volver a activarse (400) mientras el proveedor esté inactivo.
Credenciales rechazadas
Si un proveedor empieza a rechazar las credenciales de API de un conector — una clave revocada, rotada o restringida del lado del proveedor —, Tokeflow confirma el rechazo con el proveedor antes de actuar. Una vez confirmado, las renovaciones de suscripciones enrutadas a ese conector quedan en una retención de facturación en lugar de rechazarse y pasar a dunning. Guarda credenciales nuevas con PATCH y la retención se libera; cambiar solo el webhook_secret no la libera.
Crear o actualizar un perfil de enrutamiento actualmente no valida is_active — un perfil puede terminar con un conector predeterminado inactivo. Los cobros enrutados a ese perfil entonces fallan en el momento de la resolución. Cuando desactives un conector, redirige cualquier perfil que lo use como predeterminado.
Endpoints
Todos los endpoints de conector están delimitados bajo la ruta del merchant. Con una clave de Organization, merchant_id selecciona el merchant de destino; con una clave de Merchant, debe ser el propio merchant de la clave.
POST/api/v1/merchants/:merchant_id/connectors
Auth: Clave de Organization o clave de Merchant (que coincida con el merchant_id de la ruta). Alcance: connectors:write.
Registra un conjunto de credenciales de PSP para el merchant. Las credenciales se validan con el proveedor y se almacenan cifradas. Usa GET /payment-providers para listar los proveedores disponibles para conectar y los métodos de autenticación que admite cada uno.
Campos de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
provider_slug | string | Sí | Uno de provider_a, provider_b, provider_c, provider_d, provider_e. |
name | string | Sí | Nombre del conector, máx. 100 caracteres. |
is_test_mode | boolean | Sí | Si este conector está en modo de prueba. |
credentials | object | Sí | Credenciales específicas del proveedor. Consulta El objeto credentials. |
auth_method | string | Sí | Uno de api_key, oauth2. Consulta GET /payment-providers para ver los métodos que admite cada proveedor. |
country_code | string | No | Código de país ISO 3166-1 alpha-2. Omite para proveedores no específicos de país. |
is_active | boolean | No | Si el conector está activo al crearse. Por defecto true. |
webhook_secret | string | No | Secreto de firma de webhook del PSP para verificar webhooks entrantes. El formato depende del proveedor — Provider A usa whsec_…; Provider B espera un objeto JSON convertido a cadena {"username":"…","password":"…"} usado para la verificación de HTTP Basic Auth; algunos proveedores esperan el token de acceso que defines en el webhook en su panel, y otros no necesitan ninguno — consulta Credenciales por proveedor. |
config | object | No | Configuración opcional y no sensible por conector. Consulta Configuración del conector. |
El objeto credentials
La forma de credentials depende del proveedor conectado. Algunos proveedores requieren una única clave de API; otros requieren un token de acceso más un país, o un par OAuth client_id/client_secret. Envía exactamente los campos que tu proveedor requiere — las claves desconocidas se rechazan, y Tokeflow cifra los valores en reposo y nunca los devuelve por completo. El entorno de la clave debe coincidir con is_test_mode: una clave de producción en un conector de prueba (o al revés) se rechaza antes de almacenar nada. Los slugs de proveedor y sus requisitos exactos de credenciales aparecen listados para tus proveedores habilitados en el Dashboard de Tokeflow.
Credenciales por proveedor
Los campos exactos de credentials, el formato del webhook_secret y cualquier dato extra del pagador que un proveedor exija se muestran para tus proveedores habilitados en el Dashboard de Tokeflow, y el equipo de Tokeflow puede confirmarlos para un proveedor que estés a punto de habilitar. Tres patrones cubren el catálogo:
| Patrón | credentials | webhook_secret |
|---|---|---|
| Clave de API única | { "api_key": "…" } — una clave de prueba en un conector de prueba, una clave de producción en caso contrario. | El secreto de firma o el token de acceso que configuras en el webhook del proveedor; Tokeflow verifica cada entrega contra él. |
| Clave secreta que también firma los webhooks | { "secret_key": "…", "public_key": "…" } — public_key opcional. | No se usa. Tokeflow verifica las entregas con credentials.secret_key, has_webhook_secret informa true y rotar la clave rota también la verificación de firma. |
| Token de acceso, o par OAuth, más país | { "access_token": "…", "country": "…" } o { "client_id": "…", "client_secret": "…", "country": "…" }. | Específico del proveedor; consulta el Dashboard. |
Sea cual sea el patrón, registra el webhook_url del conector en el panel del propio proveedor y envía payer_ip y un cliente completo en los cargos con tarjeta de los proveedores que los exigen — consulta Proveedores compatibles.
Ejemplo de solicitud
curl -X POST https://api.tokeflow.com/api/v1/merchants/mrc_123/connectors \
-H "Authorization: Bearer sk_live_org_…" \
-H "Content-Type: application/json" \
-d '{
"provider_slug": "provider_a",
"name": "Provider A BRL",
"country_code": "BR",
"is_test_mode": false,
"auth_method": "api_key",
"credentials": { "api_key": "sk_live_provider_key" },
"webhook_secret": "whsec_9c41f2ab…",
"config": { "card_brands": ["visa", "mastercard"] }
}'Ejemplo de respuesta — 201 Created
{
"id": "conn_9f2b71",
"merchant_id": "mrc_123",
"provider_slug": "provider_a",
"payment_provider_id": "pp_1a2b3c",
"name": "Provider A BRL",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": false,
"is_active": true,
"created_at": "2026-01-15T12:30:00Z",
"webhook_url": "https://api.tokeflow.com/webhooks/connectors/conn_9f2b71?token=whsec_…",
"has_webhook_secret": true,
"config": { "card_brands": ["visa", "mastercard"] }
}Termina la tarea en el dashboard del proveedor. Copia el webhook_url devuelto en la configuración de webhooks de tu PSP, y define aquí webhook_secret con el secreto de firma que te da el proveedor — así es como Tokeflow verifica que los eventos entrantes del proveedor son genuinos.
Trata webhook_url como un secreto
El webhook_url devuelto autentica las llamadas del proveedor mediante un token incrustado en su query string. Cualquiera que tenga esa URL puede enviar eventos a tu conector, así que dale el mismo trato que a una API key:
- Pégala únicamente en la configuración de webhooks del propio proveedor, sobre HTTPS.
- Nunca la incluyas en un ticket, un mensaje de chat, una captura de pantalla, una línea de log ni un bundle del lado del cliente.
- Si se filtra, rótala volviendo a registrar el conector y actualiza después la URL en el dashboard del proveedor.
GET/api/v1/merchants/:merchant_id/connectors
Auth: Clave de Organization o clave de Merchant (que coincida con el merchant_id de la ruta). Alcance: connectors:read.
Devuelve una lista paginada de los conectores de proveedores de pago del merchant.
Parámetros de consulta
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
page | number | No | Número de página, indexado desde 1 (por defecto 1, mín. 1). |
limit | number | No | Elementos por página (por defecto 20, mín. 1, máx. 100). |
Ejemplo de solicitud
curl -G https://api.tokeflow.com/api/v1/merchants/mrc_123/connectors \
-H "Authorization: Bearer sk_live_org_…" \
--data-urlencode "page=1" \
--data-urlencode "limit=20"Ejemplo de respuesta — 200 OK
{
"data": [
{
"id": "conn_9f2b71",
"merchant_id": "mrc_123",
"provider_slug": "provider_a",
"payment_provider_id": "pp_1a2b3c",
"name": "Provider A BRL",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": false,
"is_active": true,
"created_at": "2026-01-15T12:30:00Z",
"webhook_url": "https://api.tokeflow.com/webhooks/connectors/conn_9f2b71?token=whsec_…",
"has_webhook_secret": true,
"config": { "card_brands": ["visa", "mastercard"] }
},
{
"id": "conn_4d8ea0",
"merchant_id": "mrc_123",
"provider_slug": "provider_b",
"name": "Provider B sandbox",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": true,
"is_active": true,
"created_at": "2026-01-10T09:15:00Z",
"webhook_url": "https://api.tokeflow.com/webhooks/connectors/conn_4d8ea0?token=whsec_…",
"has_webhook_secret": true,
"config": null
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 2,
"total_pages": 1,
"has_next": false,
"has_prev": false
}
}GET/api/v1/merchants/:merchant_id/connectors/:connector_id
Auth: Clave de Organization o clave de Merchant (que coincida con el merchant_id de la ruta). Alcance: connectors:read.
Recupera un único conector. Devuelve el objeto conector.
Ejemplo de solicitud
curl https://api.tokeflow.com/api/v1/merchants/mrc_123/connectors/conn_9f2b71 \
-H "Authorization: Bearer sk_live_org_…"Ejemplo de respuesta — 200 OK
{
"id": "conn_9f2b71",
"merchant_id": "mrc_123",
"provider_slug": "provider_a",
"payment_provider_id": "pp_1a2b3c",
"name": "Provider A BRL",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": false,
"is_active": true,
"created_at": "2026-01-15T12:30:00Z",
"webhook_url": "https://api.tokeflow.com/webhooks/connectors/conn_9f2b71?token=whsec_…",
"has_webhook_secret": true,
"config": { "card_brands": ["visa", "mastercard"] }
}Se devuelve un 404 (not_found_error) si el conector no existe o no pertenece al merchant.
PATCH/api/v1/merchants/:merchant_id/connectors/:connector_id
Auth: Clave de Organization o clave de Merchant (que coincida con el merchant_id de la ruta). Alcance: connectors:write.
Actualiza parcialmente un conector — credenciales, etiqueta o estado de habilitación. Solo los campos siguientes pueden cambiarse; todos son opcionales.
Campos de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
name | string | No | Nombre del conector, máx. 100 caracteres. |
is_active | boolean | No | Si el conector está activo. Consulta Conectores activos e inactivos antes de desactivar. La reactivación se rechaza con 400 mientras el proveedor de pago del conector esté inactivo. |
credentials | object | No | Credenciales de proveedor actualizadas — validadas y recifradas. Mismas reglas de formato que al crear. Las credenciales nuevas también liberan cualquier retención de facturación aplicada porque el proveedor rechazó las anteriores. |
webhook_secret | string | No | Secreto de firma de webhook del PSP. Mismo formato específico del proveedor que al crear. |
config | object | No | Configuración por conector, fusionada clave a clave. Envía un array card_brands vacío, u omite card_brands, para borrar la anulación de marcas; envía installments_enabled: null para devolver las cuotas al estado sin definir. Consulta Configuración del conector. |
Ejemplo de solicitud — rotar credenciales y renombrar
curl -X PATCH https://api.tokeflow.com/api/v1/merchants/mrc_123/connectors/conn_9f2b71 \
-H "Authorization: Bearer sk_live_org_…" \
-H "Content-Type: application/json" \
-d '{
"name": "Provider A BRL prod",
"credentials": { "api_key": "sk_live_provider_key_rotated" }
}'Ejemplo de respuesta — 200 OK
{
"id": "conn_9f2b71",
"merchant_id": "mrc_123",
"provider_slug": "provider_a",
"payment_provider_id": "pp_1a2b3c",
"name": "Provider A BRL prod",
"country_code": "BR",
"auth_method": "api_key",
"is_test_mode": false,
"is_active": true,
"created_at": "2026-01-15T12:30:00Z",
"webhook_url": "https://api.tokeflow.com/webhooks/connectors/conn_9f2b71?token=whsec_…",
"has_webhook_secret": true,
"config": { "card_brands": ["visa", "mastercard"] }
}Se devuelve un 404 (not_found_error) si el conector no existe o no pertenece al merchant.
DELETE/api/v1/merchants/:merchant_id/connectors/:connector_id
Auth: Clave de Organization o clave de Merchant (que coincida con el merchant_id de la ruta). Alcance: connectors:write.
Elimina el conector. No debe estar referenciado por ningún nodo de enrutamiento ni ser el conector predeterminado de un perfil de enrutamiento — redirige esos primero.
Ejemplo de solicitud
curl -X DELETE https://api.tokeflow.com/api/v1/merchants/mrc_123/connectors/conn_4d8ea0 \
-H "Authorization: Bearer sk_live_org_…"Códigos de respuesta
| Código | Cuándo |
|---|---|
204 No Content | El conector fue eliminado. Sin cuerpo en la respuesta. |
400 Bad Request | El conector todavía está referenciado por un nodo de enrutamiento o es el conector predeterminado de un perfil. |
404 Not Found | Conector no encontrado. |
Si solo quieres dejar de enrutar cobros a través de un conjunto de credenciales, desactívalo con PATCH (is_active: false) en lugar de eliminarlo — el conector y su historial permanecen intactos, y puedes volver a habilitarlo más adelante.
Errores
Todo error usa el envoltorio estándar. Los casos más comunes para este recurso:
| HTTP | type | Causa típica |
|---|---|---|
400 | validation_error | Credenciales inválidas o incompletas para el proveedor, o una eliminación bloqueada porque el conector todavía está referenciado por el enrutamiento. |
401 | authentication_error | Clave de API ausente o inválida. |
403 | authorization_error | La clave carece del alcance necesario, o una clave de Merchant apunta a la ruta de otro merchant. |
404 | not_found_error | Conector (o merchant) no encontrado o no perteneciente al solicitante. |
429 | rate_limit_error | Límite de tasa excedido — reduce la frecuencia exponencialmente. |
Consulta Errores para conocer el envoltorio completo y el catálogo de tipos.
Relacionados
- Proveedores de pago — descubre los proveedores conectables y sus métodos de autenticación admitidos.
- Perfiles de enrutamiento — decide qué conector atiende cada cobro.
- Transacciones — observa los conectores en acción en la cronología de enrutamiento.
- Autenticación — aprovisiona claves y alcances.