/v1/accounts, KYB (empresas) ou KYC (pessoas físicas), servidor a servidor, sem redirecionar ninguém para um fluxo hospedado. Cada uma é um recebedor no nosso parceiro de liquidação, privado da sua organização e vinculado a um modo (teste ou produção).
Dois papéis:
seller— uma empresa ou pessoa física que recebe pagamentos e liquida no próprio PIX. É para ele que uma fatura cobra. Na aprovação, a Caratuva provisiona os trilhos de liquidação (recebedor verificado + carteira de off-ramp); ao registrar o PIX dele, ele ficareadyToCollecte pode ser indicado em faturas.buyer— um pré-KYB opcional de um pagador empresa já conhecido. Não é necessário no fluxo normal: o pagador de um pagamento hospedado passa por KYC automaticamente no momento do pagamento (Buyer KYC) e não precisa de conta conectada.
Um vendedor aqui é o destino de liquidação das suas faturas. Assim que ele reportar
readyToCollect: true, indique-o pelo externalId ao criar uma fatura ou um pedido de pagamento (sellerExternalId) — os fundos liquidam no PIX desse vendedor. Veja o Guia rápido de vendedores.Autenticação e escopos
Todas as rotas usam sua chave de API (X-API-Key: pk_<test|live>_...). O prefixo da chave fixa o modo — uma conta conectada criada com uma chave pk_test_ é invisível em produção e roteia para o sandbox do parceiro de liquidação. As rotas exigem o escopo correspondente (chaves sem escopos definidos não têm restrição, por compatibilidade retroativa):
O ciclo de vida
status: created (casca local, ainda sem recebedor) · verifying (enviado ao parceiro de liquidação) · approved · rejected.
1. Criar
Retorna um
ConnectedAccount com status: "created".
2. Termos de Serviço (por cliente final)
Nosso parceiro de liquidação exige a aceitação dos Termos de Serviço antes que um recebedor possa ser criado. Crie uma sessão, direcione seu cliente final para a URL e registre otos_id vindo do redirecionamento.
tos-accepted exige que uma sessão tenha sido criada primeiro (ela vincula o redirecionamento a esta conta, fechando a janela de replay do tos_id entre contas). Você também pode passar o tosId diretamente no submit; ele deve corresponder ao valor registrado.
3. Documentos (opcional)
Forneça suas próprias URLs HTTPS pré-hospedadas no corpo dosubmit, ou crie URLs de upload assinadas e de curta duração:
kind: selfie · id_doc_front · id_doc_back · proof_of_address · incorporation_doc · proof_of_ownership_doc. Para beneficiários finais de empresas, passe ownerIndex (um inteiro baseado em zero, 0–20). Faça o PUT dos bytes para uploadUrl com os headers retornados e, em seguida, passe publicUrl no submit. Retorna 503 KycStorageDisabled se o armazenamento de documentos não estiver configurado — use URLs pré-hospedadas nesse caso.
4. Enviar ao parceiro de liquidação
Um único endpoint; os campos exigidos dependem de(role, entityType). Campos ausentes retornam 400 ConnectedAccountMissingFields com os caminhos problemáticos.
Vendedor empresa (createKyb, CNPJ brasileiro):
createKyc):
createBuyerKyb) exige legalName, formationDate, taxId, website, country, campos de endereço, incorporationDocFile, proofOfOwnershipDocFile e ao menos um beneficiário final em owners[] (role, nome, dateOfBirth, taxId, endereço, idDocType, selfieFile, idDocFrontFile, proofOfAddressDocType, proofOfAddressDocFile).
O submit é idempotente enquanto a conta está verifying/approved — ele retorna o envio atual em vez de criar um segundo recebedor. No sandbox, o KYB é aprovado automaticamente; o KYC fica em verifying e é concluído via webhook.
5. Destino de repasse do vendedor (PIX)
Depois que um vendedor é aprovado, registre onde ele recebe os pagamentos. A chave PIX bruta é enviada ao nosso parceiro de liquidação e nunca é armazenada pela Caratuva.approved primeiro (caso contrário, 400 ConnectedAccountNotApproved). Depois disso, a conta reporta payoutConfigured: true e — com KYB aprovado + carteira de off-ramp + PIX — readyToCollect: true. Esse booleano é o seu único gate: só um vendedor readyToCollect pode ser indicado em uma fatura.
6. Cobrar para este vendedor
Assim que um vendedor estáreadyToCollect, crie uma fatura (ou pedido de pagamento) indicando-o pelo externalId — os fundos liquidam no PIX desse vendedor:
sellerExternalId é obrigatório em toda fatura e pedido de pagamento.
Consultar
ConnectedAccount inclui status, receiverId, tosAccepted, payoutConfigured, readyToCollect e approvedAt / rejectedAt. A listagem é paginada por cursor (nextCursor), filtrável por role e status.
Como as atualizações de status chegam
A decisão de verificação do parceiro de liquidação chega ao webhook de entrada assinado da Caratuva; a Caratuva resolve o recebedor para a sua conta conectada e atualiza o status dela (de forma idempotente). Uma decisão terminal (approved/rejected) também expurga quaisquer documentos que a Caratuva tenha armazenado para a conta.
Para observar o resultado hoje, faça polling em GET /v1/accounts/:id (ou GET /v1/accounts?status=verifying) até que status seja terminal. No sandbox, o KYB de vendedor empresa é aprovado automaticamente e de forma síncrona no submit, então a resposta do submit já carrega approved.
Assine os webhooks de saída
connected_account.* para saber quando um vendedor fica apto a cobrar, sem precisar de polling: connected_account.created, connected_account.kyb_approved, connected_account.kyb_rejected e connected_account.ready_to_collect. Veja Webhooks.