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

CampoTipoDescripción
idstringID del conector, con prefijo conn_.
merchant_idstringMerchant propietario, con prefijo mrc_.
provider_slugstringSlug del proveedor de pago (p. ej. provider_a, provider_b, provider_c, provider_d, provider_e). Consulta Proveedores compatibles.
payment_provider_idstringID 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.
namestringTu etiqueta para este conjunto de credenciales (p. ej. "Provider A BRL").
country_codestring | nullCódigo de país ISO 3166-1 alpha-2. Nulo para proveedores no específicos de país.
auth_methodstringMétodo de autenticación (api_key en V1).
is_test_modebooleanSi este es un conector en modo de prueba.
is_activebooleanSi el conector está activo. Consulta Conectores activos e inactivos.
created_atstringMarca de tiempo de creación (ISO 8601 UTC).
webhook_urlstring | nullLa 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_secretbooleanSi 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).
configobject | nullConfiguració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:

CampoTipoDescripción
card_brandsarrayRestringe 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_enabledboolean | nullLa 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

OrgMerchant

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

CampoTipoRequeridoDescripción
provider_slugstringSíUno de provider_a, provider_b, provider_c, provider_d, provider_e.
namestringSíNombre del conector, máx. 100 caracteres.
is_test_modebooleanSíSi este conector está en modo de prueba.
credentialsobjectSíCredenciales específicas del proveedor. Consulta El objeto credentials.
auth_methodstringSíUno de api_key, oauth2. Consulta GET /payment-providers para ver los métodos que admite cada proveedor.
country_codestringNoCódigo de país ISO 3166-1 alpha-2. Omite para proveedores no específicos de país.
is_activebooleanNoSi el conector está activo al crearse. Por defecto true.
webhook_secretstringNoSecreto 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.
configobjectNoConfiguració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óncredentialswebhook_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

OrgMerchant

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

CampoTipoRequeridoDescripción
pagenumberNoNúmero de página, indexado desde 1 (por defecto 1, mín. 1).
limitnumberNoElementos 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

OrgMerchant

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

OrgMerchant

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

CampoTipoRequeridoDescripción
namestringNoNombre del conector, máx. 100 caracteres.
is_activebooleanNoSi 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.
credentialsobjectNoCredenciales 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_secretstringNoSecreto de firma de webhook del PSP. Mismo formato específico del proveedor que al crear.
configobjectNoConfiguració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

OrgMerchant

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ódigoCuándo
204 No ContentEl conector fue eliminado. Sin cuerpo en la respuesta.
400 Bad RequestEl conector todavía está referenciado por un nodo de enrutamiento o es el conector predeterminado de un perfil.
404 Not FoundConector 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:

HTTPtypeCausa típica
400validation_errorCredenciales inválidas o incompletas para el proveedor, o una eliminación bloqueada porque el conector todavía está referenciado por el enrutamiento.
401authentication_errorClave de API ausente o inválida.
403authorization_errorLa clave carece del alcance necesario, o una clave de Merchant apunta a la ruta de otro merchant.
404not_found_errorConector (o merchant) no encontrado o no perteneciente al solicitante.
429rate_limit_errorLímite de tasa excedido — reduce la frecuencia exponencialmente.

Consulta Errores para conocer el envoltorio completo y el catálogo de tipos.

Relacionados

En esta página