Saltar al contenido principal

Factura suiza con código QR desde una base de datos Airtable: Genere, adjunte y envíe por correo electrónico en Make con PDF4me

· 26 min de lectura
SEO and Content Writer

PDF4me Create Swiss QR-bill es un módulo Make que convierte los detalles de pago en una imagen de factura QR suiza. Conectado a una base de datos Airtable, lee el acreedor, el deudor y el QR-IBAN de una fila, guarda el comprobante final como archivo adjunto en ese mismo registro y lo envía por correo electrónico al deudor.

Si le preguntas si Airtable puede generar una factura, la respuesta sincera es no, no una factura pagadera. Almacena perfectamente el acreedor, el deudor, el importe y el QR-IBAN, pero una factura QR suiza requiere una especificación: un diseño definido, una línea de corte, una referencia en el formato correcto y un código QR que la aplicación del banco acepte. El consejo habitual es salir de Airtable, abrir el portal del banco y volver a introducir la información. Sin embargo, este método produce el efecto contrario, y los datos permanecen en la base de datos donde ya se encuentran.

El panorama general
1. Watch records
Airtable. Selecciona filas en Swiss QR Requests donde Status es Nuevo.
2. Create Swiss QR-bill
PDF4me. Genera el comprobante a partir del acreedor, el deudor y QR-IBAN en la fila.
3. Upload an attachment
Airtable. Vuelve a colocar el PNG en el mismo registro, en el campo Document.
4. Update a record
Airtable. Escribe el resultado de vuelta para que la fila diga lo que sucedió.
5. Send an email
Gmail. Envía el comprobante a la dirección que aparece en la fila.
La versión corta

Alguien agrega una fila a una tabla Airtable con un acreedor, un deudor, un importe y un QR-IBAN, y establece Status en Nuevo. Make lo procesa, PDF4me genera la factura QR suiza y la imagen se adjunta directamente a ese registro. El deudor la recibe por correo electrónico. Cinco módulos, sin portal bancario, y los datos de la factura permanecen en la base de datos que tu equipo ya edita.

Preguntas y respuestas basadas en el porqué​

Why keep the payment data in Airtable?Porque para muchos equipos financieros pequeños, esta información ya está ahí, junto al registro del cliente y el proyecto al que pertenece. Trasladarla a un programa de contabilidad para generar un único comprobante de pago implica mantener al mismo cliente en dos sistemas. Además, un compañero sin conocimientos técnicos puede corregir una fila sin necesidad de consultar a nadie.

Why put the image back on the record instead of into a folder?Porque un archivo en una carpeta pierde su conexión con el elemento que lo generó. Al adjuntar el archivo PNG al campo Document en la misma fila, el comprobante, la cantidad a partir de la cual se generó y el estado se mantienen juntos, y cualquier persona que vea la fila puede ver el elemento sin tener que ir a ningún otro lugar.

Why filter the trigger on Status rather than watching everything?De lo contrario, Watch records se activarían con cada fila que se agregue, incluso con las que estén a medio terminar. La fórmula del activador convierte a "Nuevo" en una instrucción explícita: la fila está completa y lista. También ofrece una forma segura de volver a emitir un comprobante, que consiste en restablecer el estado.

Why does the QR-IBAN get cleaned before it is sent?Dado que los usuarios introducen IBAN con espacios, y la especificación requiere que la cuenta no los contenga, el campo IBAN aplica una función de reemplazo que elimina los espacios, lo que marca la diferencia entre un recibo que la aplicación bancaria lee y uno que rechaza. El mismo razonamiento se aplica al importe, que se formatea con dos decimales en lugar de transmitirse sin formato.


Lo que obtendrás​

Entrada: una fila Airtable con un acreedor, un deudor, un importe, una moneda y un QR-IBAN, con Status establecido en Nuevo. Salida: una factura QR suiza en formato PNG adjunta a ese mismo registro y un correo electrónico al deudor con el comprobante adjunto.

Airtable base PDF4me Live Automations with the Swiss QR Requests table open, showing rows INV-1001 to INV-1004 with CreditorName Muster AG, Bahnhofstrasse 1, 8001 Zuerich CH, a QRIBAN beginning CH4431999123, a structured Reference, DebtorName Test Kunde AG at Seestrasse 10 in 8002 Zuerich, Amount 100.50, Currency CHF, a Message column reading Rechnung INV-1001 and a Status column reading Generated

Una fila por factura. Cada columna se corresponde con un campo especificado en el código QR suizo.

The generated Swiss QR bill for INV-1003: a Receipt half and a Payment part separated by a scissor line, both showing account CH44 3199 9123 0008 8901 2 payable to Muster AG at Bahnhofstrasse 1, 8001 Zuerich, reference 21 00000 00003 13947 14300 09017, additional information Rechnung INV-1003, payable by Test Kunde AG at Seestrasse 10, 8002 Zuerich, currency CHF and amount 100.50, with the QR code in the payment part

Recibo a la izquierda, parte del pago a la derecha, línea divisoria entre ellos.

Gmail showing the received message with subject Your Swiss QR bill INV-1003, the body reading Hello Test Kunde AG, Please find your Swiss QR bill INV-1003 attached, Amount 100.5 CHF, and one attachment previewing the QR bill

Lo que recibe el deudor, construido enteramente a partir de la hilera.


Lo que necesitas​

  • A Make account.Open Make Cinco módulos en aplicaciones estándar, sin necesidad de una suscripción premium.
  • PDF4me API key.Get your API key Una sola conexión PDF4me cubre todo el escenario.
  • An Airtable baseLa base de datos capturada se llama PDF4me Live Automations y contiene una tabla llamada Swiss QR Requests. Necesita el bloque del acreedor, el bloque del deudor, QRIBAN, Referencia, Amount, Moneda, Mensaje, Correo electrónico, un campo Status y un campo de archivo adjunto llamado Document para el comprobante finalizado.
  • A Gmail accountpara entrega, conectado a Make.
  • A real QR-IBANde su banco. Este no es un IBAN común: QR-IBAN suizos pertenecen a una gama específica de instituciones y son los que permiten el funcionamiento de una referencia QR estructurada. Su banco le emitirá uno si lo solicita.

Panorama general​

  1. Watch records (Airtable) incorporan nuevas filas en Swiss QR Requests.
  2. Create Swiss QR-bill (PDF4me) genera el recibo como un archivo PNG.
  3. Upload an attachment (Airtable)" lo adjunta al campo Document en la misma fila.
  4. Update a record (Airtable) escribe el resultado de vuelta en la fila.
  5. Send an email (Gmail) entrega el comprobante al deudor.

Descripción general completa del escenario​

The Make scenario canvas showing five connected modules in order: Airtable Watch records with a clock icon, PDF4me Create Swiss QR-bill, Airtable Upload an attachment, Airtable Update a record, and Gmail Send an email, each marked with a green tick and one operation

Tres módulos Airtable, un módulo PDF4me y un módulo Gmail. La base es tanto el origen como el destino.


Paso 1: ¿Cómo se activa un escenario a partir de una fila Airtable?​

Flujo hasta ahora: nada todavía, este es el detonante.

Una fila marcada como lista es la solicitud, así que eso es lo que Make observa.

  1. Agrega Airtable > Watch records como activador.
  2. Configurar:
    • Base: PDF4me Live Automations
    • Mesa: Swiss QR Requests
    • Trigger field: Created
    • Label field: Title
    • Límite: 10
    • Fórmula: {Status}='New'

Configuración Watch records​

Make Airtable Watch records module with Base set to PDF4me Live Automations, Table Swiss QR Requests, Trigger field Created, Label field Title, Limit 10, View left empty and Formula braces Status equals New

La fórmula es lo que impide que el escenario se active en filas a medio terminar.

Tip.Trigger field Debe ser un campo de fecha de creación o fecha de última modificación, y Make lo indica en el módulo. Sin él, el disparador no podrá ordenar los registros y su comportamiento será impredecible. Si su tabla no tiene dicho campo, agréguelo antes de continuar.


Paso 2: ¿Cómo se convierte una fila en un billete QR suizo?​

Flujo hasta ahora: el activador de Airtable.

Este es el módulo que genera el comprobante. La mayoría de sus campos son una asignación directa de la fila; dos de ellos requieren una expresión.

  1. Añadir PDF4me > Create Swiss QR-bill.
  2. Configure los ajustes que dan forma a la salida:
    • Format Type: PNG
    • Reference Type: QRR
    • Idioma: English
    • Separator Line: Line With Scissor
    • Creditor Address Type: S
  3. Mapea los datos de pago desde el disparador:
    • Amount: formatNumber(1.Amount; 2; "."; "")
    • IBAN: replace(1.QRIBAN; " "; "")
    • Creditor Name, calle, código postal, ciudad y país de las columnas de acreedores.
    • Nombre y dirección Debtor de las columnas Deudor, y la Reference de la fila

Create Swiss QR-bill​

Make PDF4me Create Swiss QR-bill module showing Format Type PNG, a Currency dropdown, Reference Type QRR, Language English, Separator Line Line With Scissor, Amount set to a formatNumber expression over the Amount column, IBAN set to a replace expression over the QRIBAN column, Creditor Address Type S and the start of the Creditor Name field

El panel se desplaza aquí. Debajo del nombre del acreedor se encuentra el resto de la dirección del acreedor y todo el bloque del deudor.

Lo que decide cada configuración​

CampoValor aquíLo que controla
Format TypePNGSe trata de una imagen en lugar de un PDF, lo que permite adjuntarla a una celda Airtable y previsualizarla en línea.
Reference TypeQRRUna referencia QR estructurada, que es el tipo que necesita un QR-IBAN. Las alternativas son SCOR y NON
Separator LineLine With ScissorDibuja la línea de corte entre el recibo y la parte del pago.
Creditor Address TypeSDirección estructurada, lo que significa que la calle, el código postal y la ciudad se encuentran en campos separados en lugar de texto libre.
AmountformatNumber(...)Dos decimales y sin separador de miles, que es lo que espera la especificación.
IBANreplace(...)Elimina los espacios que la gente introduce en IBAN antes de que se valide la cuenta.

Tip.Reference Type y la cuenta deben coincidir. QRR requiere un QR-IBAN y una referencia QR de 27 dígitos; un IBAN ordinario con una referencia QRR es la causa más común de que un comprobante generado no se valide. Si aún no tiene un QR-IBAN, seleccione NON y deje la referencia en blanco hasta que su banco le emita uno.


Paso 3: ¿Cómo se vuelve a incluir el comprobante en el registro?​

Flujo hasta el momento: el activador más el módulo PDF4me.

La fila pidió la factura, así que la fila debería pagarla.

  1. Agregar Airtable > Upload an attachment.
  2. Configurar:
    • Base y Table: como en el paso 1
    • Record ID: el id del disparador
    • Attachment field: Document
    • File: el resultado de PDF4me - Create Swiss QR-bill
    • File name: QRBill_ más el Title de la fila más .png
    • Data: el Document de salida del módulo 2
    • Content type: PNG image

Upload an attachment​

Make Airtable Upload an attachment module with Base PDF4me Live Automations, Table Swiss QR Requests, Record ID mapped from the trigger id, Attachment field Document, File set to the PDF4me Create Swiss QR-bill output, File name QRBill_ plus the Title token plus .png, Data set to the module 2 Document output and Content type PNG image

Record ID proviene del activador, por lo que el formulario se ubica en la fila que lo solicitó.


Paso 4: ¿Cómo se registra el resultado en la fila?​

Flujo hasta ahora: todo hasta la carga del archivo adjunto.

Adjuntar el archivo no significa que el trabajo esté terminado. Se requiere una actualización aparte para registrar el resultado.

  1. Agregar Airtable > Update a record.
  2. Configurar:
    • Base y Table: como en el paso 1
    • Record ID: el id del disparador
    • Record: complete los campos que desea que se registren. Status es importante, ya que es lo que lee la fórmula del activador, y una columna OutputLink es un lugar conveniente para una URL que se pueda compartir.

Update a record​

Make Airtable Update a record module with Base PDF4me Live Automations, Table Swiss QR Requests, Record ID mapped from the trigger, and the Record section listing the table fields Title, CreditorName, CreditorStreet, CreditorPostalCode, CreditorCity, CreditorCountry, QRIBAN, Reference, DebtorName, DebtorStreet and DebtorPostalCode as empty inputs

El panel muestra todas las columnas de la tabla. Deje en blanco las que no desee que se sobrescriban.

Tip.Deje todos los campos en blanco excepto los que realmente desee modificar. Un campo asignado pero vacío borrará la celda, lo que facilita la eliminación de la dirección de un acreedor en un escenario que, de otro modo, parecería funcionar correctamente. En la ejecución capturada, el panel está desplazado y todos los campos visibles están vacíos, así que configure Status deliberadamente en lugar de copiar lo que ve.


Paso 5: ¿Cómo se envía la factura al deudor?​

Flujo hasta ahora: todo hasta la actualización del registro.

El último módulo entrega el comprobante a la dirección indicada en la fila.

  1. Agregar Gmail > Send an email.
  2. Configurar:
    • To: la columna Email del desencadenador
    • Subject: Your Swiss QR bill más el Title
    • Body type: Raw HTML
    • Content: un breve cuerpo HTML que indica el nombre del deudor, la factura y el importe.
  3. Adjunte el archivo:
    • File: PDF4me - Create Swiss QR-bill
    • File name: QRBill_ más el Title más .png
    • Data: el Document de salida del módulo 2

Send an email​

Make Gmail Send an email module with the recipient mapped from the Email column, Subject Your Swiss QR bill plus the Title token, Body type Raw HTML, an HTML content block greeting the debtor and stating the amount and currency, and one attachment taking the PDF4me module output with the file name QRBill_ plus Title plus .png

El archivo adjunto toma sus bytes del módulo 2, por lo que Airtable nunca se lee.

Tip.Observa la cantidad en el cuerpo del correo electrónico. El mensaje capturado dice:Amount: 100.5 CHF mientras que el propio recibo dice100.50, porque el cuerpo mapea la columna sin procesar mientras el billete QR pasa porformatNumber Utilice la misma expresión en ambos casos, a menos que le guste explicar la diferencia a un cliente.


Ejecuta el escenario y verifica.​

  1. Save el escenario y ejecútalo una vez.
  2. Agregue una fila a Swiss QR Requests con un acreedor, un deudor, un importe, un QR-IBAN y Status New.
  3. Observa cómo se iluminan los cinco módulos. Cada uno debería informar de una operación.
  4. Abra la fila: el campo Document debe contener un archivo PNG con el mismo nombre que el Title.
  5. Abra el archivo adjunto y revise ambas partes. El recibo y el comprobante de pago deben mostrar la misma cuenta, referencia e importe, con la línea divisoria entre ellos.
  6. Comprueba la bandeja de entrada en la columna Correo electrónico para ver el mensaje y su archivo adjunto.

En la ejecución capturada, la fila INV-1003 produjo un comprobante pagadero a Muster AG en Bahnhofstrasse 1, 8001 Zuerich, en la cuenta CH44 3199 9123 0008 8901 2, con referencia 21 00000 00003 13947 14300 09017, pagadero por Test Kunde AG en Seestrasse 10, 8002 Zuerich, por CHF 100.50.

What did you actually build?Un generador de comprobantes de pago integrado en la base de datos que tu equipo ya utiliza. Nadie tiene que acceder a un portal bancario, nadie tiene que volver a introducir un IBAN, y el comprobante se adjunta al registro que lo generó, de modo que un mes después aún puedes ver qué fila corresponde a cada factura.


Variaciones comunes que puedes agregar sin reconstruir​

Coloque el comprobante en una página de la factura.
Cambie Format Type a PDF y agregue un paso de combinación para colocar la factura debajo de su factura.overlay merge scenario Cubre ese patrón en detalle.
Factura en euros y francos
La especificación permite CHF y EUR, y nada más. En lugar de corregirlo, asigna la columna Moneda al campo Moneda y agrega una vista de validación en Airtable que detecte cualquier otro valor.
Enviar recordatorios desde la misma base
Agregue una columna de fecha de pago y un escenario programado que vuelva a enviar el archivo adjunto existente para cualquier pago pendiente después de treinta días. El comprobante ya está registrado, por lo que no es necesario regenerarlo.
Factura para más de una entidad
El bloque de acreedores ya proviene de las columnas, por lo que una base puede emitir para dos empresas. Asigne a cada una su propio QR-IBAN en la fila y no cambiará nada más.

¿Cómo se compara esto con otras formas de producir un billete QR suizo?​

Cada fila describe la alternativa. La última fila corresponde a este escenario.

Comparación¿Quién lo dirige?De dónde provienen los datosLo que mantienes
Portal bancario frente a este escenarioUna persona, un resbalón a la vezTranscrito a manoNada, pero cada factura le cuesta minutos a alguien.
Paquete de contabilidad con exportación mediante código QR suizo frente a este escenario.Finanzas, dentro de ese productoEl libro mayor del propio productoUna suscripción y un segundo hogar para sus clientes.
Biblioteca para desarrolladores frente a este escenarioUn desarrollador, dentro de una aplicaciónTu base de datos, a través del códigoEl código, las actualizaciones de especificaciones y los lanzamientos
Este escenarioCualquiera que pueda agregar una fila AirtableLa base que el equipo ya mantieneCinco módulos y un QR-IBAN

Preguntas frecuentes​

¿Qué es un billete QR suizo?​

La factura QR suiza es el comprobante de pago que sustituyó a los antiguos formularios de pago naranjas y rojos en Suiza. Contiene un código QR con el nombre del acreedor, el deudor, el importe y la referencia, de modo que el pagador lo escanea con su aplicación bancaria en lugar de introducir ningún dato.

Viene en dos mitades, una parte de recibo y otra de pago, separadas por una línea de corte, y el diseño está fijado por elSwiss implementation guidelines published by SIX Por eso, generar uno es un problema de especificación más que un problema de diseño.

¿Cuál es el número QR-IBAN en Suiza?​

Un QR-IBAN es un segundo número de cuenta que tu banco emite junto con tu IBAN habitual. Se reconoce porque su identificador de institución se encuentra dentro de un rango reservado. Su función es permitir que el banco identifique un pago entrante con una referencia QR estructurada y lo asocie automáticamente a una factura.

La regla práctica para este caso es la siguiente: si configura Reference Type como QRR debe usar el QR-IBAN, no el habitual. Mezclarlos produce un recibo que parece correcto pero que no se escaneará.

¿Cómo pagar una factura con código QR en Suiza?​

El pagador abre su aplicación bancaria, escanea el código QR en la sección de pago, comprueba el importe en pantalla y confirma. No se introduce ningún texto, que es precisamente la clave de este formato.

El comprobante también se puede pagar en la ventanilla de correos o introducir manualmente los datos en los campos impresos, por lo que en la sección de pago se repiten la cuenta, la referencia y el importe como texto legible junto al código.

¿Puede Airtable crear facturas?​

No por sí solo. Airtable almacena los datos y puede presentarlos en una interfaz o en una vista imprimible, pero no tiene forma de generar un documento que cumpla con los estándares de pago, ni de crear un código QR escaneable que cumpla con esas especificaciones.

Su principal ventaja reside en ser la fuente de la verdad. Este escenario mantiene esa división: Airtable almacena la fila, PDF4me genera el artefacto compatible y el resultado se adjunta a la fila.


Solución de problemas​

La aplicación del banco no escaneará el código.

Verifique la cuenta y el tipo de referencia juntos. AQRR La referencia necesita un QR-IBAN; un IBAN ordinario necesitaSCOR oNON. Luego verifique que el IBAN realmente llegó al módulo sin espacios, que es lo que elreplace La expresión está ahí para eso.

El escenario se activa en filas que no están listas.

La fórmula de activación no está presente o no coincide.{Status}='New' Distingue entre mayúsculas y minúsculas, y el campo debe ser de selección única o de texto cuyo valor sea exactamente "Nuevo". Confirma también que Trigger field sea de tipo "Hora de creación" o "Hora de última modificación".

El archivo adjunto nunca aparece en el registro.

Verifique Record ID en el módulo 3. Debe provenir del activador, no del módulo PDF4me. Luego, verifique que Content type coincida con Format Type: un archivo PNG del módulo 2 cargado como un archivo PDF se adjuntará y luego no se podrá previsualizar.

Una columna se borró después de una ejecución.

El módulo 4 muestra todos los campos de la tabla, y si un campo está asignado pero vacío, borra la celda. No modifique nada que no esté escribiendo deliberadamente.


Próximos pasos​

La base de datos que ya utilizas suele estar más cerca de ser un documento de pago finalizado de lo que parece. Solo necesita algo que cumpla con las especificaciones.