3 ARQUITETURA DE COMUNICAÇÃO COM O CONTRIBUINTE
3.1 Modelo Conceitual
Utilizando Web Service, o Sistema de Notas Fiscais de Serviços
Serviço Eletrônicas das Administrações Tributárias Municipais disponibilizará serviços
que poderão ser acessados pelos sistemas sistemas dos contribuintes. A seguir, estão
resumidos os serviços disponíveis e suas respectivas funcionalidades básicas.
...
A aplicação acessa o serviço de “Consulta de NFS-e” e submete os dados para processamento.
A requisição é recebida pelo servidor do Web Service, que verifica os dados preenchidos e identifica a(s) NFS-e(s) correspondente (s).
O Web Service retorna uma mensagem com o resultado do processamento do serviço.
4 PADRÕES TÉCNICOS
...
O meio físico de comunicação utilizado entre os sistemas de informação dos contribuintes e o Sistema de Notas Fiscais de Serviço Eletrônicas das Administrações Tributárias Municipais será a Internet, com o uso do protocolo SSL, que além de garantir um duto de comunicação seguro na Internet, permite a utilização de nome ou código de usuário e senha em tráfego seguro.
O modelo de comunicação segue o padrão de Web Services definido pelo WS-I Basic Profile (Basic 128).
A troca de mensagens entre o Web Service do Sistema de Notas Fiscais de Serviço Eletrônicas das Administrações Tributárias Municipais e o sistema do contribuinte será realizada no padrão SOAP, com troca de mensagens XML no padrão Style/Enconding: Document/Literal, wrapped. A opção “wrapped”
representa esenta a chamada aos métodos disponíveis com a passagem de mais de um parâmetro. Para descrever os serviços disponibilizados, será utilizado um documento WSDL (Web Service DescriptionLanguage). O WSDL é o padrão recomendado para descrição de serviços SOAP.
As chamadas aos serviços serão feitas enviando como parâmetro um documento XML a ser processado pelo sistema. Esse documento não fará parte da descrição do serviço (arquivo WSDL), e o formato do XML
correspondente ao serviço está definido neste manual de integração, seção 5.
4.1 Habilitando Login
Para conectar um sistema gerador de RPS com o sistema emissor de NFS-e
Siga os seguintes passos:
1 - acesse a Área do Prestador de Serviços, no portal Portal Janela Única.
2 - clique em Contribuinte e depois em RPS.
3 - clique no botão Alterar Senha.
A senha cadastrada será utilizada tanto na integração ao web Service de teste
quanto no Web Service de Produção. Uma vez cadastrada a nova senha a empresa
estará homologada.
As informações necessárias para acessar o Web Service são o código do usuário e
a senha.
...
5 PADRÃO DAS MENSAGENS XML
A especificação adotada para as mensagens XML é a recomendação W3C para XML 1.0, disponível em http://www.w3.org/TR/REC-xmle a codificação dos caracteres será em UTF-8.
As chamadas dos Web Services disponibilizados Administrações Tributárias Municipais e os respectivos resultados do processamento são realizadas com utilização de mensagens com o seguinte padrão:
• Área de Cabeçalho – estrutura XML padrão para todas as mensagens de chamada e retorno de resultado dos Web Services disponibilizados pelas Administrações Tributárias Municipais, que contêm os dados de controle da mensagem. A área de cabeçalho está sendo utilizada para armazenar a versão do leiaute da estrutura XML informada na área de dados
• Área de Dados – estrutura XML variável definida na documentação do Web Service acessado.
Abaixo, o leiaute da Área de Cabeçalho:
# | Nome | Elemento | Pai | Tipo | Ocorrência | Tamanho | Descrição |
---|---|---|---|---|---|---|---|
1 | cabeçalho | G | 1-1 | TAG raiz do cabeçalho da | |||
username | A | 1 | C | 1-1 | Login para autenticação | ||
password | A | 1 | C | 1-1 | Senha para autenticação | ||
timestamp | A | 1 | DT | 1-1 | Timestamp da requisição |
6 ESTRUTURA DE DADOS DO WEB SERVICE
Existe um único Web Service com todos os serviços apresentados no item 3.1. O fluxo de comunicação é sempre iniciado pelo sistema do contribuinte com o envio de uma mensagem XML ao Web Service com o
pedido do serviço desejado.
...
O aplicativo do contribuinte inicia a conexão enviando uma mensagem de solicitação de serviço para o Web Service de recepção de solicitação de serviços;
O Web Service de recepção recebe a mensagem de solicitação de serviço e a coloca na fila de serviços solicitados;
O Web Service de recepção de solicitação de serviços retorna o protocolo da solicitação de serviço e a data e hora de gravação na fila de serviços solicitados ao aplicativo do contribuinte;
O aplicativo do contribuinte recebe o protocolo;
Na estrutura interna do aplicativo de NFS-e a solicitação de serviços é retirada da fila de serviços solicitados pelo aplicativo da NFS-e em momento específico, definido pela equipe técnica da NFS-e;
O serviço solicitado é processado pelo aplicativo da NFS-e e o resultado do processamento é colocado na fila de serviços processados;
Obtenção do resultado do serviço:O aplicativo do contribuinte, utilizando o protocolo recebido, envia uma consulta ao serviço que retornará o resultado do processamento daquele protocolo, iniciando uma conexão com o Web Service;
O Web Service recebe a mensagem de consulta e localiza o resultado de processamento da solicitação de serviço;
O Web Service devolve o resultado do processamento ao aplicativo contribuinte;
O aplicativo do contribuinte recebe a mensagem de resultado do processamento e, caso não exista outra mensagem, encerra a conexão.
7 FORMATOS E PADRÕES UTILIZADOS
Abaixo seguem algumas formatações de dados que devem ser seguidas para geração correta na estrutura dos arquivos.
Formado | Observação |
---|---|
Data (date) | Formato: AAAA-MM-DD |
Data/Hora (datetime) | Formato AAAA-MM-DDTHH:mm:ss |
Valores Decimais (decimal) | Formato: 0.00 |
Valores Percentuais (decimal) | Formato 00.00 |
Não deve ser inserido caractere não significativo para preencher o tamanho completo do campo, ou seja, zeros antes de número ou espaço em branco após a cadeia de caracteres. A posição do campo é definida na estrutura do documento XML através de TAGs (<tag>conteúdo</tag>).
...
Campo | Tipo | Descrição | Tam. |
---|---|---|---|
numeroNfse | N | Número da Nota Fiscal de Serviço Eletrônica, formado | 15 |
codigoVerificacao | C | Código de verificação do número da nota | 9 |
outrasInformacoes | C | Informações adicionais ao documento | 255 |
status | N | Código de status da NFS-e e RPS | 1 |
numeroRps | N | Número do RPS | 15 |
serieRps | C | Número de série do RPS | 5 |
codigoServico | C | Código do serviço prestado Item da LC 116/2003 | 5 |
tipoRps | N | Código de tipo de RPS | 1 |
valor | N | Valor monetário. Formato: 0.00 (ponto separando casa | 15,2 |
cep | C | Número do CEP | 8 |
municipio | N | Código de identificação do município conforme tabela | 7 |
complementoEndereco | C | Complemento de endereço | 60 |
C | 80 | ||
endereço | C | Tipo e nome do logradouro (Av., Rua, ...) | 125 |
nomeFantasia | C | Nome fantasia | 60 |
numeroEndereco | C | Número do imóvel | 10 |
pais | C | Código de identificação do município conforme tabela | 4 |
razaoSocial | C | Razão Social do contribuinte | 150 |
telefone | C | Telefone | 20 |
uf | C | Sigla da unidade federativa | 2 |
aliquota | N | Alíquota. Valor percentual. | 4,2 |
numeroLote | N | Número do Lote de RPS | 15 |
cpfCnpj | C | Número de CPF ou CNPJ | 14 |
inscricao | C | Número de inscrição municipal | 15 |
nif | C | Número de Identificação Fiscal | 40 |
discriminação | C | Discriminação do conteúdo da NFS-e | 2000 |
quantidade | N | Quantidade de itens da nfs-e | 15,2 |
detalhe | C | Código de Obra e código ART | 15 |
cnae | N | Código CNAE | 7 |
codigoNbs | C | Código de NBS | 9 |
codTributacao | C | Código de Tributação | 20 |
exigibilidade | N | Código de natureza da operação | 1 |
simnao | N | Identificação de Sim/Não | 1 |
numProcesso | C | Número do processo judicial ou administrativo de | 30 |
regime | N | Código de identificação do regime especial de tributação | 1 |
responsavelRetencao | N | Identificação do responsável pela retenção do ISS | 1 |
tipoFiltroLote | N | Código de tipo de busca de lote | 1 |
tipoFiltroNota | N | Código de tipo de busca de NFS-e | 1 |
tipoLote | N | Código do tipo de lote | 1 |
mensagemErro | C | Código e mensagem de erro |
7.2 Tipos Complexos
A seguir são detalhadas as tabelas de cada tipo composto e seus campos.
A tabela está dividida da seguinte forma:
(1) | ||||
---|---|---|---|---|
(2) | ||||
Nome | Tipo | Ocorrência | Descrição | |
| (4) | (5) | (6) | (7) |
(4) | (5) | (6) | (7) |
...
notaFiscalServicoEletronica | |||
---|---|---|---|
Representa dados de identificação da Nfs-e. | |||
Nome | Tipo | Ocorrência | Descrição |
numeroNfse | numeroNfse | 1 - 1 | |
codigoVerificacao | codigoVerificacao | 1 - 1 | |
dataEmissao | date | 1 - 1 | |
numeroNfseSubstituta | numeroNfse | 0 - 1 | Não utilizado |
outrasinformacoes | outrasinformacoes | 0 - 1 | |
status | status | 1 - 1 | 1 ou 2 |
descStatus | string | 0 - 1 | 1 - Normal |
creditoGerado | creditoGerado | 0 - 1 | Tabela creditoGerado |
complementoPrestador | complementoPrestadorServico | 0 - 1 | |
valorNfse | valorNfse | 0 - 1 | |
identificacaoOrgaoGerador | identificacaoOrgaoGerador | 0 - 1 | Tabela identificacaoOrgaoGerador |
rps | reciboProvisorioDeServico | 0 - 1 | Tabela reciboProvisorioDeServico |
loteRPS | |||
---|---|---|---|
Representa dados de identificação do Lote. | |||
Nome | Tipo | Ocorrência | Descrição |
tipoLote | tipoLote | 1 - 1 | 1 - Recibo provisório de |
ildentLote | numeroLote | 1 - 1 | Não pode ser repetido |
recibosProvisoriosDeServico | recibosProvisoriosDeServico | 1 - N | Tabela |
resultado | int | 1 - 1 | Número do resultado |
status | int | 1 - 1 | Código do status |
descStatus | string | 1 - 1 | Descrição do status |
codErro | int | 1 - 1 | Código do erro |
informacoesErro | string | 0 - 1 | Informações sobre o |
reciboProvisorioDeServico | |||
---|---|---|---|
Representa dados do Recibo Provisório de Serviço (RPS). | |||
Nome | Tipo | Ocorrência | Descrição |
dataEmissaoRps | date | 1 - 1 | |
identificacao TomadorServico | recibosProvisoriosDeServico | 0 - 1 | Tabela |
itens | item | 0- N | Tabelaitem |
numeroRps | numeroRps | 1 - 1 | Não pode ser |
numeroRpsSubstituto | numeroRps | 0 - 1 | Não utilizado |
prestadorServico | prestadorServico | 0 - 1 | Tabela |
serieRps | serieRps | 1 - 1 | Não utilizado |
tipoRps | tipoRps | 1 - 1 | 1 - Recibo provisório de |
tipoRpsSubstítuto | tipoRpsSubstítuto | 0 - 1 | Não utilizado |
serieRpsSubstítuto | serieRpsSubstítuto | 0 - 1 | Não utilizado |
statusRps | status | 1 - 1 | 1 - Normal |
detaheContrucaoCivil | detaheContrucaoCivil | 0 - 1 | Tabela detalheContucaoCivil |
identificacaointermediarioServico | identificacaointermediarioServico | 0 - 1 | Tabela IdentficacaointermediarioServico |
identicficacaoPrestacaoServico | identicficacaoPrestacaoServico | 1 - 1 | Tabela identicficacaoPrestacaoServico |
creditoGerado | |||
---|---|---|---|
Valor do crédito gerado. | |||
Nome | Tipo | Ocorrência | Descrição |
valorCredito | valor | 0 - 1 | Não utilizado |
complementoPrestadorServico | |||
---|---|---|---|
Representa dados do complemento de endereço do prestador do serviço | |||
Nome | Tipo | Ocorrência | Descrição |
bairro | bairro | 0 - 1 | |
cep | cep | 1 - 1 | |
cidade | municipio | 1 - 1 | De acordo com a tabela do IBGE, utilizamos os 7 dígitos |
complementoEndereco | complementoEndereco | 0 - 1 | |
0 - 1 | |||
nomeFantasia | nomeFantasia | 0 - 1 | |
numeroEndereco | numeroEndereco | 1 - 1 | |
pais | pais | 0 - 1 | Tabela do BACEN |
razaoSocial | razaoSocial | 1 - 1 | |
telefone | telefone | 0 - 1 | |
uf | uf | 1 - 1 |
valorNfse | |||
---|---|---|---|
Representa dados do valor da Nota Fiscal de Serviço eletrônica. | |||
Nome | Tipo | Ocorrência | Descrição |
aliquotaServicos | aliquota | 0 - 1 | De acordo com o Código |
baseCalculo | valor | 0 - 1 | De acordo com o Código |
valorIss | valor | 0 - 1 | |
valorLiquidoNfse | valor | 0 - 1 |
identificacaoOrgaoGerador | |||
---|---|---|---|
Representa dados de identificações do órgão gerador. | |||
Nome | Tipo | Ocorrência | Descrição |
codigoMunicipioGerador | municipio | 1 - 1 | De acordo com a tabela do IBGE, utilizamos os 7 dígitos |
ufMunicipioGerador | uf | 1 - 1 |
identificacaoTomadorServico | |||
---|---|---|---|
Representa dados de identificações do tomador do serviço. | |||
Nome | Tipo | Ocorrência | Descrição |
bairro | bairro | 0 - 1 | |
cep | cep | 0 - 1 | |
cidade | municipio | 0 - 1 | De acordo com a tabela do IBGE, utilizando os 7 dígitos |
complementoEndereco | complementoEndereco | 0 - 1 | |
cpfCnpj | cpfCnpj | 0 - 1 | |
0 - 1 | |||
endereco | endereco | 0 - 1 | |
inscricaoMunicipal | inscricao | 0 - 1 | |
nifTomador | nif | 0 - 1 | |
numeroEndereco | numeroEndereco | 0 - 1 | |
pais | pais | 0 - 1 | |
razaoSocial | razaoSocial | 0 - 1 | |
telefone | telefone | 0 - 1 | |
uf | uf | 0 - 1 |
Item | |||
---|---|---|---|
Representa dados do item do RPS. | |||
Nome | Tipo | Ocorrência | Descrição |
descricao | discriminacao | 0 - 1 | |
quantidade | quantidade | 0 - 1 | |
total | quantidade | 0 - 1 | |
valorUnitario | quantidade | 0 - 1 |
prestadorServico | |||
---|---|---|---|
Representa dados do item do RPS. | |||
Nome | Tipo | Ocorrência | Descrição |
cpfCnpj | cpfCnpj | 1 - 1 | |
inscricaoMunicipal | inscricao | 0 - 1 |
detalheConstrucaoCivil | |||
---|---|---|---|
Representa dados do detalhe da construção civil. | |||
Nome | Tipo | Ocorrência | Descrição |
art | detalhe | 0 - 1 | |
codigoObra | 0 - 1 |
identificacaoIntermediarioServico | |||
---|---|---|---|
Representa dados de identificação do intermediário do serviço. | |||
Nome | Tipo | Ocorrência | Descrição |
cidadeIntermediario | municipio | 0 - 1 | De acordo com a tabela do IBGE, utilizando os 7 dígitos |
cpfCnpj | cpfCnpj | 0 - 1 | |
inscricaoMunicipal | inscricao | 0 - 1 | |
razaoSocial | razaoSocial | 0 - 1 |
identificacaoPrestadorServico | |||
---|---|---|---|
Representa dados de identificação da prestação do serviço. | |||
Nome | Tipo | Ocorrência | Descrição |
codigoCnae | cnae | 1 - 1 | |
aliquota | aliquota | 0 - 1 | De acordo com o Código |
codigoNbs | codigoNbs | 0 - 1 | |
codigoTributacaoMunicipio | codTrbutacao | 0 - 1 | De acordo com o Código |
competencia | date | 1 - 1 | |
descontoCondicionado | valor | 0 - 1 | Não utilizado |
descontoIncondicionado | valor | 0 - 1 | Não utilizado |
discriminacao | discriminacao | 1 - 1 | |
exigibilidadeIss | exigibilidade | 1 - 1 | 1 - Exigível |
incentivoFiscal | simnao | 1 - 1 | 1 - sim |
issRetido | simnao | 1 - 1 | 1 - sim |
itemListaServico | codigoServico | 1 - 1 | De acordo coma tabela da lista de serviços anexa à Lei Complementar nº 116,de 31 de julho de 2003 |
municipioIncidencia | municipio | 0 - 1 | De acordo com a tabela do IBGE, utilizando os 7 dígitos |
municipioPrestacaoServico | municipio | 1 - 1 | De acordo com a tabela do IBGE, utilizando os 7 dígitos |
numeroProcesso | numProcesso | 0 - 1 | |
optanteSimpesNacional | simnao | 1 - 1 | 1 - sim |
outrasRetencoes | valor | 0 - 1 | |
paisPrestacaoServico | pais | 0 - 1 | Tabela BACEN |
regimeEspecialTributacao | regime | 0 - 1 | Não utilizado |
responsavelRetencao | responsavelRetencao | 0 - 1 | Não utilizado |
valorCofins | valor | 0 - 1 | |
valorCsll | valor | 0 - 1 | |
valorDeducoes | valor | 0 - 1 | |
valorInss | valor | 0 - 1 | |
valorIr | valor | 0 - 1 | |
valorIss | valor | 0 - 1 | |
valorPis | valor | 0 - 1 | |
valorServico | valor | 1 - 1 | |
valorTotalributos | valor | 0 - 1 |
(1) | ||||
---|---|---|---|---|
(2) | ||||
Nome | Tipo | Ocorrência | Descrição | |
| (4) | (5) | (6) | (7) |
(4) | (5) | (6) | (7) |
8 SERVIÇOS
A seguir estão os serviços relacionados disponíveis, conforme descritos no item 3.1, no WebService e seus XML Schema. O XML Schema define a estrutura e formatação do arquivo XML que conterá os dados a serem trafegados. Esses documentos serão enviados de forma textual (como uma string) como
parâmetros do serviço oferecido pelo Web Service, como descrito em 4. As tabelas que detalham cada XML Schema estão divididas da seguinte forma:
(1) | ||||
---|---|---|---|---|
(2) | ||||
Nome | Tipo | Ocorrência | Descrição | |
| (4) | (5) | (6) | (7) |
(4) | (5) | (6) | (7) |
Legenda da tabela:
(1) Elemento
(2) Número identificador do campo, quando este contiver subitens;
(3) Nome do campo;
(4) Nome do tipo do campo que pode ser do tipo primitivo, simples ou complexo;
(5) Indica qual é o campo pai, para definição da hierarquia;
(6) Quantas vezes o campo se repete na estrutura de dados: a. Formato: “z-y”
onde “x” é a quantidade mínima e “y” a quantidade máxima. Se a quantidade
máxima for indefinida, será utilizado “N” no lugar do “y”;
(7) Descreve alguma observação pertinente;
(8) Formato de grupo, utilizado para definição de uma escolha (ver próximo item);
(9) Identifica os campos ou grupos que farão parte de uma escolha (choice).
8.1 Recepção e Processamento de Lote de RPS (Gerar NFS-e)
Esse serviço será executado, pelo o método gerarNfse, passando a mensagem XML como parâmetro com a estrutura definida na tabela que segue.
gerarNfse | ||||
---|---|---|---|---|
# | Nome | Tipo | Ocorrência | Observação |
1 | gerarNfse | 1 - 1 | ||
loteRPServico | loteRps | 1 - 1 |
Em resposta a chamada do serviço será devolvida a estrutura definida na tabela a seguir.
gerarNfseReponse | ||||
---|---|---|---|---|
# | Nome | Tipo | Ocorrência | Observação |
1 | gerarNfseResponse | 1 - 1 | ||
protocolo | int | 1 - 1 |
| |
mensagemErro | string | 0 - 1 |
O lote será processado posteriormente, gerando a nota fiscal em caso de conformidade e sendo o seu resultado disponibilizado para consulta (tanto o lote quanto as notas).
8.2 Consulta de Lote de RPS
Esse serviço será executado pelo método buscarLote, passando a mensagem XML como parâmetro com a estrutura definida na tabela que segue.
buscarLote | ||||
---|---|---|---|---|
# | Nome | Tipo | Ocorrência | Observação |
1 | buscarLote | 1 - 1 | ||
tipoFiltroLote | tipoFiltroLote | 1 - 1 | ||
filtroLote | int | 1 - 1 |
Em resposta a chamada do serviço será devolvida a estrutura definida na tabela a seguir.
buscarLoteResponse | ||||
---|---|---|---|---|
# | Nome | Tipo | Ocorrência | Observação |
1 | buscarLoteResponse | 1 - 1 | ||
lote | loteRps | 0 - 1 | choice | |
mensagemErro | string | 0 - 1 |
8.3 Consulta de NFS-e
buscarNfse | ||||
---|---|---|---|---|
# | Nome | Tipo | Ocorrência | Observação |
1 | buscarNfse | 1 - 1 | ||
tipoFiltroNota | tipoFiltroNota | 1 - 1 | ||
filtroNota | string | 1 - 1 | Filtro a utilizar |
Esse serviço será executado pelo método buscarNfse, passando a mensagem XML como parâmetro com a estrutura definida na tabela que segue. Em resposta a chamada do serviço será devolvida a estrutura definida na tabela a seguir.
buscarNfseResponse | ||||
---|---|---|---|---|
# | Nome | Tipo | Ocorrência | Observação |
1 | buscarNotaResponse | 1 - 1 | ||
nfs-e | notaFiscalServicoEletronica | 0 - N | choice | |
mensagemErro | string | 0 - 1 |