seller— uma empresa ou pessoa física que vai receber pagamentos e liquidar na sua própria conta bancária/PIX. Na aprovação, a Caratuva provisiona os trilhos de liquidação para que o vendedor fique pronto para repasses.buyer— um pagador que você verifica antes de um pagamento.
Esta é a superfície de onboarding/verificação. A v1 deixa um vendedor conectado pronto para repasses (recebedor verificado + carteira de off-ramp + destino PIX registrado), mas rotear os fundos de um pedido de pagamento para um vendedor conectado — e permitir que um comprador conectado pague sem refazer o KYC — são etapas posteriores. O KYC do comprador para o fluxo de pagamento hospedado permanece inalterado (Buyer KYC).
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):
| Escopo | Concede |
|---|---|
connected_accounts:write | create, ToS, upload-url, submit, payout-config |
connected_accounts:read | get, list |
O ciclo de vida
status: created (casca local, ainda sem recebedor) · verifying (enviado ao parceiro de liquidação) · approved · rejected.
1. Criar
| Campo | Tipo | Obrigatório | Observações |
|---|---|---|---|
role | seller | buyer | sim | O que o cliente final fará depois de verificado. |
entityType | business | individual | sim | Seleciona o caminho de verificação no submit. |
externalId | string (1–200) | não | Sua chave primária para este cliente final. Único por (org, mode). Recriar com o mesmo valor retorna a conta existente — seguro sob retentativa. |
email, legalName, displayName, country, taxId | string | não | Dicas de identidade; finalizadas no submit. |
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.
Consultar
ConnectedAccount inclui status, receiverId, tosAccepted, payoutConfigured 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/connected-accounts/:id (ou GET /v1/connected-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.
Eventos de webhook de saída para mudanças de status de contas conectadas (por exemplo,
connected_account.approved) são uma etapa posterior — diferentemente dos pedidos de pagamento, uma conta conectada não está vinculada à linha do tempo de uma fatura. Por enquanto, faça polling nos endpoints de consulta.