Organizations & Merchants

Entenda o modelo multi-tenant da Tokeflow e escolha entre a integração de API em nível de Organization e em nível de Merchant.

A Tokeflow é multi-tenant por design. Cada conta é modelada como uma Organization que possui um ou mais Merchants. Essa hierarquia de dois níveis é a base de como você autentica, delimita o escopo dos dados e governa o acesso em toda a sua plataforma.

Você integra em um de dois níveis:

  • Nível de Organization — um único conjunto de credenciais que opera em todos os merchants da organização. Ideal para plataformas e sistemas de back-office.
  • Nível de Merchant — credenciais com escopo limitado a um único merchant, no qual o merchant é inferido automaticamente. Ideal para uma única loja.

Esta página explica a hierarquia e ajuda você a escolher o nível de integração certo. Para formatos de cabeçalho e manuseio de chaves, consulte Autenticação.

A Tokeflow é uma plataforma de orquestração de pagamentos — a infraestrutura por trás da sua plataforma. Ela padroniza as operações de pagamento entre os provedores conectados; os provedores conectados cuidam do processamento e da liquidação.

A hierarquia

Uma Organization é o tenant de nível superior. Ela possui Merchants. Cada Merchant é totalmente isolado: tem suas próprias credenciais de API, catálogo de produtos, clientes, transações e endpoints de webhook. Os dados nunca vazam através das fronteiras entre merchants.

ConceitoPossuiExemplos de recursos com escopo
Organization (org_…)Um ou muitos MerchantsMerchants, relatórios de toda a organização, chaves de API da organização
Merchant (mrc_…)Seus próprios dados isoladosProdutos, clientes, transações, pedidos, assinaturas, endpoints de webhook

Merchants e chaves de API são criados no Tokeflow Dashboard durante o onboarding, não pela API pública. Uma vez provisionados, você recebe as chaves que usa para autenticar cada requisição.

Integração em nível de Organization

Uma chave de Organization abrange todos os merchants da organização. Use-a a partir de uma plataforma central ou de um sistema de back-office que precise operar em nome de muitos merchants com uma única credencial.

Como a chave de organização não está vinculada a um único merchant, você precisa informar à Tokeflow qual merchant uma operação com escopo de merchant tem como alvo:

  • Endpoints de listagem e leitura: passe o merchant como o parâmetro de consulta merchant_id.
  • Endpoints de criação: passe merchant_id no corpo da requisição.

Omitir merchant_id em uma operação com escopo de merchant retorna 400 validation_error.

# Organization key — list a specific merchant's transactions
curl https://api.tokeflow.com/api/v1/transactions?merchant_id=mrc_123&page=1&limit=20 \
  -H "Authorization: Bearer sk_live_org_xxxxxxxxxxxxxxxxxxxx"
// Organization key — create a customer for a specific merchant
const res = await fetch("https://api.tokeflow.com/api/v1/customers", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TOKEFLOW_ORG_SECRET_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    merchant_id: "mrc_123", // required for org keys on merchant-scoped resources
    email: "ada@example.com",
    name: "Ada Lovelace",
  }),
});

Se merchant_id estiver ausente, a API responde:

{
  "error": {
    "type": "validation_error",
    "code": "MERCHANT_ID_REQUIRED",
    "message": "merchant_id is required when using organization API keys",
    "details": {},
    "request_id": "req_8f3c2a1b9d",
    "timestamp": "2026-01-15T12:30:00.000Z"
  }
}

Integração em nível de Merchant

Uma chave de Merchant tem escopo permanentemente limitado a um único merchant. O merchant é inferido a partir da chave — você nunca passa merchant_id. Use-a para uma única loja ou qualquer integração que só toque em um merchant.

# Merchant key — list this merchant's transactions (no merchant_id needed)
curl https://api.tokeflow.com/api/v1/transactions?page=1&limit=20 \
  -H "Authorization: Bearer sk_live_mer_xxxxxxxxxxxxxxxxxxxx"
// Merchant key — create a customer (merchant is inferred)
const res = await fetch("https://api.tokeflow.com/api/v1/customers", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TOKEFLOW_MERCHANT_SECRET_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    email: "ada@example.com",
    name: "Ada Lovelace",
  }),
});

Uma resposta bem-sucedida é encapsulada no envelope de sucesso padrão:

{
  "success": true,
  "data": {
    "id": "cust_4f9a1c2e7b",
    "merchant_id": "mrc_123",
    "email": "ada@example.com",
    "name": "Ada Lovelace",
    "created_at": "2026-01-15T12:30:00.000Z",
    "updated_at": "2026-01-15T12:30:00.000Z"
  },
  "request_id": "req_8f3c2a1b9d",
  "timestamp": "2026-01-15T12:30:00.000Z"
}

Uma chave de merchant nunca pode alcançar os dados de outro merchant — o isolamento é imposto no lado do servidor. Solicitar um recurso que pertence a um merchant diferente retorna 404 not_found_error, e não o recurso.

Chave de Organization vs chave de Merchant

Ambos os níveis de chave existem como chaves secretas (sk_…, apenas no lado do servidor) e chaves públicas (pk_…, seguras para o cliente). O nível controla sobre qual entidade a chave atua; o tipo controla onde ela pode ser usada. Consulte Autenticação para a anatomia e o manuseio das chaves.

CapacidadeChave de OrganizationChave de Merchant
Prefixo secretosk_live_org_…sk_live_mer_…
Prefixo públicopk_live_org_…pk_live_mer_…
Escopo de acessoTodos os merchants da organizaçãoUm único merchant
merchant_id obrigatórioSim, em listagem/leitura com escopo de merchant (query) e criação (body)Não — o merchant é inferido
Gerenciar merchantsSim (ex.: merchants:read, merchants:write)Não
Relatórios de toda a organizaçãoSimNão (apenas um único merchant)
Recursos por merchant (transações, clientes, pedidos, produtos, ofertas, assinaturas, webhooks)Sim, para qualquer merchantSim, para seu próprio merchant
Uso típicoPlataforma / back-office sobre muitas lojasUma única loja

Os escopos são independentes do nível. Uma chave só concede os escopos resource:action atribuídos a ela durante o onboarding (ex.: transactions:read, products:write). Uma requisição que não tenha o escopo exigido retorna 403 authorization_error, mesmo que a chave possa alcançar o merchant alvo de outra forma.

Quando usar cada uma

Escolha o nível de integração que corresponde à forma como seu sistema mapeia para os merchants.

Use uma chave de Organization quando:

  • Você opera uma plataforma ou marketplace que gerencia muitos merchants.
  • Um serviço de back-office, faturamento ou análise precisa de visibilidade sobre toda a organização.
  • Você provisiona ou concilia dados entre lojas a partir de um único lugar.

Use uma chave de Merchant quando:

  • Você está integrando uma única loja ou marca.
  • Você quer as requisições mais simples possíveis — sem merchant_id para gerenciar.
  • Você quer limitar o raio de impacto de uma credencial a um único merchant.

Muitas plataformas usam ambas: uma chave de Organization no plano de controle central e uma chave de Merchant dedicada entregue à integração de cada loja. Isso mantém as credenciais de nível de loja com escopo restrito, preservando o controle sobre toda a organização.

Próximos passos

  • Autenticação — anatomia das chaves, cabeçalhos, chaves secretas vs públicas e regras de segurança.

Nesta página