Skip to content

Configurar Operações Multi-Entidade (BR/US)

A MIDDAG opera como duas entidades legais: MIDDAG BR (Brasil) e MIDDAG GLOBAL (US LLC). Esta receita configura ambas as entidades, conecta contas Stripe e instâncias HubSpot por entidade, define regras fiscais e testa com um pedido roteado para cada entidade.

Pré-requisitos

  • Acesso de admin ao WordPress com o plugin MIDDAG Account instalado.
  • Duas contas Stripe: uma para MIDDAG BR (BRL), uma para MIDDAG GLOBAL (USD).
  • Dois portais HubSpot (se estiver usando a integração com HubSpot): um para BR, um para GLOBAL.
  • Certificado digital ISSNet para emissão de NFSe (apenas entidade BR).

Passos

Parte A: Configurar as definições das entidades

Passo 1. Vá em MIDDAG Account > Settings > Entities na barra lateral do admin.

Passo 2. Você verá dois cartões de entidade: MIDDAG BR e MIDDAG GLOBAL. Clique em Edit no MIDDAG BR.

Passo 3. Preencha os detalhes da entidade MIDDAG BR:

  • Legal name -- a razão social registrada no Brasil.
  • Tax ID (CNPJ) -- o identificador fiscal da empresa brasileira.
  • Address -- endereço comercial registrado em Brasília/DF.
  • Currency -- BRL (Real Brasileiro).
  • Jurisdiction -- Brasil.

Passo 4. Clique em Save. Em seguida, clique em Edit no MIDDAG GLOBAL.

Passo 5. Preencha os detalhes da entidade MIDDAG GLOBAL:

  • Legal name -- a razão social da LLC registrada nos EUA.
  • Tax ID (EIN) -- o Employer Identification Number dos EUA.
  • Address -- endereço comercial registrado nos EUA.
  • Currency -- USD (Dólar Americano).
  • Jurisdiction -- Estados Unidos.

Passo 6. Clique em Save.

Parte B: Conectar contas Stripe

Passo 7. Vá em MIDDAG Account > Settings > Stripe.

Passo 8. Em MIDDAG BR Stripe Account:

  1. Insira a API Secret Key da conta Stripe BR.
  2. Insira a Publishable Key da conta Stripe BR.
  3. Insira o Webhook Signing Secret da conta BR.
  4. O endpoint do webhook é: {seu-site}/wp-json/middag-account/v1/webhooks/stripe/br

Passo 9. Em MIDDAG GLOBAL Stripe Account:

  1. Insira a API Secret Key da conta Stripe GLOBAL.
  2. Insira a Publishable Key da conta Stripe GLOBAL.
  3. Insira o Webhook Signing Secret da conta GLOBAL.
  4. O endpoint do webhook é: {seu-site}/wp-json/middag-account/v1/webhooks/stripe/llc

Passo 10. Clique em Save. O sistema válida ambos os pares de chave fazendo uma chamada de teste à API.

Passo 11. Em cada dashboard do Stripe, configure o endpoint do webhook para enviar estes eventos: payment_intent.succeeded, payment_intent.payment_failed, invoice.created, invoice.paid, invoice.payment_failed, invoice.finalized, customer.subscription.updated, customer.subscription.deleted.

Parte C: Conectar instâncias HubSpot

Passo 12. Vá em MIDDAG Account > Settings > HubSpot.

Passo 13. Em MIDDAG BR HubSpot Portal:

  1. Insira o Portal ID da instância HubSpot BR.
  2. Insira a API Key ou conecte via OAuth.
  3. Configure o webhook secret para eventos de entrada de propostas e deals.

Passo 14. Em MIDDAG GLOBAL HubSpot Portal:

  1. Insira o Portal ID da instância HubSpot GLOBAL.
  2. Insira a API Key ou conecte via OAuth.
  3. Configure o webhook secret.

Passo 15. Clique em Save.

Parte D: Configurar regras fiscais por entidade

Passo 16. Vá em MIDDAG Account > Settings > Tax.

Passo 17. Em MIDDAG BR Tax Rules:

  1. Habilite NFSe Issuance (ative o toggle).
  2. Insira a ISSNet Web Service URL para Brasília/DF.
  3. Faça upload do Digital Certificate (formato A1, arquivo .pfx) e insira a senha do certificado.
  4. Defina o Municipal Tax Code (CNAE) para a atividade principal de serviço.
  5. Defina a ISS Rate (tipicamente 2% a 5% dependendo do município).

Passo 18. Em MIDDAG GLOBAL Tax Rules:

  1. NFSe não se aplica -- deixe NFSe Issuance desabilitado.
  2. Configure as definições fiscais dos EUA se aplicável (sales tax estadual, etc.) ou marque como "No tax invoice required."

Passo 19. Clique em Save.

Parte E: Testar com um pedido BR

Passo 20. Crie uma Organização de teste com a entidade de faturamento definida como MIDDAG BR. Veja Integrar uma Organização.

Passo 21. Crie uma proposta para esta Organização com um produto precificado em BRL. Veja Emitir uma Proposta Comercial.

Passo 22. Aceite a proposta e conclua o pagamento usando um cartão de teste (ou Pix em modo sandbox).

Passo 23. Verifique:

  • O pagamento foi processado pela conta Stripe BR (confira no dashboard do Stripe na conta BR).
  • Uma fatura foi sincronizada a partir da conta Stripe BR.
  • Uma NFSe foi emitida via ISSNet (verifique em MIDDAG Account > Tax Invoices).
  • O entitlement foi criado e vinculado à Organização BR.

Parte F: Testar com um pedido GLOBAL

Passo 24. Crie uma segunda Organização de teste com a entidade de faturamento definida como MIDDAG GLOBAL.

Passo 25. Crie uma proposta para esta Organização com um produto precificado em USD.

Passo 26. Aceite a proposta e pague com um cartão de teste.

Passo 27. Verifique:

  • O pagamento foi processado pela conta Stripe GLOBAL (confira no dashboard do Stripe na conta GLOBAL).
  • Uma fatura foi sincronizada a partir da conta Stripe GLOBAL.
  • Nenhuma NFSe foi emitida (transações GLOBAL não acionam NFSe).
  • O entitlement foi criado e vinculado à Organização GLOBAL.

Parte G: Verificar o roteamento de entidade

Passo 28. Vá em MIDDAG Account > Invoices. A lista unificada de faturas deve mostrar entradas de ambas as entidades com um indicador visual:

  • Faturas da MIDDAG BR exibem o rótulo da entidade BR.
  • Faturas da MIDDAG GLOBAL exibem o rótulo da entidade GLOBAL.

Passo 29. Verifique se a cadeia de resolução de entidade funciona corretamente. O sistema usa esta prioridade:

  1. billing_entity explícito da Organização (mais confiável).
  2. Tipo de identificação fiscal -- CNPJ roteia para BR; EIN/VAT roteia para GLOBAL.
  3. Tag de entidade do produto.
  4. Fallback por moeda -- BRL implica BR, USD implica GLOBAL.
  5. Sobrescrita manual do admin.

Passo 30. Teste um caso limite: crie uma Organização sem entidade de faturamento definida. Crie uma proposta e observe qual entidade o sistema seleciona com base na cadeia de resolução.

Resultado esperado

  • Ambas as entidades estão configuradas com contas Stripe separadas, portais HubSpot e regras fiscais.
  • Pedidos BR são processados pela conta Stripe BR com NFSe emitida via ISSNet.
  • Pedidos GLOBAL são processados pela conta Stripe GLOBAL sem NFSe.
  • O admin vê uma visualização unificada com indicadores de entidade em faturas, propostas e entitlements.
  • O roteamento de entidade funciona corretamente com base na configuração de entidade de faturamento da Organização.

Leitura complementar