Cairos
Facturación
Programa de facturaciónOrzamentosFacturas recorrentesGastos e provedoresCobros e tesouraría
Contabilidade e impostos
ContabilidadeModelos de FacendaLibros rexistroInmobilizadoIGIC e Canarias
Operacións
Inventario e almacénsCRMControl horarioProxectosSubvencións e axudas
Cumprimento
VeriFactuTicketBAIFactura electrónicaToda a normativaSeguridade e datos
Por tipo de negocio
AutónomosPemesAsesorías e xestoríasEstranxeiros en EspañaStartupsComercios e tendas
Por sector
Hostalaría e restaurantesConstrución e reformasServizos profesionaisComercio electrónicoTodos os sectores
Por forma xurídica
AsociaciónsFundaciónsCooperativasClubs deportivosTodas as formas xurídicas
Cambiar de programa
ComparativasAlternativa a HoldedMigrar os teus datos
Ferramentas gratis
Modelo de facturaCalculadora de IVECalculadora de IRPFTodas as ferramentas
Aprender
GuíasGlosarioCalendario fiscalBlog
Desenvolvedores
API e documentaciónComezar en cinco minutosReferencia de recursosWebhooks
Axuda
Centro de axudaContacto
Prezos
Comeza gratis Iniciar sesión
Automatización

Make: catro módulos HTTP e ningunha app

Non hai app oficial de Cairos en Make, e para o que hai que facer tampouco fai falta. Co módulo HTTP e unha conexión por clave móntase o percorrido enteiro dun pedido a unha factura emitida.

Módulo HTTPA clave no chaveiroCon control de erros

A API está en marcha. Isto é o que hai hoxe e o que non

Funciona. As rutas desta documentación están despregadas e respondendo en https://erp.cairos.es/api/v1/. Os exemplos destas páxinas pódense copiar e executar. A especificación completa está en openapi.json, que é o que importan Make e n8n.

As claves créalas ti, desde Desenvolvedores na túa conta de Cairos. Comeza cunha cai_test_: traballa contra os teus datos de verdade pero non rexistra en VeriFactu nin envía correos, así que podes montar a túa integración sen enlixar unha serie de facturación.

E o que aínda NON hai, dito sen adornos: ningún conector oficial. Nin app de Shopify, nin plugin de WooCommerce, nin módulo publicado en Make ou n8n. Coa API e a súa especificación pódense construír —para iso están as guías desta sección— pero construílos é traballo, e ese traballo non está feito.

Se montas algo con isto, escríbenos a hola@cairos.es. Interésanos especialmente o que che falte do contrato: é o que decide que se amplía primeiro.

Non hai app oficial de Cairos en Make

Non está publicada e non hai data. O que hai é a API —coa súa lista de eventos, o seu OpenAPI e os seus webhooks— e esta páxina, que che di exactamente que enganchar e con que código. Dentro de Cairos hai ademais receitas xa montadas e un fluxo de n8n descargable, en API e integracións → Comezar.

Se a túa tenda é de PrestaShop, este é o teu camiño

Cairos conecta só con Shopify, WooCommerce e Odoo. Con PrestaShop aínda non, e está a medias a propósito: o tipo de IVE de cada liña non vén na liña —hai que resolvelo contra outros dous recursos da súa API—, os cupóns son un recurso aparte que se aplica ao pedido e non ás liñas, e cada tenda chámalle dun xeito distinto ao estado que significa «vendido», porque eses estados edítaos o comerciante. Facturar tres de cada catro pedidos e inventar o IVE do cuarto é peor ca dicir que non: o «non» vese o primeiro día e o IVE mal posto vese no 303.

Mentres tanto, os seus pedidos entran perfectamente por aquí: PrestaShop sabe avisar a un enderezo cando entra un pedido, e o que hai debaixo é exactamente o mesmo percorrido que conta esta páxina.

O módulo que se usa

O de sempre cando non hai app: HTTP. E dentro de HTTP, o que fai a petición con autenticación por clave, que existe xustamente para non deixar a clave escrita á vista no escenario.

A diferenza entre usar ese módulo e o HTTP xenérico non é cosmética. Co xenérico, a cabeceira Authorization coa túa clave dentro queda escrita no escenario, e calquera do teu equipo que o abra ve a clave e lévaa. Coa conexión por clave, a clave vive no chaveiro de Make e o escenario só a referencia.

Campo da conexiónQue poñer
Nome da clave (cabeceira)Authorization
ValorBearer cai_live_TU_CLAVE — coa palabra Bearer e o espazo
Onde vaiNa cabeceira, non na consulta

O fallo máis repetido montando isto é poñer só a clave, sen Bearer diante. Sae un 401 no_autenticado e parece que a clave está mal cando o que falta é unha palabra.

Un escenario completo: dun pedido a unha factura

Catro módulos. O primeiro cambia segundo de onde veña o pedido; os outros tres son sempre os mesmos.

#MóduloQue fai
1DisparadorUn webhook personalizado ao que apunta a túa tenda, ou o módulo de vixilancia da app que uses. Aquí entra o pedido.
2HTTP · petición con clavePOST a /contactos. Corpo JSON con nome, NIF e correo do pedido.
3HTTP · petición con clavePOST a /facturas coas liñas e o id do contacto do paso 2.
4HTTP · petición con clavePOST a /facturas/{id}/emitir, co id do paso 3.

O corpo do paso 3, tal cal se pega no campo de contido do módulo, substituíndo o que está entre chaves polo que traia o teu disparador:

Corpo do módulo HTTP
{
  "contacto_id": "el id que devolvió el paso 2",
  "serie": "WEB",
  "fecha_emision": "la fecha del pedido, en AAAA-MM-DD",
  "lineas": [
    {
      "descripcion": "el nombre del artículo",
      "cantidad": 1,
      "precio": 180.00,
      "tipo_iva": 21
    }
  ]
}

Copia eses nomes tal cal. Os catro que se escriben mal sempre son fecha_emision (non «fecha»), descripcion (non «concepto»), tipo_iva (non «iva») e, no paso 2, tipo con valor customer (non «cliente»). A API non ignora un campo que non coñece: devolve 422 nomeándoo, así que se un módulo se pon vermello con ese código, o primeiro é mirar error.detalles.campos.

E en cabeceiras de cada módulo, dúas, ademais da que pon a conexión:

Cabeceiras
Content-Type: application/json
Idempotency-Key: make-1042

A chave de idempotencia, que en Make importa máis ca en ningún sitio

Make reintenta escenarios, e ese é todo o problema

Un escenario que falla a metade pódese volver executar, enteiro, desde a cola de incompletos. Se o módulo que fallou era o cuarto, os tres primeiros execútanse outra vez, e o segundo crea outro contacto e o terceiro outra factura. Coa cabeceira posta, a segunda execución devolve a mesma factura e non pasa nada.

A chave ten que saír do identificador do pedido do disparador, non dunha función de aleatorio nin da data actual: se cambia entre a execución e a repetición, non serve de nada. E unha distinta por operación: make-1042 para crear a factura e make-1042-emitir para emitila.

Por que isto importa tanto e que pasa cando falta, en idempotencia.

Control de erros

Sen control de erros, un módulo que devolve 422 detén o escenario e mándao á cola. Con el, pódese decidir que facer, e a decisión non é a mesma para todos os códigos:

O que devolve CairosQue poñer no xestor de erros
429 ou 500Reintentar. Son os dous únicos que ten sentido repetir, e coa chave posta repetir é gratis.
422 datos_invalidosIgnorar e avisar a unha canle. O dato vén mal do outro sistema e repetir dará o mesmo erro. error.detalles di que campo.
401 ou 403Parar e avisar. É a conexión ou o scope: reintentar só consome operacións.

Os sete códigos, con cales se reintentan, están en erros e límites.

E un consello que aforra operacións do teu plan: non montes un escenario que consulte Cairos cada cinco minutos por se hai algo novo. Subscríbete a un webhook e que o escenario arranque cando pase algo. É máis barato, máis rápido e non gasta o límite da API.

Se isto che vai custar máis dunha tarde, mira n8n

Non é unha recomendación en contra de Make: é que n8n ten un nodo de código onde comprobar a sinatura dun webhook, e en Make iso é máis incómodo. Se só vas chamar a Cairos, Make vai perfectamente; se ademais vas recibir sucesos asinados, o outro vaiche dar menos guerra.

Preguntas sobre Make

Non. Úsase o módulo HTTP, que chama a calquera API que fale JSON. Non fai falta máis para todo o que esta documentación describe.
Nunha conexión de autenticación por clave do módulo HTTP, co nome Authorization e o valor Bearer máis a clave. Así queda no chaveiro de Make e non escrita no escenario, onde a vería calquera do teu equipo.
Case sempre porque falta a palabra Bearer e o espazo diante da clave. É o fallo número un montando isto.
Que os módulos anteriores ao fallo se executan outra vez. Sen Idempotency-Key iso significa unha segunda factura; con ela, a segunda execución devolve a primeira factura e non duplica nada.
Si: crea un webhook personalizado en Make e subscríbeo con POST /webhooks. É moito mellor ca consultar cada poucos minutos, que gasta operacións para se decatar de que non pasou nada.
Si, e hoxe é o camiño. Cairos conecta só con Shopify, WooCommerce e Odoo; con PrestaShop aínda non, porque a súa API non deixa deducir con seguridade o tipo de IVE de cada liña nin os cupóns, e preferimos non facturar antes ca facturar cun IVE inventado. Co webhook de pedido de PrestaShop e estes catro módulos, o pedido acaba nunha factura emitida igual.
Si, e así saen todas as operacións sen teclear unha ruta. Pero pídeo como openapi.json?version=3.0: Make aínda non dixire o type: ["string","null"] de OpenAPI 3.1 e ou se atasca ao importar ou che deixa mal tipados os campos que poden vir baleiros. É o mesmo contrato, traducido.

Monta o escenario e próbao cunha clave de probas

As rutas e os corpos son os que acepta o servidor hoxe. Crea unha clave cai_test_ e lanza o escenario: non rexistra en VeriFactu nin manda correos.

Módulo HTTP · Conexión por clave · Idempotency-Key do pedido

Soporte