Pplware

Saiba como automatizar a sua faturação online

Quando iniciei o projeto Magnar, tive de aprender a gerir partes do negócio que desconhecia por completo, tais como faturação e contabilidade.

Este artigo tem como objetivo dar algumas bases a quem esteja a começar um negócio online, tenha um negócio cuja faturação ainda não esteja automatizada ou simplesmente queira aprender mais sobre o assunto.


Com este artigo, vamos:

Ficheiro SAFT

Qualquer empresa que faça vendas tem a obrigação de comunicar, mensalmente, a faturação à AT de forma automática ou enviando mensalmente um ficheiro SAFT-PT (Standard Audit File for Tax Purposes – Portuguese version) para as finanças. Este ficheiro, em formato normalizado XML, reúne a documentação fiscalmente relevante (identificação da empresa e dos clientes, as faturas, etc.) relativa a um determinado período de tempo.

O ficheiro SAFT tem de ser gerado por um software de faturação certificado. Depois de gerado, é submetido no portal das finanças pelo contabilista da empresa, ou pelo próprio software, se este estiver integrado com o portal das finanças (já quase todos estão). Felizmente, existem várias soluções no mercado que permitem uma fácil gestão da faturação online.

 

Programas de faturação

Entre outras funcionalidades, este tipo de software permite:

Avaliei os três programas de faturação online que considerei mais consistentes à luz de quatro fatores:

As opções de software analisadas foram:

Moloni – Sistema de Faturação Online

É importante ter em conta que todos as soluções analisadas são muito fortes, pelo que a minha análise é focada nos requisitos do meu próprio projeto. Naturalmente, cada empresa deve fazer a sua própria avaliação.

Acabei por optar pelo InvoiceXpress pela qualidade da GUI e simplicidade da API.

Vejamos mais em detalhe a implementação da geração de uma fatura/recibo, alteração de estado da fatura e envio do email respetivo.

Implementação com o InvoiceXpress

A API do InvoiceXpress é REST em formato XML e permite gerir clientes, itens, faturas, devoluções, shippings, entre outros.

Tanto na API do Moloni como na do SageOne, a autenticação é feita por OAuth 2.0. No InvoiceXpress, a autenticação é feita enviando a API key na query string. Esta opção é menos segura, o que obriga a algumas precauções.

O processo de enviar uma fatura a um cliente por email tem três etapas:

Neste capítulo descreverei a implementação necessária no backend de forma a automatizar este processo.

Gerar a fatura/recibo

O processo começa sempre com uma compra a ser efectuada no backend. Depois do pagamento ser confirmado, podemos então criar uma fatura.

A fatura é constituída por pelo menos a data, uma lista de itens e um cliente. Podem-se enviar outros parâmetros, tais como a retenção, descontos, mas neste artigo ficar-me-ei pelo básico.

Vejamos os modelos Java que suportam estes objetos no meu projeto.

 

O IETax, que faz parte do IEItem, contém apenas o nome do código IVA que é aplicado; por exemplo IVA23 ou IVA13. Caso tenha o NIF do cliente, pode passá-lo no parâmetro “fiscalId”. O modelo IEInvoice é criado e preenchido sempre que uma compra é efetuada no sistema. Depois é convertido para XML e submetido por POST através do seguinte endpoint:

/invoice_receipts.xml

A resposta da API será um modelo mais completo da fatura. É importante reter o seu ID para os passos seguintes. Não entrarei em detalhes de implementação na conversão do modelo para XML nem nos pedidos REST, por variar demasiado de linguagem para linguagem.

Alterar o estado da fatura

As faturas são sempre criadas como rascunhos. A partir daqui há duas opções:

Quando está “finalized”, já não se pode apagar. Se houver necessidade, pode-se cancelar, alterando desta vez o estado para “canceled”. De notar que, para cancelar uma fatura, é necessário especificar um motivo.

A alteração do estado de uma fatura é feita enviando um objeto com o seguinte modelo:

public class IEState {
 String state;
 }

Deverá ser feito um PUT para o endpoint:

/invoice_receipts/{invoice-receipt-id}/change-state.xml

Enviar email com a fatura

A API do InvoiceXpress suporta o envio de uma fatura por email depois desta estar finalizada, fazendo um PUT para o endpoint:

/invoice_receipts/{invoice-receipt-id}/email-document.xml

Deixo o meu modelo Java:

public class IEMessage {
 IEClient client;
 String subject;
 String body;
 String cc;
 String bcc;
 }

O campo body não é obrigatório, mas pode ser usado para enviar HTML para obter um email mais rico.

Notem que também dá para gerar um URL com o PDF da fatura. Esta funcionalidade pode ser bastante útil para, por exemplo, disponibilizar todas as faturas do cliente no website.

Conclusão

Em suma, o processo de automatização da faturação não é complicado, podendo ser feito por um programador de backend em poucos dias. Neste artigo, abordei apenas o cenário mais básico (criar faturas) mas é possível automatizar muitos outros processos.

Não há softwares certos nem errados, cada indústria tem necessidades diferentes e, portanto, cada empresa deve adotar aquele que mais lhe fizer sentido tendo em conta os seus desafios.

À medida que a Magnar foi crescendo, surgiram novos desafios, tanto no negócio, como na parte tecnológica.

O primeiro desafio que partilhei foi sobre o processo técnico de desenvolvimento de uma plataforma – se encontrares valor nestes tipo de artigos e quiseres que continuemos a partilhar a forma como desconstruímos outros desafios tecnológicos, deixa-nos algum feedback. Lemos e respondemos a todos os comentários e questões.

Exit mobile version