Marketplace (Sub-contas) - Visão Geral
Introdução
O recurso de Marketplace permite que a sua conta opere como uma plataforma: você cadastra sub-contas (os vendedores que vendem por meio de você), acompanha o credenciamento de cada uma, define quanto a plataforma leva em cada venda e cobra em nome delas. É o modelo "Connect": cada sub-conta é um vendedor com cadastro, saldo e saques próprios, e a plataforma recebe a sua parte automaticamente.
O recurso é habilitado por conta. A Selectwin liga a função para a sua conta e a submete a uma aprovação de compliance; só depois disso a API aceita criar sub-contas. Consulte o estado com GET /v1/marketplace.
Conceito e Funcionalidade
Uma sub-conta nasce com o status pending e passa pelo mesmo credenciamento (KYC) de qualquer conta Selectwin. Há dois caminhos para completá-lo:
- Link de credenciamento: você gera um link secreto para a sub-conta e o envia ao vendedor; ele preenche os dados e documentos numa página hospedada pela Selectwin, sem precisar de login. Veja Link de credenciamento.
- Pelo painel: quem tem acesso à plataforma alterna para a sub-conta e preenche o cadastro.
Enquanto a sub-conta não está active, ela não cobra nem saca. Assim que é aprovada, você passa a cobrar em nome dela com onBehalfOf em Transações e em Sessões de checkout, e a plataforma recolhe a sua taxa como um split adicional.
A taxa da plataforma é definida de uma de duas formas, por sub-conta:
| Forma | Como | Quando usar |
|---|---|---|
platformFee | Um percentual (percentage, até 100) ou um valor fixo em centavos (flat) sobre cada venda | Uma regra simples, igual para todos os meios de pagamento |
planId | Um plano de taxas (rate_…) com taxa por meio de pagamento, parcelas, prazo de liberação e tarifa de saque | Tabelas diferentes por grupo de vendedores |
Uma sub-conta usa uma das duas (nunca ambas). Sem nenhuma, a plataforma não recolhe taxa nas vendas dela.
Fluxo típico
GET /v1/marketplace— confirmeenabled: trueeapprovalStatus: "approved".POST /v1/marketplace/sub-accounts— crie a sub-conta com o nome do vendedor e a taxa (ou o plano).POST /v1/marketplace/sub-accounts/{companyId}/kyc-link— gere o link e envie ao vendedor.- Acompanhe pelos webhooks
seller.*(seller.analyzing,seller.approved,seller.refused…) ou por consulta:status,kycSubmittedAteapprovedAt. - Com a sub-conta
active, cobre comonBehalfOf: "bus_…". - Para consultar, capturar ou estornar essa venda, ler o saldo ou pedir um saque da sub-conta, opere como ela com o cabeçalho
X-Selectwin-Account.
Operar como a sub-conta
A venda feita com onBehalfOf pertence à sub-conta. Tudo o que é dela — vendas, saldo, recebíveis, carteiras, saques, clientes — a plataforma alcança enviando X-Selectwin-Account: bus_… junto da sua chave de API: a requisição roda na sub-conta e a resposta vem com merchant.isSubAccount: true. Só chave de API, só sub-conta sua; o cabeçalho nunca é ignorado. Guia: Operar como a sub-conta.
Estrutura do Objeto Sub-conta
{
"id": "bus_01hqzvsub1",
"name": "Loja da Maria",
"status": "pending",
"platformFee": { "type": "percentage", "value": 10 },
"planId": null,
"createdAt": "2026-10-17T12:00:00.000Z",
"kycSubmittedAt": null,
"approvedAt": null,
"volume30dCents": 0
}| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador da sub-conta (bus_…). É o valor de onBehalfOf nas cobranças |
name | string | Nome do vendedor |
status | string | pending (cadastro em aberto), analyzing (em análise), awaiting-documents (documentos pedidos de novo), active (aprovada: cobra e saca), blocked, disabled. Trate valores novos com um caminho padrão |
platformFee | object | null | A taxa simples da plataforma: { "type": "percentage" | "flat", "value": número }. null quando a sub-conta usa um plano ou não tem taxa |
planId | string | null | O plano de taxas atribuído (rate_…), ou null |
createdAt | string | Quando a sub-conta foi criada (ISO 8601, UTC) |
kycSubmittedAt | string | null | Quando o vendedor enviou o cadastro para análise. null enquanto não enviou |
approvedAt | string | null | Quando o cadastro foi aprovado (a última passagem para active). null se nunca |
volume30dCents | integer | null | Volume aprovado da sub-conta nos últimos 30 dias, em centavos, em produção. null quando a leitura não estava disponível (a consulta nunca falha por isso) |
Estado da plataforma
GET /v1/marketplace{
"enabled": true,
"subAccountCount": 12,
"subAccountLimit": 20,
"isSubAccount": false,
"approvalStatus": "approved"
}| Campo | Descrição |
|---|---|
enabled | A função de marketplace está ligada para a sua conta |
subAccountCount · subAccountLimit | Quantas sub-contas existem e quantas a conta pode ter. Para subir o limite, fale com o seu gerente de conta |
isSubAccount | true quando a conta autenticada é ela mesma uma sub-conta (uma sub-conta não cria sub-contas) |
approvalStatus | pending (aguardando compliance), approved (pode criar sub-contas) ou rejected; null quando a função nunca foi ligada |
Precauções
- Chave de API: o recurso é alcançado por chaves de acesso Total. A opção de restringir uma chave só a este recurso ainda não está disponível no painel.
- Sandbox: as sub-contas são um recurso de conta, com uma cópia só (a de produção). Uma escrita com chave
sk_test_responde409 accountLevelReadOnlyInSandbox; crie e altere sub-contas comsk_live_. As leituras funcionam nos dois ambientes. - Idempotência: a criação de sub-conta aceita
X-Idempotency-Key— use-a em toda retentativa para não cadastrar o mesmo vendedor duas vezes. - Dados do vendedor: o cadastro (documentos, conta de saque) é preenchido pelo próprio vendedor pelo link, ou por você no painel. Não há como enviar documentos de terceiros por esta API.
- Limite: ao atingir
subAccountLimit, a criação responde422 subAccountLimitReached.
Webhooks
A plataforma recebe nos seus endpoints de webhook todos os eventos de cada sub-conta a que estiver inscrita — os seller.* do credenciamento (seller.created, seller.analyzing, seller.approved, seller.refused, seller.kycRequired, seller.blocked, seller.disabled, seller.reinstated) e também os das vendas, recebíveis e saques dela (transaction.*, receivable.*, withdrawal.*…). Cada um desses eventos traz, no envelope, o campo account com o id da sub-conta a que pertence; os eventos da sua própria conta não têm o campo. Veja o Catálogo de eventos e a estrutura do evento.
Recursos Disponíveis
| Operação | Método e caminho | Guia |
|---|---|---|
| Estado da plataforma | GET /v1/marketplace | esta página |
| Criar sub-conta | POST /v1/marketplace/sub-accounts | Criar |
| Listar sub-contas | GET /v1/marketplace/sub-accounts | Listar |
| Consultar sub-conta | GET /v1/marketplace/sub-accounts/{companyId} | Consultar |
| Alterar taxa / plano | PATCH /v1/marketplace/sub-accounts/{companyId} · PUT …/{companyId}/plan | Atualizar |
| Link de credenciamento | POST · GET · DELETE /v1/marketplace/sub-accounts/{companyId}/kyc-link | Link de credenciamento |
| Planos de taxas | /v1/marketplace/plans e /v1/marketplace/plans/{planId} | Planos |
| Andamento do cadastro | GET /v1/marketplace/sub-accounts/{companyId}/onboarding | Andamento do cadastro |
| Suspender e reabilitar | POST …/{companyId}/suspend · POST …/{companyId}/reinstate | Suspender e reabilitar |
| Excluir (pedir o encerramento) | POST · GET · DELETE …/{companyId}/closure-request | Excluir |
| Credenciamento pela sua tela | /v1/marketplace/kyc/{token}/… | Credenciamento pela sua própria tela |
| Operar como a sub-conta | cabeçalho X-Selectwin-Account em toda a API | Operar como a sub-conta |
Códigos de erro deste recurso: Catálogo de Códigos de Erro.
Atualizado em 21 de outubro de 2026