Frequently Asked Question

Integración con Shopify
Last Updated about a month ago

image

¿Quieres emitir boletas o facturas automáticamente desde Shopify? Con LibreDTE puedes hacerlo.

¿Cómo funciona?

La integración funciona de la siguiente forma:

  1. Tu cliente compra en tu tienda y crea un pedido (ingresando su RUT y eligiendo si quiere boleta o factura).
  2. Tu cliente paga en tu tienda.
  3. Tu cliente recibe la boleta o factura de manera automática por el pedido pagado.

Si el pago se hace con transferencia, u otro pago “manual”, es similar, la boleta le llegará al cliente cuando marques en Shopify el pedido como pagado.

La integración entre Shopify y LibreDTE funciona usando Webhooks. Además, se asume que Shopify está funcionando (¡cualquier plan de Shopify sirve!), productos creados e impuestos habilitados (el precio del producto debe estar con IVA incluído).

¿Cómo lo configuro?

Revisa este video y más abajo los detalles para configurar:

Primero: si deseas emitir boletas (nominativas o no nominativas) y/o facturas, se debe modificar el carro de compras para agregar los campos necesarios para poder emitir el DTE.

Nota: si sólo emitirás boletas no nominativas (sin pedir el RUT al cliente), no necesitas hacer este paso.

  • Anda a “Tienda online”.
  • Anda a “Temas”.
  • Busca el tema que desea modificar y haz click en “Acciones” y luego en “Editar código”.
  • Busca en “Sections” la plantilla “cart-template.liquid” y ahí debes crear los siguientes campos:
    • Documento: lista desplegable con opciones “Boleta” y “Factura”.
    • RUT: debe entregar el RUT del receptor.
    • Giro: debe entregar el giro del receptor (opcional si es boleta).
  • Para agregar los campos puedes usar el siguiente código ya creado por nosotros. También puedes crear los campos tu mismo usando el generador de código de Shopify.

Al agregar el código lo importante es que se incluyan los campos adicionales con los atributos para los datos que se necesitan:

  • Tipo de documento:
    • Name: “Documento”
    • Value: “Boleta” o “Factura”
  • RUT o Identificador fiscal del cliente (obligatorio para compras con facturas):
    • Name: “RUT”
    • Value: RUT ingresado por el usuario con guión. Puede ser: 66.666.666-6 o 66666666-6 (pero debe ser con guión). El RUT 66666666-6 se usa cuando el cliente no ingresa el RUT, si lo ingresa se usará el real.
  • Giro o actividad del cliente (obligatorio para compras con facturas):
    • Name: “Giro”
    • Value: un texto (string) de hasta 40 caracteres con el giro o actividad del cliente.

En el JSON del pedido de Shopify los campos van en “note_atributes” y se verán así (en este caso no se envía el giro):

image

Nota 2: si tienes una “tienda grande” y puedes editar “checkout.liquid”, lo ideal es agregar los campos en esa plantilla. Así no aparecen en el carro de compras y si cuando el cliente hace el checkout.

Segundo: debes configurar el webhook:

  • Anda a “Configuración”
  • Anda a “Notificaciones”.
  • Al final de la página busca la opción “Webhooks” y haz click en “Crear webhook”.
  • Datos para el webhook:
    • Evento: Pago de pedido
    • Formato: JSON
    • URL: en LibreDTE, anda a “modificar empresa” y luego a la pestaña “Apps”. Aquí copia el enlace que dice “orden pagada” en la configuración de Shopify.
image
image
image
  • Al guardar el webhook te aparecerá un “token” similar al de la imagen, con el cual se firman los mensajes a LibreDTE. Este token debes copiarlo en LibreDTE (en la misma parte donde obtuviste la URL de orden pagada) en la configuración de Shopify, campo “Token”.
image
image

¿Cómo lo pruebo?

  • Anda a “modificar empresa” y luego a la pestaña “Apps”.
  • Busca la configuración de Shopify, deja las opciones así:
    • ¿Tipo documento?: Cotización.
    • ¿Enviar email?: No enviar documento por correo electrónico.
image

De esta forma, cuando un pedido sea marcado como pagado, podrás probar la generación del documento temporal (cotización o borrador) sin generar una boleta o factura real. Y además, no la enviarás al cliente por error.

Please Wait!

Please wait... it will take a second!