Marketplace - Credenciamento pela sua própria tela
Visão Geral
O link de credenciamento abre uma página hospedada pela Selectwin. Se a sua plataforma prefere que o vendedor preencha o cadastro dentro do seu produto, use os mesmos passos pela API: o token do link é a credencial, e cada chamada leva o token no caminho, sem chave de API.
GET /v1/marketplace/kyc/{token} valida o link e devolve o nome da sub-conta
GET /v1/marketplace/kyc/{token}/onboarding o cadastro como está (passo atual, o que falta)
GET /v1/marketplace/kyc/{token}/onboarding/document-types tipos de documento que o passo 1 pode escolher
GET /v1/marketplace/kyc/{token}/onboarding/document-requirements o que o passo 3 tem de entregar e em que pé está
POST /v1/marketplace/kyc/{token}/onboarding/invite-code/validate confere um código de convite sem consumir
POST /v1/marketplace/kyc/{token}/assets/uploads pede uma URL de upload para um documento
POST /v1/marketplace/kyc/{token}/assets/uploads/{assetId}/confirm confirma o upload
POST /v1/marketplace/kyc/{token}/onboarding/step-1 … step-6 os seis passosOs corpos de cada passo estão na referência OpenAPI (operações submitKycStep1 a submitKycStep6); abaixo, o que cada um faz e os campos que importam.
Precauções
- O token é uma credencial. Guarde-o só no seu servidor e nunca o exponha no navegador do vendedor nem em logs. Se a sua tela roda no navegador, o seu backend faz as chamadas.
- O link vale 7 dias e só para uma sub-conta ainda não ativa. Gerar um novo link invalida o anterior.
- Os passos são os mesmos do cadastro normal: cada envio grava e pode ser reenviado para corrigir, até o passo 6, que fecha o cadastro e o põe em análise.
- Os uploads têm limite por hora por sub-conta (
429 kycUploadLimitReached). - Dados de pessoas (CPF, nascimento, endereço) são dados pessoais: colete só o que o passo pede e trate conforme a LGPD.
Os passos
| Passo | O que envia | Campos principais |
|---|---|---|
| 1 | O tipo de conta | documentType (cpf ou cnpj), country, revenue (faturamento mensal em centavos, mínimo 5000). CPF pode exigir inviteCode quando o cadastro de pessoa física está fechado — confira antes com invite-code/validate |
| 2 | A identidade | CNPJ: legalBusinessName, companyName (nome fantasia, opcional), document (CNPJ), address, phone e owner (o representante: firstName, lastName, document CPF, birthDate, phone, address opcional). CPF: firstName, lastName, birthDate, document, address, phone, isPoliticallyExposed |
| 3 | Os documentos | documents[] com documentType e assetId de cada arquivo enviado pelos uploads. O que é exigido vem de document-requirements — uma alternativa completa por exigência basta |
| 4 | Contato e fatura do cartão | softDescriptor (até 13 caracteres, o que aparece na fatura do comprador), email, phone |
| 5 | A conta de saque | bankCode, routingNumber (agência), accountNumber. Vira a carteira principal da sub-conta |
| 6 | O fechamento | category, description, monthlyBillingEstimate (centavos, mínimo 5000), website e referrer opcionais. Fecha o cadastro: a sub-conta passa a analyzing e o webhook seller.analyzing sai |
Documentos: o fluxo de upload
GET …/onboarding/document-requirements— para cada exigência (identity,selfie,proof_of_address_company…), as alternativas aceitas e ostatusde cada uma.POST …/assets/uploadscom{ filename, contentType, byteSize }— responde a URL assinada e oassetId. Envie o arquivo para a URL.POST …/assets/uploads/{assetId}/confirm— confirma.POST …/onboarding/step-3comdocuments: [{ documentType, assetId }].
A resposta de document-requirements traz também captureQuality: a régua que uma foto de documento deve atingir (resolução, nitidez, exposição) para não ser recusada na análise. Use-a para avisar o vendedor enquanto ele ainda pode fotografar de novo.
Depois do passo 6
Acompanhe como no fluxo pelo link: seller.analyzing → seller.approved (a sub-conta fica active) ou seller.refused; se a análise pedir documentos de novo, seller.kycRequired e a sub-conta volta a awaiting-documents. A plataforma lê o estado a qualquer momento em Andamento do cadastro, sem o token.
Erros
| HTTP | error.code | Quando |
|---|---|---|
| 404 | kycLinkInvalid | Token inválido, vencido ou revogado — ou a sub-conta já está ativa |
| 400 | invalidParameters | Corpo do passo inválido (error.params diz o campo) |
| 422 | (regra do passo) | Uma regra do cadastro, por exemplo um documento que não serve para a exigência |
| 429 | kycUploadLimitReached | Uploads demais pelo link na última hora |
Atualizado em 21 de outubro de 2026