Nó QuickBooks Send Invoice lança erro "Cannot set properties of undefined (setting 'Content-Type')"

Comportamento Atual

O nó “Send Invoice” do QuickBooks falha antes de enviar a requisição.

Erro:

TypeError: Cannot set properties of undefined (setting ‘Content-Type’)

Rastreamento de Pilha:

TypeError: Cannot set properties of undefined (setting ‘Content-Type’)
at ExecuteContext.quickBooksApiRequest
(…/nodes/QuickBooks/GenericFunctions.ts:70:35)

Comportamento Esperado

O nó deve enviar a fatura com sucesso usando a API do QuickBooks.

Passos para Reproduzir

  1. Crie uma fatura.
  2. Adicione um nó “Send Invoice” do QuickBooks.
  3. Forneça um ID de Fatura válido.
  4. Forneça um endereço de email válido.
  5. Execute o nó.

Ambiente

  • Versão do n8n: 2.29.9
  • Implantação: Auto-hospedada
  • Modo de Dados Binários: filesystem

Informações Adicionais

  • O mesmo erro ocorre em instâncias locais e auto-hospedadas.
  • ID de Fatura codificado e email produzem o mesmo erro.
  • A falha ocorre antes da requisição chegar ao QuickBooks.
  • A documentação da API do QuickBooks especifica Content-Type: application/octet-stream para este endpoint.

Oi @ankitsingh3112 Bem-vindo!
Esse rastreamento de pilha cai dentro do próprio código do nó (quickBooksApiRequest em GenericFunctions.ts:70), onde ele define Content-Type em um objeto de headers que é indefinido, portanto Send Invoice lança uma exceção antes de qualquer requisição sair do n8n. É um bug no nó, não na sua configuração, é por isso que IDs codificados e ambas as instâncias falham da mesma forma.
Até ser corrigido, contorne a operação com um nó HTTP Request usando sua credencial OAuth2 do QuickBooks Online (Authentication: Predefined Credential Type). Envie um corpo vazio para o endpoint de envio com o header octet-stream, colocando seu ID da empresa (realm), ID da fatura e destinatário na URL:

POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice/{invoiceId}/send?sendTo={email}
Header  Content-Type: application/octet-stream

Se essa chamada retornar 401, esse é um problema conhecido separado com a credencial QBO no nó HTTP Request, não nesse endpoint:

Vale a pena registrar o bug do nó para que seja corrigido:

@ankitsingh3112 oi! se você enfrentar aquela falha de autorização 401 ao usar a credencial QBO predefinida no nó HTTP Request, é porque o n8n não dispara o fluxo de atualização de token corretamente para módulos HTTP personalizados.

a forma rápida de contornar o 401 é usar autenticação Generic OAuth2 em vez da credencial QBO predefinida dentro do nó HTTP Request.

definir a URL de autorização para:
https://appcenter.intuit.com/connect/oauth2

e a URL do token de acesso para:
https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer

depois coloque seu ID e segredo do cliente QBO. uma vez autorizado dessa forma, a solicitação POST para o endpoint /send será autenticada com sucesso sempre. me avise se você travar ao configurar os parâmetros OAuth2 personalizados!

Analisamos isso e parece que pode estar corrigido em uma versão recente. Por favor, atualize e veja se você ainda está enfrentando o mesmo problema.

Agradeço o esclarecimento aqui. Esses tipos de erros podem ser confusos quando parecem problemas de configuração, então ter a causa raiz explicada facilita muito a resolução de problemas.