Uma listagem, várias entidades jurídicas: subsidiárias no AWS Marketplace
cerca de 8 min · áudio gerado ao tocar
Quem já operou um grupo com uma entidade por país conhece o custo escondido do AWS Marketplace: a mesma listagem recriada em cada conta vendedora, com descrição e dimensões de preço que divergem em silêncio. Em 29/10/2026 a AWS passou a permitir publicar o produto uma vez na conta primária e autorizar as subsidiárias a vender por oferta privada direta, cada uma com sua identidade fiscal, suas moedas e sua conta bancária. O anúncio vende isso como o fim da duplicação. Eu leio de outro jeito: a duplicação sai do catálogo e vira um problema de autorização, com estados, defaults e uma revogação que não faz o que o nome sugere.
A situação: o problema nunca foi o catálogo
Num grupo com uma entidade nos EUA, uma Ltda no Brasil e uma subsidiária na Índia, o motivo de ter três contas vendedoras não é técnico, é fiscal. Cada entidade precisa ser seller of record no seu mercado: segura o contrato com o cliente, fatura na moeda local, paga as próprias taxas do Marketplace e recebe na própria conta bancária. A documentação deixa isso explícito, e a funcionalidade nova não muda essa premissa. Ela só remove a obrigação de manter o produto dentro de cada conta.
O custo que pesava não era criar a listagem. Era manter três cópias sincronizadas por anos: cada dimensão de preço nova, cada ajuste de descrição, cada versão do produto multiplicada pelo número de entidades, e cada divergência descoberta por um cliente antes de ser descoberta por você. Esse é o custo de manutenção que a funcionalidade ataca, e ele é real.
O que ela coloca no lugar merece o mesmo cuidado. A conta primária passa a emitir autorizações, uma por produto e por subsidiária, dizendo em quais países e com quais dimensões de preço aquela entidade pode vender. Isso é controle de acesso sobre receita. Em ambiente regulado, qualquer coisa que decide quem vende o quê, para quem e onde cai no mesmo balde de um IAM role: precisa de dono, de trilha de auditoria e de revisão periódica.
Um detalhe que encurta o otimismo de quem já tem listagens duplicadas: agreements vivos numa listagem própria da subsidiária ficam nela e não podem ser movidos para o produto da primária. A migração vale para ofertas novas, não para a base instalada. Você vai conviver com os dois modelos até o último contrato antigo vencer.
O modelo: duas camadas e nada compartilhado por padrão
A autorização tem duas camadas, e confundir uma com a outra é o primeiro erro que eu esperaria ver em produção.
Conexão: feita no AWS Partner Central. A primária envia o pedido, com até 10 IDs de conta por envio, e um administrador da subsidiária aceita. O aceite tem um efeito colateral que precisa passar pelo jurídico: ele registra o consentimento da subsidiária em compartilhar receita atribuída e os relatórios do Marketplace insights com a primária. A conexão sozinha não autoriza venda nenhuma.
Autorização: uma entidade SubsidiaryAuthorization@1.0 no Catalog API, criada pela primária com StartChangeSet e a change type CreateSubsidiaryAuthorization. Ela nasce em Draft, vira Active com UpdateAvailability e termina em Restricted. Carrega o ARN do produto (imutável), a lista de Dimensions, o SubsidiaryAccountId (também imutável, vira a SubsidiaryTargetingRule) e um BuyerTargetingTerm com CountryCodes e OfferTargeting, que hoje aceita só PrivateOffer.
Service role: as duas contas precisam do AWSMarketplaceSubsidiaryAuthorizationServiceRole, que a AWS usa para criar o resource share entre elas. Sem ele, pelo console a autorização é criada e nunca fica ativa, e a subsidiária não enxerga nada. Pela API o erro aparece como INCOMPATIBLE_ACCOUNT_STATE na primária ou INCOMPATIBLE_SUBSIDIARY_ACCOUNT_STATE na subsidiária, e só no DescribeChangeSet, porque a validação é assíncrona.
IAM das pessoas: separado do service role, e você precisa dos dois. Para autorizar, a primária usa AWSMarketplaceSellerFullAccess ou AWSMarketplaceSellerProductsFullAccess; para criar oferta pela página de ofertas privadas, a subsidiária usa AWSMarketplaceSellerOfferManagement. Essas managed policies são largas. Em produção eu escreveria policy própria, restrita às ações do Catalog API que cada time de fato usa.
Quem controla o quê: produto na primária, contrato e dinheiro na subsidiária
O diagrama responde a uma pergunta: onde passa a fronteira de controle entre as contas. A primária é dona do produto e da autorização; a subsidiária é seller of record, define o preço e recebe. A linha tracejada é só visibilidade de relatório, não move dinheiro. Simplificação: conexão no Partner Central e service role ficam implícitos na seta de compartilhamento.
- Authorization repo · Catalog API
- Product listing · SaaSProduct
- SubsidiaryAuthorization · Draft, Active, Restricted
- Marketplace insights · consolidated
- Private offer · seller of record
- Disbursement · local bank, currency
- Buyer account · tax address
Onde mora o risco: revogar não é desligar
O anúncio diz que revogar a autorização impede imediatamente a subsidiária de criar ofertas novas. Correto, e incompleto para quem desenha controle. A documentação detalha quatro comportamentos que mudam o runbook.
Oferta publicada sobrevive: revogar não cancela ofertas já publicadas. O comprador ainda pode aceitar uma oferta que a subsidiária publicou antes da revogação, e os agreements existentes seguem pelos termos acordados, com renovações e desembolsos para a subsidiária. Se o motivo da revogação é a venda da entidade, uma restrição num país ou uma disputa societária, o bloqueio não alcança a exposição que já está na rua.
Restricted é terminal: não existe reativação. Para autorizar de novo, crie outra autorização, que ganha outro ID. Qualquer sistema que use o ID da autorização como chave de negócio quebra na primeira revogação por engano.
Conexão derruba tudo: encerrar a conexão no Partner Central encerra todas as autorizações entre as duas contas. Um analista que desfaz a conexão para corrigir atribuição de receita derruba a capacidade de venda da entidade inteira.
Estreitar quebra rascunho: remover um país ou uma dimensão faz falhar a publicação de ofertas em draft que usavam aquele escopo. A oferta fica parada e o vendedor local só descobre na hora de publicar, em geral na véspera do fechamento do trimestre.
A lição prática: revogação é um processo, não um clique. Revogue a autorização, levante as ofertas publicadas e ainda não aceitas daquela subsidiária, decida o destino de cada uma e só então mexa na conexão. Para encurtar a janela de exposição, use datas de expiração curtas nas ofertas privadas que as subsidiárias publicam.
Autorização como código: o UpdateInformation substitui tudo
Com mais de duas subsidiárias, autorização feita no console vira deriva em semanas. O Catalog API permite tratar cada autorização como recurso versionado, e três detalhes tornam isso obrigatório, não estético.
Substituição total: UpdateInformation substitui Name, Description, Resource e Terms inteiros; o que você omitir é removido. A validação síncrona devolve 422 se Dimensions vier vazio, mas um BuyerTargetingTerm sem CountryCodes passa, e lista vazia significa todos os países. Um script que só queria trocar a descrição pode abrir a venda da entidade brasileira para o mundo inteiro. A única forma segura é enviar sempre o estado completo, lido de um arquivo versionado.
O default está do lado errado: a elegibilidade do comprador é avaliada pelo endereço fiscal dele. Uma autorização sem países contradiz a premissa fiscal que justificou criar a entidade local. No pipeline, eu bloquearia merge de qualquer autorização com CountryCodes vazio.
Produto não propaga: adicionar uma dimensão ao produto não chega à subsidiária; é preciso chamar UpdateInformation com a lista nova. Se o produto tem dimensões Metered ou ExternallyMetered, todas precisam estar na autorização, senão a change set falha com INCOMPATIBLE_PRODUCT_DIMENSIONS.
O resto é idempotência e observabilidade. StartChangeSet é assíncrono: guarde o ChangeSetId, consulte DescribeChangeSet até SUCCEEDED ou FAILED e leia o ErrorDetailList. Duas autorizações para o mesmo produto e a mesma subsidiária não podem sobrepor países e dimensões (DUPLICATE_SUBSIDIARY_AUTHORIZATION), o que dá uma chave natural para o seu estado: produto, subsidiária e conjunto de países, não o ID. Reconcilie todo dia com ListEntities usando EntityType: SubsidiaryAuthorization e compare com o repositório.
Playbook para amanhã
- 1
Mapeie entidade, país e moeda
Monte a tabela entidade por país e por moeda e confirme que cada subsidiária tem tax interview, KYC e payment setup completos, com banco e ao menos uma moeda de desembolso. Sem payment setup a subsidiária não cria oferta, mesmo com autorização ativa. Na Índia, a conta precisa ser standalone, fora do AWS Organizations, desembolsa só em INR e vende só para compradores na Índia.
- 2
Crie o service role nas duas pontas
Em cada conta, no Partner Central, Settings, aba Service roles, crie o
AWSMarketplaceSubsidiaryAuthorizationServiceRoleantes da primeira autorização. Sem ele a autorização nunca ativa e ninguém recebe aviso pelo console. - 3
Aceite a conexão com aval jurídico
O aceite registra o consentimento de compartilhar receita atribuída e relatórios de insights com a primária. Em grupo com acionistas minoritários ou joint venture, isso é decisão societária, não de TI.
- 4
Versione cada autorização
Um arquivo por produto e subsidiária, com
CountryCodesexplícito e a lista completa deDimensions. O pipeline envia o estado inteiro viaUpdateInformation, faz polling deDescribeChangeSete falha o build em qualquerErrorDetailListnão vazio. - 5
Libere em dois tempos
Crie em
Draft, revise oDescribeEntitycontra o arquivo e só então chameUpdateAvailabilitycomActive. A ativação leva alguns minutos; não prometa ao time local que a oferta sai no mesmo minuto. - 6
Escreva o runbook de revogação
Revogar autorização, levantar ofertas publicadas e não aceitas, decidir o destino de cada uma, só então tocar na conexão. Inclua quem aprova, porque
Restrictednão volta atrás. - 7
Reconcilie todo dia
ListEntitiescomSubsidiaryAuthorizationFilterspor status e conta, comparado ao repositório. Use o Marketplace insights consolidado da primária para cruzar ofertas, agreements e renovações por subsidiária.
O nome da autorização é interface
A subsidiária escolhe a autorização pelo Name (1 a 100 caracteres) na hora de criar a oferta. Coloque produto e escopo no nome, por exemplo Security Suite | BR, AR | users, api, e gere esse nome a partir do arquivo versionado. Nome escrito à mão diverge do escopo real na primeira mudança, e o vendedor local escolhe a autorização errada sem perceber.
Três formas de vender por mais de uma entidade
| Critério | Autorização de subsidiária | Resale authorization (CPPO) | Listagem duplicada |
|---|---|---|---|
| Quem vende | Outra conta vendedora do próprio grupo | Channel Partner terceiro | Cada conta, com produto próprio |
| Preço | Subsidiária define; a autorização não carrega preço | Markup sobre o wholesale definido pelo ISV | Cada conta define |
| Moeda | As configuradas na própria subsidiária | A definida pelo ISV na autorização | A da própria conta |
| Tipos de oferta | Só privada direta | Privada via parceiro | Pública e privada |
| Custo de manutenção | 1 listagem + N autorizações versionadas | 1 listagem + autorização por parceiro | N listagens sincronizadas à mão |
| Use quando | Entidade local precisa ser seller of record e vende por oferta privada | Um terceiro revende e precisa de margem | A entidade local precisa de oferta pública ou de CPPO própria |
Anti-padrões que eu esperaria ver no primeiro trimestre
- Autorização sem
CountryCodes: lista vazia significa todos os países, e a entidade criada para um mercado fiscal passa a vender para qualquer endereço fiscal. - Tratar revogação como kill switch: ofertas já publicadas continuam aceitáveis e agreements seguem renovando; o bloqueio vale só para oferta nova.
- Update parcial por script:
UpdateInformationremove tudo o que não foi enviado, então um patch de descrição pode apagar países e dimensões. - Desfazer a conexão para arrumar atribuição: encerrar a conexão encerra todas as autorizações entre as duas contas de uma vez.
- ID da autorização como chave de negócio:
Restrictedé terminal e a reautorização gera ID novo; use produto, subsidiária e países como chave. - Lançar dimensão nova e esquecer a autorização: a subsidiária continua vendendo a versão antiga do produto até alguém chamar
UpdateInformation.
Perguntas que vão aparecer
A subsidiária pode criar CPPO para um canal local com o produto autorizado?
Não. O Catalog API rejeita resale authorization criada a partir de produto autorizado pela primária. A subsidiária só cria CPPO para produtos que ela mesma possui.
Consigo migrar os agreements da listagem duplicada para o produto da primária?
Não. Eles ficam na listagem original. Planeje a convivência até o vencimento e use a autorização nas renovações, como oferta nova.
A primária pode criar oferta ou fazer KYC em nome da subsidiária?
Não. Cada conta cria as próprias ofertas e completa o próprio tax interview e KYC. O service role também não dá à primária acesso a ofertas, agreements ou dados financeiros da subsidiária.
As taxas do Marketplace são consolidadas na primária?
Não. Listing e transaction fees são cobradas da subsidiária que transacionou e não são agrupadas, compensadas nem refaturadas entre contas. Seu modelo de transfer pricing continua fora do Marketplace.
Quanto custa e onde está disponível?
Sem custo adicional, em todas as regiões em que o AWS Marketplace está disponível, segundo o anúncio de 29/10/2026.
Eu começaria pela subsidiária de menor volume, com um único produto e dois países, e só passaria para a próxima depois de executar o runbook de revogação de ponta a ponta num ambiente de teste. Antes da primeira autorização ativa, o pipeline já estaria bloqueando CountryCodes vazio e update parcial. A lição dura que trago de plataformas financeiras: o controle que mais dá problema não é o que bloqueia, é o que parece bloquear e não bloqueia. Aqui, esse controle se chama revogação, e o nome dele promete mais do que ele entrega.
Veredito
Adote a autorização de subsidiárias quando o grupo tem entidades locais que precisam ser seller of record, vende majoritariamente por oferta privada e hoje mantém listagens duplicadas: o ganho de manutenção é direto. Faça isso com as autorizações em repositório, CountryCodes sempre explícito e um runbook de revogação que trate ofertas publicadas. Mantenha a listagem local quando a entidade precisa de oferta pública ou de CPPO própria, porque nenhum dos dois é suportado nesta versão.
Referências
Continue lendo
Deep dives de arquitetura, AWS, IA e mercado: direto no seu email. Grátis.
Sem spam · cancele quando quiser
Pergunte ao Fernando sobre isto
Uma resposta focada sobre este artigo, do meu assistente de IA, baseada no meu trabalho.
Participe da conversa
Entre para comentar
Confirme seu e-mail para participar, você também recebe a newsletter. Sem senha.