Open source

Templates de facturas (Vero Template)

Desenha o aspecto das tuas facturas, recibos e notas em React e Tailwind CSS com a biblioteca @veroao/invoice, e usa o template no Vero. As regras da AGT vêm incluídas: o template só muda o aspecto, tudo o que é fiscal vem sempre do documento. Galeria e documentação completa em template.vero.ao.

Começar

Terminal
npx @veroao/invoice init minhas-facturas   # projecto com templates/invoice.tsx
cd minhas-facturas && npm install
npx @veroao/invoice dev                     # pré-visualização ao vivo em http://localhost:3200
npx @veroao/invoice check                   # as mesmas verificações que o Vero faz

O dev redesenha o PDF sempre que gravas, nos cinco tipos de documento (FT, FR, NC, ND, RC), e mostra os erros com o componente e o motivo.

Um template

TSX
import { Tailwind, Document, Row, Logo, DocumentTitle, DocumentNumber,
  DocumentDate, Customer, Issuer, Items, Totals, LegalNotes } from "@veroao/invoice"

export default function MyInvoice() {
  return (
    <Tailwind config={{ theme: { extend: { colors: { brand: "#0E4C63" } } } }}>
      <Document className="bg-white px-12 pt-10 text-[11px]">
        <Row className="items-start justify-between">
          <Logo className="h-12" />
          <DocumentTitle className="text-3xl font-bold uppercase text-brand" />
        </Row>
        <Row className="mt-8 gap-6">
          <Customer className="flex-1 border border-zinc-200 p-3" />
          <Issuer className="flex-1" />
        </Row>
        <Row className="mt-6 justify-between">
          <DocumentNumber className="font-bold" />
          <DocumentDate />
        </Row>
        <Items className="mt-3" rowClassName="border-b border-zinc-200 even:bg-zinc-50" />
        <Totals className="ml-auto mt-4 w-1/2" totalClassName="text-xl font-bold text-brand" />
        <LegalNotes className="mt-6 text-[9px] text-zinc-500" />
      </Document>
    </Tailwind>
  )
}
  • Componentes próprios, listas e condições funcionam. Hooks não: um template não tem estado.
  • Classes que não existem num PDF (hover:, md:, sombras, grelha CSS) dão erro a explicar porquê.
  • Lista completa de componentes e classes suportadas em template.vero.ao/componentes.

Usar no Vero

  1. No dev, carrega em JSON para o Vero. Ou, num template da galeria, carrega em Abrir no Vero.
  2. No dashboard: Definições › Template de facturas › Importar template. O Vero valida o template e mostra-o com os dados da tua empresa.
  3. Importar e usar. Os documentos emitidos a partir daí usam o template; os já emitidos não mudam - cada documento fica preso à versão do template com que foi emitido.

Importar templates é do plano Pro. Os templates do Vero (Clássico, Simples, Moderno) estão disponíveis em todos os planos.

O que é sempre do Vero

O Vero só recebe JSON - nunca executa código de terceiros - e recusa templates com dados fiscais ou de pagamento escritos à mão. Estes elementos vêm sempre do documento, seja qual for o template:

  • Número, data, ATCUD, assinatura e a menção do programa certificado em todas as páginas.
  • NIF do emitente e do cliente, linhas, totais e IVA por taxa.
  • Código QR da AGT no canto inferior direito da última página (a pró-forma não leva).
  • Retenção na fonte, regime simplificado, isenções e marca de água dos anulados, quando se aplicam.

Mais em Compliance AGT.

PDF no teu próprio sistema

A biblioteca também funciona sem o Vero: passas o template e os dados do documento e recebes o PDF.

TypeScript
import { render, sampleDocument } from "@veroao/invoice"
import MyInvoice from "./templates/invoice"

const { pdf, warnings } = await render(<MyInvoice />, sampleDocument("FT"))  // pdf: Uint8Array

Publicar na galeria

O projecto é open source (MIT) em github.com/Eterim/vero-template. Para partilhar um template com toda a gente, abre um pull request com a pasta templates/<nome>/. A CI verifica as regras da AGT e a segurança, e a equipa revê antes de publicar. Passo a passo em Publicar na galeria.

Com agentes de IA

Usas Claude Code, Cursor ou Codex? Instala as skills do Vero e o agente passa a saber criar templates e integrar a API:

Terminal
npx skills add Eterim/veroao