Conectores
Registre, liste, atualize e exclua conectores de provedores de pagamento — os conjuntos de credenciais que ligam cada merchant aos seus PSPs e alimentam o roteamento da Tokeflow.
Um conector é um conjunto de credenciais configurado para um provedor de serviços de pagamento (PSP). Conectar o mesmo provedor duas vezes — digamos, um conjunto de credenciais em modo de teste e outro em modo produção, ou uma conta por país — produz dois conectores independentes. Tudo o que vem depois da configuração fala em termos de conectores, não de provedores: os perfis de roteamento referenciam conectores, e cada tentativa na linha do tempo de uma transação registra o connector_id por onde ela passou.
A Tokeflow orquestra as cobranças entre os seus conectores; ela não processa nem liquida fundos. O conector é onde você entrega à Tokeflow as credenciais do provedor que ela precisa para enviar cobranças em seu nome — e onde você configura os webhooks do provedor para que eventos assíncronos (confirmações de PIX, chargebacks, atualizações de estorno) voltem a chegar.
As credenciais são somente para escrita. Elas são validadas, criptografadas e armazenadas na criação, e nunca aparecem em nenhuma resposta da API. O objeto conector expõe has_webhook_secret — um booleano — em vez do próprio segredo. Para rotacionar as credenciais, faça um PATCH no conector com um novo objeto credentials.
Como um conector é criado
Use GET /payment-providers para descobrir quais provedores estão disponíveis para conexão e quais métodos de autenticação cada um suporta, crie o conector e depois aponte seu roteamento para ele.
O objeto conector
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do conector, prefixado com conn_. |
merchant_id | string | Merchant proprietário, prefixado com mrc_. |
provider_slug | string | Slug do provedor de pagamento (ex.: provider_a, provider_b, provider_c, provider_d, provider_e). Veja Provedores suportados. |
payment_provider_id | string | ID do provedor de pagamento por trás deste conector. Use-o com GET /payment-providers/:provider_id para ler os detalhes do provedor, mesmo depois que ele deixar de ser listado como ativo. |
name | string | Seu rótulo para este conjunto de credenciais (ex.: "Provider A BRL"). |
country_code | string | null | Código de país ISO 3166-1 alpha-2. Nulo para provedores não específicos de país. |
auth_method | string | Método de autenticação (api_key na V1). |
is_test_mode | boolean | Se este é um conector em modo de teste. |
is_active | boolean | Se o conector está ativo. Veja Conectores ativos e inativos. |
created_at | string | Timestamp de criação (ISO 8601 UTC). |
webhook_url | string | null | A URL a configurar no dashboard do seu PSP para que os eventos do provedor cheguem à Tokeflow. Trate-a como uma credencial — ela carrega um token por conector na query string. Veja Trate webhook_url como um segredo. |
has_webhook_secret | boolean | Se os webhooks recebidos do provedor podem ser verificados — ou um webhook_secret está armazenado, ou o provedor assina com uma chave que já está em credentials (alguns provedores assinam com a chave secreta da conta, então seus conectores reportam true sem um webhook_secret). |
config | object | null | Configuração opcional e não sensível por conector. Nulo quando não há substituições definidas. Veja Configuração do conector. |
Configuração do conector
config guarda substituições não sensíveis por conector:
| Campo | Tipo | Descrição |
|---|---|---|
card_brands | array | Restringe as bandeiras de cartão exibidas ao Bridge SDK para este conector. Deve ser um subconjunto do default_supported_card_brands do provedor. Quando config é nulo (sem substituições), o SDK recorre ao padrão do provedor. |
installments_enabled | boolean | null | A escolha de parcelamento do merchant para este conector, dentro do installment_config do provedor. Não definido (ou null para limpar): cobranças via API que pedem parcelas são aceitas, mas o checkout não as oferece. true: as parcelas também são oferecidas no checkout. false: cobranças parceladas são recusadas neste conector. Um provedor cujo installment_config não tem entrada para o método de pagamento nunca aceita parcelas, independentemente desta flag. |
Na atualização, cada chave é mesclada de forma independente: envie um array vazio ou omita card_brands para limpar a substituição de bandeiras, e envie installments_enabled: null para voltar ao estado não definido.
Conectores ativos e inativos
Um conector inativo (is_active: false) é ignorado pela avaliação de roteamento e é rejeitado como conector padrão de um perfil de roteamento por PATCH /routing/profiles/:id/default-connector. Desativar é a forma segura de tirar um conjunto de credenciais de rotação sem excluí-lo.
Quando a Tokeflow tira um provedor de pagamento de operação, os conectores dele ainda podem ser renomeados, ter as credenciais rotacionadas e ser desativados — mas um conector desativado não pode ser reativado (400) enquanto o provedor estiver inativo.
Credenciais recusadas
Se um provedor começa a recusar as credenciais de API de um conector — uma chave revogada, rotacionada ou restringida do lado do provedor —, a Tokeflow confirma a recusa junto ao provedor antes de agir. Uma vez confirmada, as renovações de assinatura roteadas para esse conector são colocadas em uma retenção de cobrança (billing hold) em vez de serem recusadas e irem para dunning. Salve novas credenciais com PATCH e a retenção é liberada; alterar apenas o webhook_secret não a libera.
Criar ou atualizar um perfil de roteamento atualmente não valida is_active — um perfil pode acabar com um conector padrão inativo. As cobranças roteadas para esse perfil então falham no momento da resolução. Ao desativar um conector, reaponte qualquer perfil que o use como padrão.
Endpoints
Todos os endpoints de conector são delimitados sob o caminho do merchant. Com uma chave de Organization, merchant_id seleciona o merchant de destino; com uma chave de Merchant, ele deve ser o próprio merchant da chave.
POST/api/v1/merchants/:merchant_id/connectors
Auth: Chave de Organization ou chave de Merchant (correspondente ao merchant_id no caminho). Escopo: connectors:write.
Registra um conjunto de credenciais de PSP para o merchant. As credenciais são validadas junto ao provedor e armazenadas de forma criptografada. Use GET /payment-providers para listar os provedores disponíveis para conexão e os métodos de autenticação que cada um suporta.
Campos da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
provider_slug | string | Sim | Um de provider_a, provider_b, provider_c, provider_d, provider_e. |
name | string | Sim | Nome do conector, máx. 100 caracteres. |
is_test_mode | boolean | Sim | Se este conector está em modo de teste. |
credentials | object | Sim | Credenciais específicas do provedor. Veja O objeto credentials. |
auth_method | string | Sim | Um de api_key, oauth2. Consulte GET /payment-providers para os métodos que cada provedor suporta. |
country_code | string | Não | Código de país ISO 3166-1 alpha-2. Omita para provedores não específicos de país. |
is_active | boolean | Não | Se o conector está ativo na criação. Padrão true. |
webhook_secret | string | Não | Segredo de assinatura de webhook do PSP para verificar webhooks recebidos. O formato depende do provedor — Provider A usa whsec_…; Provider B espera um objeto JSON serializado como string {"username":"…","password":"…"} usado para verificação de HTTP Basic Auth; alguns provedores esperam o token de acesso que você define no webhook no painel deles, e outros não precisam de nenhum — veja Credenciais por provedor. |
config | object | Não | Configuração opcional e não sensível por conector. Veja Configuração do conector. |
O objeto credentials
O formato de credentials depende do provedor conectado. Alguns provedores exigem uma única chave de API; outros exigem um token de acesso mais um país, ou um par OAuth client_id/client_secret. Envie exatamente os campos que o seu provedor exige — chaves desconhecidas são recusadas, e a Tokeflow criptografa os valores em repouso e nunca os retorna por completo. O ambiente da chave precisa corresponder a is_test_mode: uma chave de produção em um conector de teste (ou o inverso) é rejeitada antes de qualquer coisa ser armazenada. Os slugs de provedor e seus requisitos exatos de credenciais estão listados para os seus provedores habilitados no Dashboard da Tokeflow.
Credenciais por provedor
Os campos exatos de credentials, o formato do webhook_secret e qualquer dado extra do pagador que um provedor exija são exibidos para os seus provedores habilitados no Dashboard da Tokeflow, e a equipe da Tokeflow pode confirmá-los para um provedor que você está prestes a habilitar. Três padrões cobrem o catálogo:
| Padrão | credentials | webhook_secret |
|---|---|---|
| Chave de API única | { "api_key": "…" } — uma chave de teste em um conector de teste, uma chave de produção caso contrário. | O segredo de assinatura ou o token de acesso que você configura no webhook do provedor; a Tokeflow verifica cada entrega contra ele. |
| Chave secreta que também assina os webhooks | { "secret_key": "…", "public_key": "…" } — public_key opcional. | Não usado. A Tokeflow verifica as entregas com credentials.secret_key, has_webhook_secret reporta true e rotacionar a chave rotaciona a verificação de assinatura junto. |
| Token de acesso, ou par OAuth, mais país | { "access_token": "…", "country": "…" } ou { "client_id": "…", "client_secret": "…", "country": "…" }. | Específico do provedor; veja o Dashboard. |
Seja qual for o padrão, cadastre o webhook_url do conector no painel do próprio provedor e envie payer_ip e um cliente completo nas cobranças com cartão dos provedores que os exigem — veja Provedores suportados.
Exemplo de requisição
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"] }
}'Exemplo de resposta — 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"] }
}Termine o trabalho no dashboard do provedor. Copie o webhook_url retornado nas configurações de webhook do seu PSP, e defina aqui o webhook_secret como o segredo de assinatura que o provedor fornece — é assim que a Tokeflow verifica que os eventos recebidos do provedor são genuínos.
Trate webhook_url como um segredo
O webhook_url retornado autentica as chamadas do provedor por meio de um token embutido na query string. Qualquer pessoa com essa URL pode enviar eventos ao seu conector, então dê a ela o mesmo tratamento de uma API key:
- Cole-a apenas na configuração de webhooks do próprio provedor, sobre HTTPS.
- Nunca a coloque em um ticket, uma mensagem de chat, uma captura de tela, uma linha de log ou um bundle do lado do cliente.
- Se ela vazar, rotacione-a registrando o conector novamente e depois atualize a URL no dashboard do provedor.
GET/api/v1/merchants/:merchant_id/connectors
Auth: Chave de Organization ou chave de Merchant (correspondente ao merchant_id no caminho). Escopo: connectors:read.
Retorna uma lista paginada dos conectores de provedores de pagamento do merchant.
Parâmetros de consulta
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page | number | Não | Número da página, indexado a partir de 1 (padrão 1, mín. 1). |
limit | number | Não | Itens por página (padrão 20, mín. 1, máx. 100). |
Exemplo de requisição
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"Exemplo de resposta — 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: Chave de Organization ou chave de Merchant (correspondente ao merchant_id no caminho). Escopo: connectors:read.
Recupera um único conector. Retorna o objeto conector.
Exemplo de requisição
curl https://api.tokeflow.com/api/v1/merchants/mrc_123/connectors/conn_9f2b71 \
-H "Authorization: Bearer sk_live_org_…"Exemplo de resposta — 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"] }
}Um 404 (not_found_error) é retornado se o conector não existir ou não pertencer ao merchant.
PATCH/api/v1/merchants/:merchant_id/connectors/:connector_id
Auth: Chave de Organization ou chave de Merchant (correspondente ao merchant_id no caminho). Escopo: connectors:write.
Atualiza parcialmente um conector — credenciais, rótulo ou estado de habilitação. Somente os campos abaixo podem ser alterados; todos são opcionais.
Campos da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Nome do conector, máx. 100 caracteres. |
is_active | boolean | Não | Se o conector está ativo. Veja Conectores ativos e inativos antes de desativar. A reativação é recusada com 400 enquanto o provedor de pagamento do conector estiver inativo. |
credentials | object | Não | Credenciais atualizadas do provedor — validadas e recriptografadas. Mesmas regras de formato da criação. Novas credenciais também liberam qualquer retenção de cobrança aplicada porque o provedor recusou as anteriores. |
webhook_secret | string | Não | Segredo de assinatura de webhook do PSP. Mesmo formato específico do provedor usado na criação. |
config | object | Não | Configuração por conector, mesclada chave a chave. Envie um array card_brands vazio, ou omita card_brands, para limpar a substituição de bandeiras; envie installments_enabled: null para voltar o parcelamento ao estado não definido. Veja Configuração do conector. |
Exemplo de requisição — rotacionar credenciais e renomear
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" }
}'Exemplo de resposta — 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"] }
}Um 404 (not_found_error) é retornado se o conector não existir ou não pertencer ao merchant.
DELETE/api/v1/merchants/:merchant_id/connectors/:connector_id
Auth: Chave de Organization ou chave de Merchant (correspondente ao merchant_id no caminho). Escopo: connectors:write.
Remove o conector. Ele não pode estar referenciado por nenhum nó de roteamento nem ser o conector padrão de um perfil de roteamento — reaponte esses primeiro.
Exemplo de requisição
curl -X DELETE https://api.tokeflow.com/api/v1/merchants/mrc_123/connectors/conn_4d8ea0 \
-H "Authorization: Bearer sk_live_org_…"Códigos de resposta
| Código | Quando |
|---|---|
204 No Content | O conector foi excluído. Sem corpo na resposta. |
400 Bad Request | O conector ainda está referenciado por um nó de roteamento ou é o conector padrão de um perfil. |
404 Not Found | Conector não encontrado. |
Se você só quer parar de rotear cobranças por um conjunto de credenciais, desative-o com PATCH (is_active: false) em vez de excluí-lo — o conector e seu histórico permanecem intactos, e você pode reativá-lo depois.
Erros
Todo erro usa o envelope padrão. Os casos mais comuns para este recurso:
| HTTP | type | Causa típica |
|---|---|---|
400 | validation_error | Credenciais inválidas ou incompletas para o provedor, ou uma exclusão bloqueada porque o conector ainda está referenciado pelo roteamento. |
401 | authentication_error | Chave de API ausente ou inválida. |
403 | authorization_error | A chave não possui o escopo necessário, ou uma chave de Merchant tentando acessar o caminho de outro merchant. |
404 | not_found_error | Conector (ou merchant) não encontrado ou não pertencente ao solicitante. |
429 | rate_limit_error | Limite de taxa excedido — recue exponencialmente. |
Consulte Erros para o envelope completo e o catálogo de tipos.
Relacionados
- Provedores de pagamento — descubra os provedores conectáveis e seus métodos de autenticação suportados.
- Perfis de roteamento — decida qual conector atende cada cobrança.
- Transações — veja os conectores em ação na linha do tempo de roteamento.
- Autenticação — provisione chaves e escopos.