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
Crie uma fatura.
Adicione um nó “Send Invoice” do QuickBooks.
Forneça um ID de Fatura válido.
Forneça um endereço de email válido.
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!
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.