Fluxo de transmissão
Neste guia será mostrado um fluxo completo de transmissão de arquivos já validados no módulo PVA.
Neste guia será mostrado um fluxo completo de transmissão de arquivos já validados no módulo PVA.
Visão geral
Após a validação de um arquivo sem erros ou apenas com advertências, é possível realizar o processo de assinatura e transmissão usando as APIs do módulo PVA. Para isso segue abaixo alguns conceitos.
Certificado digital
São usados no módulo PVA certificados do tipo A1. Antes de qualquer transmissão, é necessário realizar o upload do certificado em formato pfx. Tanto o certificado, quanto a senha são armazenados de maneira segura e criptografada, e são usados apenas no processo de assinatura e transmissão. Após upload, nenhum usuário consegue baixar o certificado ou visualizar a senha do mesmo. Esse upload só precisa ser feito uma vez no início da utilização do certificado e posteriormente quando o mesmo expirar a validade.
Signatários
Signatário é aquele que participa de alguma maneira do processo de assinatura da escrituração no PVA. Para os SPEDs do tipo ICMS_IPI (Fiscal) e CONTRIBUICOES (PIS/COFINS), há apenas um signatário, identificado pelo próprio CNPJ da empresa da escrituração. Para arquivos do tipo CONTABIL (ECD), haverá mais de um signatário, os quais podem ser pessoas físicas ou jurídicas. Cada signatário deve possuir um certificado digital. Quando um arquivo é validado, o módulo PVA tenta encontrar um certificado digital com o mesmo CNPJ raiz ou com o mesmo CPF do signatário. Caso encontre, este será associado automaticamente ao signatário. Caso contrário, é necessário o uso de uma API para associar um certificado ao signatário. Em qualquer um dos casos, sempre é possível alterar o certificado de um signatário a qualquer momento, desde que a transmissão ainda não tenha sido efetuada.
Assinatura e transmissão
Quando todos os signatários já estão com seus certificados devidamente associados é possível usar a API de assinatura e transmissão que irá iniciar o processo. Após esse início, os status da escrituração irão transitar entre TRANSMITTING no início do processo e TRANSMISSION_FAILED e TRANSMISSION_SUCCEEDED, para falha ou sucesso no processo, respectivamente. Para consultar o status atual basta usar os endpoints que já são usados no fluxo de validação.
Fluxo
Abaixo um fluxo completo usando as APIs do processo de transmissão
Preparação: enviar certificados
Utilizamos o endpoint de Upload de Certificados para enviar o certificado. Este é um endpoint do tipo multipar/form-data simples com 2 atributos:
POST/integration/api/certificate/uploadEntre para ver o host e a referência- file: contendo os bytes do arquivo do certificado em formato pfx
- password: a senha do certificado
É possível, caso desejado, utilizar o endpoint de Pré-visualização / confirmação de dados, ao qual são aceitos os mesmos parâmetros do upload, porém o módulo PVA irá apenas validar os dados informados e retornar uma prévia dos dados do certificado como CNPJ, emissor, validade, etc. Esse passo é opcional.
POST/integration/api/certificate/upload/previewEntre para ver o host e a referênciaA qualquer momento é possível usar o endpoint de Listagem de Certificados para acompanhar os certificados já enviados e/ou que estejam próximos de expirar.
GET/integration/api/certificateEntre para ver o host e a referênciaPasso 1: Associar os certificados aos signatários
Após a validação sem erros ou apenas com advertências, podemos associar os certificados aos signatários.
Listamos os signatários da escrituração com o endpoint de Listagem de signatários. Todos os registros retornados com o atributo certificate com valor null, estão pendentes de associação de certificados.
GET/integration/api/bookkeeping/{bookkeepingId}/signatoriesEntre para ver o host e a referênciaPara cada signatário sem certificado, iremos Associar um certificado com este endpoint, informando o id do signatário e o id do certificado.
PATCH/integration/api/bookkeeping/{bookkeepingId}/signatories/{signatoryId}/certificate/{certificateId}Entre para ver o host e a referênciaPasso 2: Realizar a assinatura e transmissão
Usamos o endpoint de Assinar e Transmitir informando o id da escrituração. Caso algum critério para a transmissão não seja atendido, como por exemplo um arquivo validado com erros ou algum signatário pendente de associação de certificado, uma mensagem de erro será retornada. Caso contrário, um status de sucesso será retornado e aplicação client pode acompanhar os status TRANSMITTING, TRANSMISSION_FAILED e TRANSMISSION_SUCCEEDED usando o endpoint para Consultar os dados de uma escrituração.
PATCH/integration/api/bookkeeping/{bookkeepingId}/transmitEntre para ver o host e a referênciaGET/integration/api/bookkeeping/{bookkeepingId}Entre para ver o host e a referência