Calebe Pay Documentação da API de pagamentos e subtenantsBaixar OpenAPI
DOCUMENTAÇÃO PARA DESENVOLVEDORES

Pagamentos, assinaturas e subtenants
com a API Calebe Pay.

Cobre por Pix, boleto, cartão, link de pagamento ou assinatura recorrente, e cadastre empresas filhas, a partir do backend do seu sistema, ERP, e-commerce ou SaaS. Uma API REST com chave por empresa, idempotência em toda criação e eventos assinados por webhook.

Sua primeira requisição

Defina as duas variáveis abaixo no seu servidor, escolha o que criar e a linguagem, copie o exemplo e envie.

Endereço da API · CALEBE_API_URL
https://api.calebepay.com.br
Autenticação · CALEBE_API_KEY
X-API-Key: <sua chave de API>
Rota
POST/v1/pix
Permissão da chave
pix:write
# A chave precisa da permissão pix:write.
curl -X POST "$CALEBE_API_URL/v1/pix" \
  -H "X-API-Key: $CALEBE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: pedido-2026-00042-pix-1" \
  -d '{
  "amount": 1250,
  "reference": "pedido-2026-00042",
  "description": "Pedido de demonstração",
  "customer": {
    "name": "Cliente de demonstração",
    "document": "00000000000",
    "email": "cliente@example.com",
    "phone": "11999999999",
    "address": {
      "zip_code": "01001000",
      "street": "Rua Exemplo",
      "number": "100",
      "district": "Centro",
      "city": "São Paulo",
      "state": "SP"
    }
  },
  "expires_in": 3600
}'
Resposta 201 esperadaJSON
{
  "data": {
    "id": "txn_exemplo",
    "status": "pending",
    "method": "pix",
    "amount": 1250,
    "currency": "BRL",
    "livemode": true,
    "pix_copy_paste": "00020126…6304ABCD",
    "expires_at": "…"
  }
}

Guarde data.id junto do pedido. Um resultado incerto volta como 202 com status: unknown; repetir com a mesma Idempotency-Key devolve a mesma cobrança, nunca uma nova.

Para consultar resultados, a chave também precisa de transactions:read.

Do zero ao primeiro pagamento

  1. 1

    Gere uma chave de API

    Com a permissão do meio (pix:write, boleto:write ou credit_card:write). Comece por uma de teste, que não cobra ninguém.

    Abrir Chaves de API ↗
  2. 2

    Crie a primeira cobrança

    Copie o exemplo na sua linguagem, com a chave em CALEBE_API_KEY.

  3. 3

    Receba o resultado

    Cadastre um webhook para saber quando a cobrança for paga ou expirar, ou consulte GET /v1/transactions/{id}.

    Abrir Webhooks ↗

Teste antes de cobrar

Uma chave de teste (cp_test_) usa a mesma URL, os mesmos endpoints e os mesmos formatos da produção, com a mesma validação. A diferença: tudo o que ela cria é simulado. Nada é cobrado e nada chega ao provedor de pagamento.

Criar chave de teste ↗
  1. 1

    Gere uma chave de teste

    No portal, em Chaves de API, escolha Teste (sandbox). Ela começa com cp_test_.

  2. 2

    Integre

    Use o exemplo acima com a chave de teste em CALEBE_API_KEY. Tudo volta com livemode: false.

  3. 3

    Simule o pagamento ou a expiração

    POST /v1/transactions/{id}/simulate com {"status":"paid"} ou {"status":"expired"}. Só a chave de teste pode simular.

  4. 4

    Valide os webhooks

    Cadastre um endpoint de teste no portal: os eventos das cobranças de teste vão só para ele, com livemode: false.

  5. 5

    Troque pela chave de produção

    Crie uma chave de produção (cp_live_) e troque só a chave. Mesma URL, mesmo código.

SIMULAR O PAGAMENTO DE UMA COBRANÇA DE TESTE
curl -X POST "$CALEBE_API_URL/v1/transactions/$TRANSACTION_ID/simulate" \
  -H "X-API-Key: $CALEBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"paid"}'

Na assinatura de teste, o primeiro ciclo sai em até um minuto quando o vencimento já está dentro da antecedência; no Pix Automático, simule a aprovação do pagador com POST /v1/pix-automatic/authorizations/{id}/simulate.

O aviso de que a cobrança mudou

Cada mudança de status chega ao seu endpoint como transaction.updated, assinada com o segredo da sua conta (Calebe-Signature). A criação chega como transaction.created. O mesmo vale para o callback_url informado numa cobrança, num checkout ou numa assinatura.

Expiração automática. Um Pix não pago sai de pending sozinho poucos minutos depois de expires_at, e você recebe transaction.updated com expired. Raramente um pagamento tardio muda expired para paid: trate paid como definitivo.

  1. pendingaguardando pagamento
  2. paiddefinitivo: entregue o pedido
    expiredautomático, após expires_atraro: pode virar paid

Acompanhe até a confirmação

GET /v1/transactions/{id} retorna o estado guardado. POST /v1/transactions/{id}/refresh consulta o provedor de pagamento e atualiza o registro. Use os webhooks como aviso e mantenha um polling limitado no seu backend, retomando pedidos pendentes depois de reinícios.

EstadoComportamento da integração
processing / pendingContinue consultando de forma limitada.
paidPagamento confirmado. Valide pelo backend antes de entregar.
expired / failedNão libere o pedido. Mostre uma orientação clara. Raramente, expired é seguido de paid: trate paid como definitivo — entregue o pedido ou devolva o valor.
unknownResultado incerto. Reconcilie; não crie cobrança duplicada.
refundedDevolução informada pelo provedor; atualize seu pedido.

Veja todos os códigos HTTP e as regras de retentativa em Respostas, validação e estados.

Assinaturas e Pix Automático

Cadastre a recorrência uma vez e a Calebe Pay emite a cobrança de cada ciclo: um boleto, um link de Pix ou um débito por Pix Automático, na antecedência que você escolher. O calendário é em meses (12 = anual), no horário de Brasília, e cada cobrança emitida segue as mesmas tarifas, o mesmo split e os mesmos webhooks de uma cobrança avulsa.

POST/v1/subscriptionsCriar assinatura · boleto, pix, pix_automatic ou credit_card
GET/v1/subscriptions/{id}/cyclesCiclos, cobrança de cada um e link do pagador
PATCH/v1/subscriptions/{id}Pausar, retomar ou cancelar
PUT/v1/subscriptions/{id}/credit-cardTrocar o cartão salvo
POST/v1/subscriptions/{id}/cycles/{cycle}/retryCobrar de novo um ciclo recusado no cartão
POST/v1/pix-automatic/authorizationsPedir a autorização do pagador · aprovação em até 24 horas
POST/v1/pix-automatic/chargesAgendar um débito avulso de 2 a 10 dias antes

No Pix Automático, o pagador aprova uma vez no aplicativo do banco e os débitos seguintes acontecem sem nova ação dele. O primeiro vencimento precisa estar ao menos 2 dias à frente, porque cada débito é agendado de 2 a 10 dias antes.

Guia de assinaturas e Pix Automático

Emita seu primeiro boleto

Com o boleto habilitado para a sua conta, emita uma chave com boleto:write e transactions:read. Endereço do pagador e vencimento YYYY-MM-DD são obrigatórios.

POST/v1/boletoEndereço + boleto.due_date · mesma idempotência do Pix

O guia inclui preparação do payload com vencimento válido, exemplos cURL/Node/Python/Go, limites e diagnósticos. No modo de teste, URL e linha digitável são nulas. O boleto real sai, sempre que possível, com um Pix do mesmo valor, válido até o fim do dia do vencimento, e boleto_url é o PDF gerado pela Calebe Pay, com o QR desse Pix. processing de boleto ainda não confirma pagamento.

Guia completo de boletos

Cadastre um subtenant e tente a conversão automática

Use uma chave de produção com subtenants:write. O tenant autenticado será sempre o pai do novo cadastro. O exemplo omite provider_id, então a API seleciona o primeiro provider marketplace ativo no roteamento e aplica suas taxas padrão aos meios de pagamento que não vierem em MerchantSplit. Os valores abaixo são fictícios: substitua todo o cadastro por dados reais e revisados antes de enviar.

POST/v1/subtenantsCadastro + tentativa imediata de criação da subconta · exige Idempotency-Key
EXEMPLO · cURL
curl --fail-with-body -X POST "$CALEBE_API_URL/v1/subtenants" \
  -H "X-API-Key: $CALEBE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: cadastro-loja-exemplo-1" \
  --data '{
    "tenant": { "name": "Loja Exemplo", "slug": "loja-exemplo" },
    "registration": {
      "Name": "Loja Exemplo LTDA",
      "CommercialName": "Loja Exemplo",
      "Identity": "11222333000181",
      "Email": "financeiro@loja-exemplo.com.br",
      "ResponsibleName": "Maria da Silva",
      "ResponsibleIdentity": "52998224725",
      "ResponsibleBirthDate": "1990-01-01",
      "ResponsiblePhone": "11999999999",
      "Address": {
        "ZipCode": "01310100", "Street": "Avenida Paulista",
        "Number": "1000", "District": "Bela Vista",
        "CityName": "São Paulo", "StateInitials": "SP", "CountryName": "Brasil"
      }
    }
  }'

A resposta inclui tenant_id, subaccount_id e conversion_status. Somente converted confirma a subconta; creating ou unknown exigem acompanhamento sem começar outro cadastro, e failed contém um diagnóstico seguro. HTTP 202 significa processamento ou resultado externo incerto. Em timeout, repita o mesmo corpo com a mesma chave.

Não envie parent_id. provider_id é opcional, mas, quando informado, precisa estar ativo e roteado para a árvore. O cadastro não aceita chave de teste e não cria uma chave de API para o filho.

Liste subtenants e emita suas chaves

GET/v1/subtenantsPermissão subtenants:read

Lista filhos diretos do tenant autenticado. Use include_descendants=true para todos os níveis, status=active ou suspended para filtrar e limit/offset para paginar. O padrão é 50 itens, com máximo de 100. Retorna data e meta; meta.count é a quantidade da página. Teste e produção consultam o mesmo cadastro, sem acesso ao próprio tenant, pais, irmãos ou outras árvores.

LISTAR · cURL
curl --fail-with-body \
  "$CALEBE_API_URL/v1/subtenants?include_descendants=true&status=active&limit=50&offset=0" \
  -H "X-API-Key: $CALEBE_API_KEY"
POST/v1/subtenants/{id}/api-keysPermissão subtenants:keys:write · exige Idempotency-Key

A chave do pai precisa conter subtenants:keys:write e cada permissão que será delegada. Selecione esses scopes em Chaves de API; chaves existentes não os recebem automaticamente. O destino deve ser um descendente ativo, com ancestrais ativos. Nome e scopes são obrigatórios. O modo omitido herda o da chave autenticada: teste só emite teste; produção pode emitir teste ou produção.

EMITIR CHAVE · cURL
curl --fail-with-body -X POST \
  "$CALEBE_API_URL/v1/subtenants/$SUBTENANT_ID/api-keys" \
  -H "X-API-Key: $CALEBE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: chave-erp-loja-1" \
  --data '{"name":"ERP da loja","mode":"test","scopes":["pix:write","transactions:read"]}'

O HTTP 201 retorna data.key, secret_available: true e os metadados em api_key. Guarde o segredo no backend: ele aparece uma única vez. A mesma tentativa retorna 200, Idempotency-Replayed: true, key: null e secret_available: false, sem emitir outra credencial. Dados diferentes geram 409 idempotency_conflict. Se perder o segredo, identifique a chave pelo replay, revogue no portal e faça outra emissão deliberada com nova idempotência.

Scopes não presentes no pai geram 403 scope_not_delegable; elevar teste para produção gera 403 key_mode_not_allowed. Destino fora da árvore ou o próprio tenant recebe 404. Emitir uma chave não habilita pagamentos nem altera roteamento. Revogar a chave do pai não revoga automaticamente as chaves dos filhos.

Contrato e regras de emissão

Autenticação e hierarquia

Use X-API-Key nos endpoints públicos. A chave define o tenant e o modo (teste ou produção) de tudo o que ela cria; no cadastro de subtenant, ela define o pai. A sessão Bearer do painel é independente.

O que você precisaComo fazer
Criar Pix ou Pix AutomáticoChave com permissão pix:write
Criar boletoChave com permissão explícita boleto:write
Cobrar cartão de créditoChave com permissão credit_card:write
Criar checkoutpix:write, boleto:write e/ou credit_card:write, conforme as formas oferecidas
Criar assinaturapix:write (Pix e Pix Automático), boleto:write (boleto) ou credit_card:write (cartão)
Gerenciar centros de custocost_centers:write para criar, renomear e desativar; transactions:read para consultar
Cadastrar subtenantChave de produção padrão com subtenants:write; o tenant da chave será o pai
Listar subtenantssubtenants:read
Emitir chaves para subtenantssubtenants:keys:write e todos os scopes delegados
Ler transações, checkouts e assinaturasChave com permissão transactions:read
Atualizar pelo provedortransactions:read + pix:write, boleto:write ou credit_card:write, conforme o método
Ver registros dos filhosinclude_descendants=true na listagem
Selecionar um filho na leituratenant_id dentro do escopo permitido
Não envie tenant_id em cobranças nem parent_id em POST /v1/subtenants. Cobranças continuam restritas ao tenant da chave. A gestão explícita de subtenants permite cadastrar filhos e emitir suas credenciais com os scopes correspondentes. Nunca coloque chaves de API no React, Expo ou Electron renderer: clientes públicos chamam o seu backend.

Todos os escopos, as 30 operações da API e o que só existe no painel estão em Tudo o que dá para fazer pela API.

Um contrato pequeno e explícito

POST/v1/pixCriar cobrança Pix · exige Idempotency-Key
POST/v1/boletoCriar boleto · exige Idempotency-Key
POST/v1/credit-cardCobrar cartão de crédito · exige Idempotency-Key
POST/v1/checkoutsLink em que quem paga escolhe Pix, boleto ou cartão
POST/v1/subscriptionsAssinatura com calendário da Calebe Pay
POST/v1/subtenantsCadastrar tenant filho e tentar conversão · exige chave de produção
GET/v1/transactionsListar · limit, offset, status, method, reference, tenant_id
GET/v1/transactions/{id}Ler estado persistido
POST/v1/transactions/{id}/refreshConsultar estado no provedor

Um objeto retorna {data: objeto}. Uma lista retorna {data: [], meta: {limit, offset, count}}. Um erro da aplicação retorna {error: {code, message, request_id}}. O limite padrão é 50 itens, com máximo de 100 por página.

Veja a lista completa, com assinaturas, Pix Automático, centros de custo e subtenants, em Tudo o que dá para fazer pela API, e todos os schemas e códigos de erro no OpenAPI. Pix, boleto e cartão usam a divisão automática das tarifas configuradas pela Calebe Pay; não envie recebedores no corpo. Não há endpoints de saque, cancelamento ou estorno de cobranças.

Repita com segurança

Uma chave idempotente identifica uma tentativa comercial: pagamento, checkout, assinatura, autorização ou cadastro de subtenant. A mesma chave e o mesmo payload reutilizam o recurso. A mesma chave com dados diferentes resulta em conflito.

  1. Persista a chave e o payload antes da chamada.
  2. Faça a chamada e salve os IDs retornados.
  3. Se houver timeout, reutilize a chave original. Não gere outra automaticamente.
  4. Se o resultado for unknown, reconcilie antes de iniciar uma nova tentativa.

O SDK TypeScript não realiza retries automáticos. Veja a tabela de erros e retentativas.

Construa com seu agente de IA

Forneça os dois arquivos abaixo ao seu assistente de programação. O guia contém a sequência correta, os limites da primeira versão e critérios objetivos de teste.

Prompt de integração

CONTEXTO PARA SEU AGENTE
Leia llms.txt, api.md, integration.md e openapi.json da Calebe Pay.
Implemente Pix e boleto no backend do meu sistema. Leia também boleto.md.
Solicite uma chave com boleto:write explicitamente.
Use variáveis de ambiente para a chave e a origem da API.
Persista pedido, payload e chave idempotente antes da rede.
Consulte pelo backend e libere apenas quando paid em produção.
Persista o vencimento do boleto; não recalcule a data em retries.
Trate timeout como resposta incerta, sem gerar nova chave.
Teste com uma chave de teste (cp_test_) e simule o pagamento em /v1/transactions/{id}/simulate.
Receba transaction.updated pelo webhook assinado e trate paid como definitivo.
Para cobranças recorrentes, leia subscriptions.md e use /v1/subscriptions; no Pix Automático, peça a autorização antes.
Para cadastrar empresas filhas, use POST /v1/subtenants com chave de produção e subtenants:write.
Não envie parent_id; leia conversion_status e preserve a mesma Idempotency-Key em resultado incerto.
Não invente endpoints ou meios de pagamento não implementados.

Contrato OpenAPI 3.1

Todos os endpoints, schemas, códigos de erro e exemplos de resposta, legíveis por máquina.

Assinaturas e Pix Automático

Calendário, ciclos, autorização do pagador, débitos agendados e testes.

Respostas e estados

Códigos HTTP, validações, estados das cobranças e quando repetir uma chamada.

Exemplos executáveis

Node.js, Python e Go, sem bibliotecas externas e sem retries ocultos.

Escolha como integrar os pagamentos da sua operação

Antes de implementar, conheça os fluxos e recursos disponíveis: integração Pix com QR Code e copia e cola, integração de boleto com vencimento e dados do pagador e link de pagamento com Pix e boleto. A visão geral do gateway de pagamento Calebe Pay ajuda a escolher entre o portal e a API para o seu negócio.