El nodo "QuickBooks Send Invoice" lanza error "Cannot set properties of undefined (setting 'Content-Type')"

Comportamiento Actual

El nodo “Send Invoice” de QuickBooks falla antes de enviar la solicitud.

Error:

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

Rastreo de pila:

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

Comportamiento Esperado

El nodo debería enviar la factura exitosamente usando la API de QuickBooks.

Pasos para Reproducir

  1. Crear una factura.
  2. Añadir un nodo “Send Invoice” de QuickBooks.
  3. Proporcionar un ID de Factura válido.
  4. Proporcionar una dirección de correo electrónico válida.
  5. Ejecutar el nodo.

Entorno

  • Versión de n8n: 2.29.9
  • Implementación: Auto-hospedada
  • Modo de Datos Binarios: filesystem

Información Adicional

  • El mismo error ocurre tanto en instancias locales como auto-hospedadas.
  • Los ID de Factura y correo electrónico codificados producen el mismo error.
  • El fallo ocurre antes de que la solicitud llegue a QuickBooks.
  • La documentación de la API de QuickBooks especifica Content-Type: application/octet-stream para este endpoint.

¡Hola @ankitsingh3112, bienvenido!
Ese seguimiento de pila se encuentra dentro del código del propio nodo (quickBooksApiRequest en GenericFunctions.ts:70), donde establece Content-Type en un objeto de encabezados que es indefinido, por lo que Send Invoice falla antes de que ninguna solicitud salga de n8n. Es un error en el nodo, no en tu configuración, por lo que los IDs codificados y ambas instancias fallan de la misma manera.
Hasta que se corrija, evita la operación con un nodo HTTP Request usando tu credencial OAuth2 de QuickBooks Online (Autenticación: Tipo de credencial predefinida). Envía un cuerpo vacío al punto de conexión de envío con el encabezado octet-stream, colocando tu ID de empresa (realm), ID de factura y destinatario en la URL:

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

Si esa llamada devuelve 401, ese es un problema conocido y separado con la credencial QBO en el nodo HTTP Request, no con este punto de conexión:

Vale la pena registrar el error del nodo para que se corrija:

@ankitsingh3112 ¡hey! si te encuentras con ese error de autorización 401 al usar la credencial de QBO predefinida en el nodo HTTP Request, es porque n8n no activa correctamente el flujo de actualización de token para módulos HTTP personalizados.

la forma rápida de evitar el 401 es usar autenticación Generic OAuth2 en lugar de la credencial de QBO predefinida dentro del nodo HTTP Request.

establece la URL de autorización en:
https://appcenter.intuit.com/connect/oauth2

y la URL de token de acceso en:
https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer

luego ingresa tu ID de cliente y secreto de QBO. una vez autorizado de esta manera, la solicitud POST al endpoint /send se autenticará correctamente cada vez. ¡avísame si tienes problemas configurando los parámetros de OAuth2 personalizados!

Hemos examinado esto y parece que podría haberse solucionado en una versión reciente. Por favor, actualiza y comprueba si sigues teniendo el mismo problema.

Agradezco la aclaración. Este tipo de errores pueden ser confusos cuando parecen problemas de configuración, así que tener la causa raíz explicada facilita mucho la solución de problemas.