ATO COTEPE/ICMS 10/07
ATO COTEPE/ICMS Nº 10, DE 28 DE JUNHO DE 2007
· Publicado no DOU de 03.07.07
Estabelece o Protocolo de Comunicação e a Especificação de Comandos do equipamento Emissor de Cupom Fiscal (EsC-ECF).
O Secretário-Executivo do Conselho Nacional de Política Fazendária - CONFAZ, no uso de suas atribuições que lhe confere o art. 12, XIII, do Regimento da Comissão Técnica Permanente do ICMS - COTEPE/ICMS, de 12 de dezembro de 1997, por este ato, torna público que a Comissão , na sua 129ª reunião ordinária, realizada nos dias 18 a 20 de junho de 2007, em Brasília, DF, aprovou o Protocolo de Comunicação e a Especificação de Comandos do equipamento Emissor de Cupom Fiscal (EsC-ECF).
Art. 1º Fica aprovado o Anexo Único deste ato contendo o Protocolo de Comunicação e a Especificação de Comandos do equipamento Emissor de Cupom Fiscal (EsC-ECF) que descreve as camadas do protocolo de comunicação com o computador externo, bem como os comandos e respostas da comunicação remota realizada por meio de modem interno, conforme previsto no Convênio ICMS 85/01 , de 28 de setembro de 2001.
Art. 2º Este ato entra em vigor na data de sua publicação no Diário Oficial da União.
MANUEL DOS ANJOS MARQUES TEIXEIRA
ANEXO ÚNICO
PROTOCOLO DE COMUNICAÇÃO E ESPECIFICAÇÃO DE COMANDOS DO EQUIPAMENTO EMISSOR DE CUPOM FISCAL – “EsC-ECF”
Versão 01.00
Versão | Data | Observações |
01.00.E | 29-Maio-2007 | Versão inicial |
No caso da interface de comunicação ser RS232 a sugestão é:
Velocidade: 38400 57600 ou 115200 bps.
Bits de Dados: 8
Paridade: Sem paridade
Bits de Parada: 1
Controle e Fluxo: Nenhum
No caso da interface de comunicação ser RS232 e o conector DB9 a configuração do cabo deve obedecer a seguinte pinagem:
3 - Tx ------------------//----------------Rs - 2
(PC) 2 - Rs ------------------//----------------Tx - 3 (ECF)
5 - GND ---------------//----------------GND - 5
------- à RTS -7
|
------- à CTS - 8
------- à DTR - 4
|
------- à DSR - 6
Onde:
Rs – Recepção
Tx – Transmissão
GND – Terra
A comunicação entre o ECF e o aplicativo ocorre mediante a troca de pacotes, ou seja, blocos de bytes, pela porta de comunicação.
Cada pacote é iniciado sempre por um caractere de controle que permitirá ao receptor identificar a natureza da requisição ou o tipo de informação nele contida, podendo ser seguido, ou não, de campos de dados.
Código | Hexa | Decimal | Significado | Utilização |
SOH | 0x01 | 1 | Start Of Heading | Envio de Comando Resultado de Comando |
ENQ | 0x05 | 5 | ENQuiry | Solicitação de Status |
ACK | 0x06 | 6 | ACKnowledge | Aceite de Comando Enviado |
WAK | 0x11 | 17 | Wait for AcKnowledge | ECF Ocupado |
NAK | 0x15 | 21 | Negative AcKnowledge | Erro de Protocolo |
SYN | 0x16 | 22 | SYNchronous Idle | Solicitação de Sincronismo Resposta de Sincronismo |
O Caractere de Controle de cada Pacote pode ou não ser seguido de Campos de Dados. Nesses campos estarão representados os dados necessários à execução da requisição implícita no Pacote.
A seguir estão descritos os diversos Campos de Dados utilizados:
SEQ - Seqüência do Pacote de Comando
O campo Seqüência do Pacote de Comando possui o tamanho de um byte e seu conteúdo é binário contendo valores no intervalo de 0 (0x00) a 255 (0xFF).
O campo seqüência deverá ser incrementado pelo aplicativo a cada pacote de comando enviado.
O ECF rebaterá seu conteúdo quando do envio do resultado ou de um erro na execução do comando.
SPR - Seqüência do Pacote de Resposta
O campo Seqüência do Pacote de Resposta possui o tamanho de um byte e seu conteúdo é binário contendo valores no intervalo de 0 (0x00) a 255 (0xFF).
Esse campo será enviado no Pacote de Solicitação d e Status e deverá ser iniciado com 0 (zero) após o envio de cada comando. Caso a resposta ao comando possua mais de um pacote, esse campo deverá ser incrementado de uma unidade a cada solicitação de um novo pacote de resposta.
Caso a resposta possua mais de 255 pacotes o número do pacote retorna a 0, continuando a incrementação enviando os demais pacotes na seqüência.
CMD - Código do Comando
O campo Código do Comando possui o tamanho de um byte e seu conteúdo é binário representando um código de comando válido (1 -255).
Esse campo deverá conter o código de comando a ser executado pelo ECF.
EXT – Extensão de Comando
O campo Extensão de Comando possui o tamanho de um byte e seu conteúdo é binário representando um código de comando válido.
Esse campo representa a extensão do código de comando a ser executado pelo ECF quando o campo CMD contiver o valor 0xFF, para todos os outros valores de CMD esse campo deverá conter 0x00.
TBC - Tamanho do Buffer de Comando
O campo Tamanho do Buffer de Comando possui o tamanho de dois bytes e seu conteúdo é binário no formato INTEL (Byte Low / Byte High).
Esse campo deverá conter o tamanho em bytes do campo Buffer existente no Pacote de Comando.
BCD - Buffer de Comando
O campo Buffer de Comando possui tamanho variável de 0 até 1024 bytes e seu conteúdo é ASCII.
Esse campo deverá conter os parâmetros necessários à execução do comando.
TBR - Tamanho do Buffer de Resposta
O campo Tamanho do Buffer de Resposta possui o tamanho de dois bytes e seu conteúdo é binário no formato INTEL (Byte Low / Byte High).
Esse campo conterá o tamanho em bytes do campo Buffer de Resposta existente no pacote de Resultado de Comando.
BRS - Buffer de Resposta
O campo Buffer de Resposta possui tamanho variável de até 4096 bytes e seu conteúdo é ASCII.
Esse campo conterá os dados solicitados ao ECF quando houver Resultado de Comando.
CHK - Checksum
O campo Checksum possui o tamanho de um byte e seu conteúdo é binário.
O conteúdo desse campo deverá ser calculado através da soma, sem sinal módulo 256, de todos os bytes do pacote de comando ou de resposta, excetuando-se o caractere de controle inicial (SOH).
Na recepção de um pacote de Resultado de Comando esse campo deverá ser conferido pelo aplicativo para verificar se a transmissão do pacote terminou isenta de problemas.
Esse campo contém o código do erro retornado em um pacote de Resultado de Comando com Erro.
CAT – Categoria do Retorno
O campo Categoria possui o tamanho de um byte e seu conteúdo é binário.
Esse campo contém o Código da Categoria de Ocorrências retornado em um pacote de Resultado de Comando.
RET - Retorno
O campo Retorno possui o tamanho de 4 (quatro) bytes e seu conteúdo é binário.
Esse campo contém o Código do Retorno devolvido em um pacote de Resultado de Comando dependente do Código da Categoria de Ocorrências
Especificação dos Pacotes
Solicitação de Sincronismo
Solicita ao ECF a transmissão do último SEQ enviado pelo aplicativo e processado pelo ECF, com ou sem erro.
Formato:
SYN |
Resposta de sincronismo
Envia ao aplicativo o último SEQ recebido e processado pelo ECF, com ou sem erro.
Formato:
SYN | SEQ |
Solicitação de Status
Solicita ao ECF o estado da execução do último comando enviado.
Formato:
ENQ | SPR |
Comando
Envia ao ECF um comando para a execução de uma função ou de uma leitura de dados.
Formato:
SOH | SE | CMD | EXT | TBC | BCD | CHK |
Aceite de Comando Enviado
Informa ao aplicativo que o pacote de comando foi aceito pelo ECF.
Formato:
ACK |
Erro de Protocolo
Informa ao aplicativo que o pacote de comando foi recebido pelo ECF e não será executado em função de um erro de protocolo.
Formato:
NAK | CAT | RET |
ECF Ocupado
Informa ao aplicativo que o ECF encontra-se ocupado executando algum comando.
Importante: A implementação desse recurso é obrigatória e o ECF deverá ser capaz de monitorar a porta de comunicação durante a execução de um comando ou rotina interna.
Formato:
WAK | CAT | RET |
Resultado de Comando
Retorna ao aplicativo o status da execução do último comando aceito pelo ECF.
Formato:
SOH | SEQ | CMD | EXT | CAT | RET | TBR | BRS | CHK |
Fluxos de Comunicação
Sincronismo
APLICATIVO |
| ECF | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo envia o Pacote de Solicitação de Sincronismo | è |
| ||||||||||
SYN |
|
|
|
|
|
| ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| De acordo com o estado do ECF, podem ocorrer as seguintes situações: | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
| ç | Situação 1 O ECF responde com um pacote Resposta de sincronismo sinalizando que está em repouso, ou seja, não está executando nenhum comando ou rotina interna, informando o seqüencial do último comando recebido. | ||||||||||
|
|
|
|
|
| SYN SEQ | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo deverá prosseguir com o Fluxo de Solicitação de Status. |
|
| ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
| ç | Situação 2 O ECF responde com um pacote de ECF ocupado sinalizando que está executando algum comando ou rotina interna. | ||||||||||
|
|
|
|
|
| WAK CAT RET | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo deverá aguardar 500ms e executar novamente o Fluxo de Sincronismo. |
|
| ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Situação 3 O aplicativo não recebe resposta em função do ECF estar desligado ou a conexão serial estar interrompida. | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo identifica a ocorrência de timeout após aguardar 200ms e deve executar novamente o fluxo (o ECF poderá estar desligado). |
|
|
Envio de Comandos
APLICATIVO |
| ECF | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo envia o Pacote de Comando | è |
| ||||||||||
SOH SEQ CMD EXT TBC BCD CHK |
|
|
|
|
|
| ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| De acordo com o estado do ECF, podem ocorrer as seguintes situações: | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
| ç | Situação 1 O ECF responde com um pacote de Aceite de Comando Enviado. | ||||||||||
|
|
|
|
|
| ACK | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
| ç | Situação 2 O ECF responde com um pacote de Erro de Protocolo. | ||||||||||
|
|
|
|
|
| NAK CAT RET | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
| ç | Situação 3 O ECF responde com um pacote de ECF ocupado sinalizando que está executando algum comando ou rotina interna. | ||||||||||
|
|
|
|
|
| WAK CAT RET | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo deverá aguardar 500ms e executar novamente o Fluxo de Solicitação de Status. |
|
| ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Situação 4 O aplicativo não recebe resposta em função do ECF estar desligado ou a conexão serial estar interrompida. | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo identifica a ocorrência de timeout após aguardar 200ms. |
|
|
APLICATIVO |
| ECF | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo envia o Pacote de Solicitação de Status | è |
| ||||||||||
ENQ SPR |
|
|
|
|
|
| ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| De acordo com o estado do ECF, podem ocorrer as seguintes situações: | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
| ç | Situação 1 O ECF responde com um pacote de Resultado de Comando. | ||||||||||
|
|
|
|
|
| SOH SEQ CMD EXT CAT RET TBR BRS CHK | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
| ç | Situação 2 O ECF responde com um pacote de ECF ocupado sinalizando que está executando algum comando ou rotina interna. | ||||||||||
|
|
|
|
|
| WAK CAT RET | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo deverá aguardar 500ms e executar novamente o Fluxo de Solicitação de Status. |
|
| ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Situação 3 O aplicativo não recebe resposta em função do ECF estar desligado ou a conexão serial estar interrompida. | ||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
O aplicativo identifica a ocorrência de timeout após aguardar 200ms e deve executar novamente o fluxo (o ECF poderá estar desligado). |
|
|
Códigos das Categorias de Retorno
Comando realizado com sucesso – Categoria, CAT , 0 (0x00)
Indica sucesso na execução do comando.
Nessa categoria o RET está dividido em :
Byte | Conteúdo | ||
0 | Cada bit representa um status retornado pelo ECF conforme a seguir: | ||
| Bit | Valor | Significado |
| 0 | 0 | Indica a existência de um outro pacote de resposta para o comando executado. |
|
| 1 | Indica que esse é o último pacote de resposta para o comando executado. |
| 1 | 0 | Indica Status de Papel OK |
|
| 1 | Indica Status de papel – Pouco papel |
| 2 | 0 | Em operação normal |
|
| 1 | Em MIT |
| 3 | 0 | Tampa Fechada |
|
| 1 | Tampa Aberta |
| 4 | 0 | Livre do Fabricante |
|
| 1 |
|
| 5 | 0 | Livre do Fabricante |
|
| 1 |
|
| 6 | 0 | Reservado ao Fisco |
|
| 1 |
|
| 7 | 0 | Reservado ao Fisco |
|
| 1 |
|
1 | Reservado ao Fisco | ||
2 | Esse byte irá conter o campo de dados SPR rebatido | ||
3 | Livre do fabricante | ||
Reserva-se 10 bits ao Fisco para padronização futura de status |
Comando com retorno de erro de execução – Categoria, CAT , diferente de zero (0xYY).
Indica erro na execução do comando.
Nessa categoria o RET está dividido em :
Byte | Conteúdo |
0 | Motivo da ocorrência |
1 | Reservado ao Fisco |
2 | Livre do fabricante |
3 | Livre do fabricante |
Os códigos de retorno foram agregados em categorias afins que possuem um descritivo do erro e os motivos que podem ocasionar o erro. O detalhamento do motivo da ocorrência do erro – terceira coluna da tabela abaixo – serão codificados em binário, em ordem crescente, no primeiro byte do campo RET .. Detalhamento adicional, que não contemple nenhum motivo de ocorrência dos listados abaixo, serão opcionais do fabricante nos bytes 2 e 3, reservando-se ao Fisco a possibilidade, no futuro, de implementação desse ou qualquer outro detalhamento no primeiro ou segundo byte - bytes 0 e 1 do campo RET .
Categorias de Retorno:
Categoria | Descritivo do Retorno/Erro | Motivo da ocorrência |
00 | Sem erro | 00 |
01* | Comando Inválido* | .01 O comando enviado para a impressora não existe no software básico. |
02 | Erro em parâmetro do comando | .01 Conteúdo de parâmetro inválido no comando. . 02 Falta parâmetro no comando . 03 Excesso de parâmetros no comando . 04 COO inicial maior que COO final. 05 CRZ inicial maior que CRZ final . 06 Data inicial maior que Data final
|
03 | Overflow de capacidade | 01 Excedeu a capacidade máxima do totalizador. |
04 | Erro de contexto | . 01 Comando só pode ser executado em MIT . 02 Comando não pode ser executado em MIT . 03 Comando não pode ser executado localmente . 04 Comando não pode ser executado remotamente
|
05 | Erro em cupom fiscal | .01 O comando enviado não pode ser executado, pois existe um Cupom Fiscal aberto. .02 O comando enviado não pode ser executado, pois existe um Comprovante Não Fiscal aberto. . 03 O comando enviado não pode ser executado, pois existe um Comprovante de Crédito ou Débito aberto. .04 O comando enviado não pode ser executado, pois existe um Estorno de Comprovante de Crédito ou Débito aberto. .05 O comando enviado não pode ser executado, pois existe um Relatório Gerencial aberto. . 06 O comando enviado não pode ser executado, pois o ECF está em repouso. . 07 A quantidade máxima de itens em um Cupom Fiscal foi ultrapassada. . 08 A quantidade de parcelas somente pode ser especificada para os pagamentos que envolvam meios que aceitem a emissão de CCD. . 09 O limite máximo de pagamentos por documento já foi atingido. . 10 O cancelamento de um Cupom Fiscal somente será permitido após o estorno de todos os CCDs emitidos. . 11 Comando não pode ser executado em documento não pago. . 12 Comando não pode ser executado após desconto ou acréscimo em Subtotal . 13 Comando de acréscimo/desconto já executado. . 14 Comando de consumidor já executado no clichê
|
06 | Erro em Comprovante Não Fiscal | .01 O comando enviado não pode ser executado, pois existe um Cupom Fiscal aberto. .02 O comando enviado não pode ser executado, pois existe um Comprovante Não Fiscal aberto. .03 O comando enviado não pode ser executado, pois existe um Comprovante de Crédito ou Débito aberto. .04 O comando enviado não pode ser executado, pois existe um Estorno de Comprovante de Crédito ou Débito aberto. .05 O comando enviado não pode ser executado, pois existe um Relatório Gerencial aberto. . 06 A quantidade máxima de itens em um Comprovante Não Fiscal foi ultrapassada. 07 A quantidade de parcelas somente pode ser especificada para os pagamentos que envolvam meios que aceitem a emissão de CCD. . 08 O limite máximo de pagamentos por documento já foi atingido. . 09 O cancelamento de um Comprovante Não Fiscal somente será permitido após o estorno de todos os CCDs emitidos. . 10 Comando não pode ser executado em documento não pago. 11 Comando não pode ser executado após desconto ou acréscimo em Subtotal .12 Comando de acréscimo/desconto já executado. .13 Comando de consumidor já executado no clichê
|
07 | Erro em Relatório gerencial ou CCD | .01 O comando enviado não pode ser executado, pois existe um Cupom Fiscal aberto. .02 O comando enviado não pode ser executado, pois existe um Comprovante Não Fiscal aberto. .03 O comando enviado não pode ser executado, pois existe um Comprovante de Crédito ou Débito aberto. .04 O comando enviado não pode ser executado, pois existe um Estorno de Comprovante de Crédito ou Débito aberto. .05 O comando enviado não pode ser executado, pois existe um Relatório Gerencial aberto. .06 Não existe CCD para o pagamento especificado. .07 O CCD especificado já foi impresso. .08 O CCD especificado já foi re-impresso .09 O CCD especificado já foi estornado. .10 O CDD não especificado no estorno não foi impresso .11 O limite máximo de CCD’s por cupom foi excedido. .12 Comando enviado não pode ser executado dentro de CCD .13 Documento anterior diferente de Cupom Fiscal e Comprovante Não fiscal. .14 Envio de texto genérico para CCD ou Relatório Gerencial já fechado. |
08 | Erro em Redução Z | . 01 Redução Z pendente ou já realizada na data |
09 | Integridade | . 01 Memória Fiscal inicializada em outro ECF .02 Memória de Fita Detalhe inicializada em outro de ECF. 03 Marca do ECF, Tipo ou Modelo incompatível com o gravado na Memória Fiscal. 04 Número de série da MF diferente do gravado na MFD. 05 Não foi localizado o número de série na MF . 06 Não foi localizado na MF o registro do BR. 07 Não foi localizado na MF o Símbolo da moeda . 08 Não foram localizados na MF os símbolos de criptografia do GT. 09 Não foi localizado na MF o CNPJ/ IE ou IM do usuário . 10 Versão do Software básico inválida. . 11 Memória fiscal foi desconectada. 12 MFD foi desconectada .13 Erro de gravação na Memória fiscal. 14 Erro de gravação na MFD . 15 Erro na recuperação de dados da MF. 16 Erro na recuperação de dados da MFD .17 Checksum inválido no comando recebido pelo ECF. |
10 | Cheque/CMC-7 | .01 Documento não inserido |
11 | Autenticação | .01 Excedida a quantidade permitida. 02Não permitida na condição |
12 | Sem Papel | 01 |
13 | Relógio | . 01 Qualquer alteração do relógio não permitida. . 02 Entrada ou saída de verão não permitida . 03 Relógio com data/hora anterior ao último documento gravado na MFD. 04 Data/hora do relógio inválida |
14 | Programação | .01 Índice de alíquota de ICMS já existente. 02 Índice de alíquota de ISSQN já existente . 03 Índice de ISSQN não permitido. 04 Índice de Meio de pagamento já existente .05 Índice de Não Fiscal já existente. 06 Índice de relatório gerencial já existente . 07 Excedida a quantidade máxima |
15 | Protocolo | . 01 Caractere de controle inválido no comando recebido pelo ECF. 02 Checksum inválido no comando recebido pelo ECF
|
16 | Específicos de fabricante |
|
*Quando o aplicativo for de versão anterior do EsC-ECF, o ECF deverá aceitar o comando e enviar mensagem informando para providenciar a atualização do aplicativo.
A categoria do retorno e o motivo da ocorrência são de implementações obrigatórias segundo a tabela, entretanto a implementação de um detalhamento da categoria de retorno, campo RET , diferente das listadas acima é opcional, e seu conteúdo será especificado pelo fabricante no terceito e quarto bytes - . bytes 2 e 3 do campo RET .. No caso de não implementação, o segundo, terceiro e quarto bytes deverão vir sempre em zero.
Os comandos estão divididos em 3 grupos distintos:
Comandos de implementação obrigatória – Os comandos constantes deste grupo são aqueles que, por convênio, são de implementação obrigatória e deverão obedecer rigosoramente o padrão definido neste documento. (códigos de comando 1 a 149)
Comandos de implementação opcional – Os comandos constantes deste grupo são aqueles que, por convênio, são de implementação opcional, que se implementados deverão obedecer rigorosamente o padrão especificado neste documento. (códigos de comando 150 a 254)
Comandos do Fabricante – Os comandos constantes deste grupo são aqueles cuja funcionalidade não está definida nos itens a) e b) acima, que terão especificação determinada pelo fabricante. (código de comando 255)
Todos os comandos seguem o padrão de mensagem de envio e de recepção estabelecidos no protocolo especificado neste documento.
Formato de envio:
SOH | SEQ | CMD | EXT | TBC | BCD | CHK |
Formato de recepção:
SOH | SEQ | CMD | EXT | CAT | RET | TBR | BRS | CHK |
CMD = Código do Comando com tamanho de 1 (um) byte e seu conteúdo binário de 1 a 255
EXT = Extensão do Comando , possui tamanho de 1 (um) byte e seu conteúdo é binário.
CAT = Categoria possui o tamanho de 1 (um) byte e seu conteúdo é binário.
RET = Retorno possui o tamanho de 3 (três) bytes e seu conteúdo é binário.
Parâmetros
Um comando pode, opcionalmente, ser acompanhado de parâmetros.
Os parâmetros são posicionais, e de tamanho variável, devendo cada um, obrigatoriamente, ser finalizado com um caractere pipe “|” mesmo que o seu conteúdo seja nulo.
Exemplo do comando:
No Buffer de Resposta os campos serão posicionais, de tamanho variável, finalizados pelo caractere pipe “|” mesmo que seu conteúdo seja nulo.
Exemplo do comando:
Os parâmetros e os retornos, quando presentes, são caracterizados segundo:
Formato | Tipo de informação aceita no campo, conforme tabela abaixo. |
Min | Tamanho mínimo do campo. Se zero, trata-se de campo opcional. |
Max | Tamanho máximo do campo (não inclui o delimitador pipe “|”). |
O campo Formato é codificado conforme:
N | Campo numérico. Compreende caracteres “0” (0x30) a “9” (0x39) |
A | Campo alfanumérico. Compreende os caracteres estampáveis igual ou superior a “ ” ( 0x20 ), exceto “ | “ e 0x7f. Um campo alfanumérico obrigatório não pode conter apenas espaços A codificação dos caracteres obedecerá a Code Page 1252 (Latin I) |
H | Campo alfanumérico com suporte a caracteres de controle do fabricante. |
D | Data e Hora, no formato DDMMAAAAHHMMSS O campo |
B | Campo binário (qualquer caractere: 0x00 a 0xFF) |
Os parâmetros opcionais estão caracterizados pelo tamanho mínimo zero, no descritivo de cada comando.
Para efeito de abertura de dia, a data do movimento deve ser entendida como a data do primeiro Cupom Fiscal, Nota Fiscal de Venda a Consumidor, Bilhete de Passagem ou Comprovante Não-Fiscal emitido após a última Redução Z, ou a data de emissão da Redução Z, no caso de não ter havido emissão de nenhum daqueles documentos após a última Redução Z conforme convênio.
Nos comandos onde há texto livre, os campos deverão ter o “line feed” indicando a quebra de linha. Caso contrário o software básico fará a quebra automaticamente de acordo com o número de caracteres permitido pelo mecanismo impressor.
Lista de comandos
Número | Comando |
1 | Abertura de Cupom Fiscal |
2 | Registro de Item em Cupom Fiscal |
3 | Cancelamento de Item Fiscal ou Comprovante Não Fiscal |
4 | Pagamento Cupom Fiscal e Comprovante Não Fiscal |
5 | Encerramento de Cupom Fiscal |
6 | Abertura de Gaveta |
7 | Cancelamento de Cupom Fiscal e Comprovante Não Fiscal |
8 | Abertura de CCD |
9 | Texto livre para CCD e Relatório Gerencial |
10 | Fechamento de CCD ou Gerencial |
11 | Aciona Guilhotina |
12 | Abertura de Relatório Gerencial |
13 | Abertura de Estorno de CCD |
14 | Emissão de Segunda via de CCD |
15 | Re-impressão de CCD |
16 | Abertura de Comprovante Não fiscal |
17 | Registro de Item em Comprovante Não Fiscal |
18 | Encerramento de Comprovante Não Fiscal |
19 | Estorno de Meio de Pagamento |
20 | Leitura X |
21 | Redução Z |
22 | Leitura da MF por data/CRZ |
23 | Sangria/Fundo de Troco |
24 | Mensagem Complementar - Identificação do Aplicativo |
25 | Interrompe Leituras |
26 | Captura Eletrônica de Dados |
27 | Desconto ou Acréscimo em Item |
28 | Cancela Desconto ou Acréscimo em Item |
29 | Desconto ou Acréscimo em Subtotal |
30 | Cancela Desconto ou Acréscimo em Subtotal |
|
|
|
|
80 | Entrada/Saída de Horário de Verão |
81 | Inserir Alíquota ICMS ou ISSQN |
82 | Habilitar I,F,N,IS,FS,NS |
83 | Desabilitar I,F,N,IS,FS,NS |
84 | Inserir Registradores de Meios de Pagamento |
85 | Inserir Registradores de Operações Não Fiscais |
86 | Inserir Relatório Gerencial |
87 | Inserir o número do ECF na tabela de ECF’s da rede |
88 | Configurar o ECF para atender à chamada |
|
|
100 | Re-impressão de MFD |
101 | Ajuste de Relógio |
|
|
140* | Identificação do ECF – Registro E01 |
141* | Pesquisa de Atualização de Software Básico – Registros E01, E02 e E07 |
142* | Pesquisa de Intervenção Técnica – Registros E01, E02 e E09 |
143* | Leitura de Memória de Trabalho – Registros E01, E02 e E11 |
144* | Leitura de Memória Fiscal – Registro E01, E02, E12 e E13 |
145* | Comando de Passagem do Canal Virtual |
146* | Obtenção do mapa de ECFs operacionais ligados à rede de modems |
147* | Pesquisa de Versão da Especificação de Comandos |
|
|
150 | Identificação do Consumidor no Rodapé |
151 | Cancelamento Parcial de Item |
152 | Preenchimento de Cheque |
153 | Autenticação |
154 | Operador |
|
|
255 | Comando de Fabricante |
|
|
*Observações:
1 - Os comandos de códigos 140 a 147 são os únicos usados no monitoramento remoto de estabelecimentos;
2 - O comando 145 é reservado exclusivamente ao monitoramento remoto de estabelecimentos;
3 – O comando 146 deverá preencher o campo definido no Inciso II da cláusula sexta-A do
Convênio 85/2001 com zeros e sua resposta deverá indicar neste campo o número de ordem do ECF definido em MIT para dar resposta automática à chamada telefônica;
4 – Os comandos 140 a 145 e 147, bem como suas respostas, deverão preencher o campo definido no Inciso II da cláusula sexta-A do Convënio-ICMS 85/2001 com o número de ordem do ECF a quem se destina o comando ou resposta no canal virtual;
5 – No campo definido no Inciso III da Cláusula sexta-A, os dois primeiros bytes serão equivalentes alfanuméricos dos comandos binários padronizados no presente documento – CMD -, se for o caso, e o terceiro e quarto bytes, preenchidos com zeros e reservados ao Fisco.
Comandos de Implementação Obrigatóri
Abertura de Cupom Fiscal
Inicia a emissão de um Cupom Fiscal.
Comando: 1 (0x01)
Modo: Operação Normal
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
CNPJ/CPF do Consumidor | A | 0 | 20 |
|
Nome do Consumidor | A | 0 | 30 |
|
Endereço do Consumidor | A | 0 | 79 |
|
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da Venda Bruta | N | 1 | 14 |
|
Número de série do ECF | A | 1 | 20 | Número de fabricação |
Exemplo do Comando:
1 99999999999999999999|MARIA DA SILVA|AVENIDA BRASIL 123|
Registro de Item em Cupom Fiscal
Registra item em cupom fiscal.
Comando: 2 (0x02)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Código do Produto* | A | 0 | 14 |
|
Descritivo | A | 1 | 233 |
|
Situação Tributária – Tipo + Índice
| A
N
| 1
1
| 2
2
| T, S, I, F, N, IS, FS, NS
Índice = 1 a 30 se tipo T ou Tipo S Demais = 1 2 ou 3 |
Unidade | A | 1 | 3 |
|
Quantidade | N | 1 | 7 |
|
Preço unitário | N | 1 | 8 |
|
Indicador do tipo de cálculo | A | 1 | 1 | A = Arredondado T = Truncado |
* Opcional apenas quando se tratar de item vinculado a totalizador tributado pelo ISSQN
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
Número do Item | N | 1 | 3 | 1 a 999 |
Valor do Item | N | 1 | 8 |
|
Valor do Subtotal | N | 1 | 13 |
|
Exemplo do Comando:
2 78900012345678|SABAO EM PO|T1|UN|3000|4200|
(programada quantidade e preço unitário com 3 decimais)
Cancelamento de Item Fiscal ou Não Fiscal
Cancela um item de cupom fiscal ou item de cupom não fiscal.
Comando: 3 (0x03)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Número de seqüência do item | N | 1 | 3 |
|
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
Valor do subtotal | N | 1 | 13 |
|
Exemplo do Comando:
3 2|
(Cancela item número 2)
Pagamento em Cupom Fiscal ou Comprovante Não Fiscal
Efetua o pagamento do valor do subtotal do cupom fiscal ou comprovante não fiscal.
Comando: 4 (0x04)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Índice do Pagamento | N | 1 | 2 | De 1 a 30 |
Valor | N | 1 | 13 |
|
Número de Parcelas | N | 1 | 2 | De 1 a 99 |
Informações adicionais | A | 0 | 84 |
|
Quando o número de parcelas informado for maior que 1, será impressa na informação suplementar a expressão: N. PARC: XX onde XX será o número de parcelas. Neste caso o campo de informações adicional terá seu máximo reduzido a 73 caracteres.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
Valor a pagar faltante | N | 1 | 13 |
|
O índice de pagamento “1” será pré-programado pelo software básico como “DINHEIRO” não admitindo CCD.
O número de parcelas informado indicará o número de CCD’s disponíveis para impressão para a referida forma de pagamento.
Caso haja troco, o valor a pagar faltante será zero.
Exemplo do Comando:
4 02|1000|2|Parcelado pelo cartão
Encerramento de Cupom Fiscal
Encerra um cupom fiscal e dependendo dos parâmetros enviados imprime as 8 linhas de mensagem promocional, aciona a guilhotina e imprime o cupom adicional.
Comando: 5 (0x05)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Imprime adicional | N | 1 | 1 | 0 = Não imprime adicional 1 = Imprime adicional |
Aciona Guilhotina | N | 1 | 1 | 0 = Não aciona Guilhotina 1 = Aciona Guilhotina |
Mensagem Promocional | H | 0 | * |
|
* Limitado ao buffer de envio de comando e/ou 8 linhas impressas
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da Venda Bruta | N | 1 | 14 |
|
Seqüência do pagamento* | N | 1 | 2 |
|
Indicador do meio de pagamento* | N | 1 | 2 |
|
Valor* | N | 1 | 13 |
|
Número de Parcelas* | N | 1 | 2 |
|
*Até 20 ocorrências dentro do buffer de resposta, uma para cada pagamento que admita CCD.
Exemplo do Comando:
5 0|1|Mensagem Promocional|
Abertura de Gaveta
Abre a gaveta.
Comando: 6 (0x06)
Modo: Operação Normal/ Intervenção Técnica.
Parâmetros: Nenhum
Exemplo do Comando:
6
Cancelamento de Cupom Fiscal e Comprovante Não Fiscal
Cancela um cupom fiscal ou um cupom não fiscal em emissão ou já emitido.
Comando: 7 (0x07)
Modo: Operação Normal.
Parâmetros: Nenhum
Exemplo do Comando:
7
Abertura de CCD
Inicia a emissão de um Comprovante de Crédito e Débito.
Comando: 8 (0x8)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Seqüência do Pagto | N | 0 | 2 | Seqüência do pagamento no cupom ou comprovante |
Índice do meio de pagamento | N | 1 | 2 | De 2 a 30 |
Número da Parcela | N | 0 | 2 |
|
CNPJ | A | 0 | 20 |
|
Nome | A | 0 | 30 |
|
Endereço | A | 0 | 79 |
|
O CCD deverá ser emitido imediatamente após o Cupom Fiscal/Não Fiscal. Se não forem informados os campos de seqüência de pagamento e número da parcela, os CCD’s serão emitidos em ordem crescente de seqüência e parcela.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Número de Série do ECF | A | 1 | 20 | Número de Fabricação |
Seqüência do pagamento | N | 1 | 2 |
|
Número da Parcela | N | 1 | 2 |
|
Número de parcelas faltantes | N | 1 | 2 |
|
Exemplo do Comando:
8 1|4|1|123.123.123/0001-01|MARIA DA SILVA|AVENIDA BRASIL 123|
CCD de seqüência 1 (um) do pagamento, meio de pagamento 4, parcela 1 (um).
Texto Livre para CCD e Relatório Gerencial
Imprime as linhas de texto livre em CCD ou relatório gerencial.
Comando: 09 (0x09)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Mensagem | H | 0 | * |
|
* Limitado ao tamanho do buffer de comando
As linhas serão quebradas no “line feed” ou no limite do mecanismo impressor.
Exemplo do Comando:
9 Texto da Operadora|
Fechamento de CCD ou Gerencial
Encerra o CCD ou o relatório gerencial, acionando a guilhotina de acordo com o parâmetro.
Comando: 10 (0x0A)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Aciona Guilhotina | N | 1 | 1 | 0 = Não aciona Guilhotina 1 = Aciona Guilhotina |
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Exemplo do Comando:
10 1|
Fecha o documento e aciona guilhotina.
Aciona Guilhotina
Aciona a guilhotina
Comando: 11 (0x0B)
Modo: Operação Normal/MIT.
Parâmetros: Nenhum
Exemplo do Comando:
11
Abertura de Relatório Gerencial
Inicia a emissão de um relatório gerencial.
Comando: 12 (0x0C)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Índice do Relatório Gerencial | N | 1 | 2 | De 1 a 30 |
O índice de relatório Gerencial “01” será pré-programado pelo software básico como “Gerencial Geral” e utilizado para emissão do relatório dos parâmetros de configuração na saída de Intervenção.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Número de Série do ECF | A | 1 | 20 | Número de fabricação |
Exemplo do Comando:
12 5
Emissão do Relatório Gerencial de índice 5
Abertura de Estorno de CCD
Inicia o comprovante de estorno de CCD.
Comando: 13 (0x0D)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
CNPJ | A | 0 | 20 |
|
Nome | A | 0 | 30 |
|
Endereço | A | 0 | 79 |
|
O estorno de CCD poderá ser emitido desde que não tenha havido após o CCD, emissão de outro documento que não seja CCD.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Número de Série do ECF | A | 1 | 20 | Número de fabricação |
Seqüência do pagamento | N | 1 | 2 |
|
Número da Parcela | N | 1 | 2 |
|
Exemplo do Comando:
13 123|123.123.123/0001-01|Maria da Silva |Rua do Ouvidor, 128|
Emissão de Segunda Via de CCD
Emite a 2 a via do Comprovante de Crédito ou Débito ou Estorno de Comprovante de Crédito ou Débito.
Comando: 14 (0x0E)
Modo: Operação Normal.
Parâmetros: Nenhum
A segunda via de CCD só poderá ser emitidos imediatamente após a impressão do CCD.
Exemplo do comando:
14
Re-impressão de CCD
Reimprime o Comprovante de Crédito ou Débito ou Estorno de Comprovante de Crédito ou Débito.
Comando: 15 (0x0F)
Modo: Operação Normal.
Parâmetros: Nenhum
A re-impressão de CCD só poderá ser emitida imediatamente após a impressão do CCD.
Exemplo do comando:
15
Abertura de Comprovante Não Fiscal
Inicia a emissão de um Comprovante Não Fiscal.
Comando: 16 (0x10)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
CNPJ/CPF | A | 0 | 20 |
|
Nome | A | 0 | 30 |
|
Endereço | A | 0 | 79 |
|
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Número de Série do ECF | A | 1 | 20 | Número de fabricação |
Exemplo do Comando:
16 123.123.123/001-01|Maria da Silva|Rua do Ouvidor, 128|
R egistro de Item em Comprovante Não Fisca L
Registra o item de Comprovante Não Fiscal.
Comando: 17 (0x11)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Índice do Item Não fiscal cadastrado | N | 1 | 2 | 03 a 30 |
Valor | N | 1 | 13 |
|
O índice 01 será pré-programado pelo Software Básico como “Fundo de Troco”, o índice 02 como “Sangria”. Estes índices só poderão ser utilizados com o comando 23- Operação de Fundo de Troco/Sangria.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Max | Conteúdo |
Número do item | N | 1 | 13 |
|
Subtotal | N | 1 | 13 |
|
Exemplo do Comando:
17 3|1000 E ncerramento de Comprovante Não Fiscal
Finaliza a emissão de um comprovante Não Fiscal.
Comando: 18 (0x12)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Aciona Guilhotina | N | 1 | 1 | 0 = Não aciona Guilhotina 1 = Aciona Guilhotina |
Mensagem Promocional | H | 0 | * |
|
* Limitado ao buffer de envio de comando e/ou 8 linhas de impressas
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 16 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Seqüência do pagamento* | N | 1 | 2 |
|
Indicador do meio de pagamento* | N | 1 | 2 |
|
Valor* | N | 1 | 13 |
|
Número de Parcelas* | N | 1 | 2 |
|
*Até 20 ocorrências dentro do buffer de resposta, uma para cada pagamento que admita CCD.
Exemplo do Comando:
18 1|Mensagem Promocional|
Estorno de Meio de Pagamento
Efetua a troca de um meio de pagamento utilizado por outro.
Comando: 19 (0x13)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Índice do meio de pagamento a ser estornado | N | 1 | 2 |
|
Índice do meio de pagamento a ser somado | N | 1 | 2 |
|
Valor | N | 1 | 13 |
|
Mensagem | H | 0 | * |
|
* Limitado ao buffer de comando e/ou a 8 linhas impressas.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Número de Série do ECF | A | 1 | 20 | Número de Fabricação |
Seqüência do pagamento* | N | 1 | 2 |
|
Indicador do meio de pagamento* | N | 1 | 2 |
|
Valor* | N | 1 | 13 |
|
Número de Parcelas* | N | 1 | 2 |
|
* Até 20 ocorrências dentro do buffer de resposta, uma para cada pagamento que admita CCD.
Exemplo do Comando:
19 1|2|1000|Mensagem |
Estorno do meio de pagamento índice um, soma no meio de pagamento índice 2, no valor de R$10,00
Leitura X
Realiza a impressão do relatório de Leitura X.
Comando: 20 (0x14)
Modo: Operação Normal/Intervenção Técnica.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Mídia | N | 1 | 1 | 0 – Imprime no ECF 1- Envia txt pela serial |
No envio do TXT pela porta serial o valor do COO deverá estar em branco.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
Texto da leitura X (*) | H | 1 | * |
|
(*) No caso do parâmetro de mídia ser igual a “0“ o BRS será vazio.
Exemplo do Comando:
20 0|
Redução Z
Emite a Redução Z permitindo o ajuste do relógio interno do ECF em mais ou menos 5 minutos.
Comando: 21 (0x15)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Data | N | 1 | 8 |
|
Hora | N | 1 | 6 |
|
O ajuste será de no máximo cinco minutos a maior ou a menor em relação ao horário da impressora, quando possível. Se os parâmetros enviados forem Nulos a Redução Z será feita sem ajuste de horário.
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
Data do Movimento | N | 8 | 8 | ddmmaaaa |
Exemplo do Comando:
21 22122006|1040|
Leitura da MF por Data ou CRZ
Realiza a Impressão do relatório de Leitura da Memória Fiscal por Data ou por Redução Z.
Comando: 22 (0x16)
Modo: Operação Fiscal/Intervenção Técnica.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Mídia | N | 1 | 1 | 0 – Imprime no ECF 1 – Gera txt pela serial |
Tipo | N | 1 | 1 | 1 – Analítico 2 - Simplificado |
Modo | N | 1 | 1 | 1 – Data 2 - CRZ |
Referencia inicial (Data ou CRZ) | N | 1 | 8 |
|
Referencia final (Data ou CRZ) | N | 1 | 8 |
|
No envio do TXT pela serial será enviado valor do COO deverá estar em branco
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo | |
Texto da leitura da MF (*) | H | 1 | * |
|
|
(*) No caso do parâmetro de mídia ser igual a “0“ o BRS será vazio.
Exemplo do Comando:
22 0|1|2|20|32
Emissão da LMF analítica por CRZ, CRZi = 20, CRZf = 32
Sangria/Fundo de Troco
Realiza a emissão do Cupom de Sangria ou de Fundo de Troco.
Comando: 23 (0x17)
Modo: Operação Normal.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Tipo | N | 1 | 1 | 0 – Sangria 1 – Fundo de Troco |
Valor | N | 1 | 13 |
|
Mensagem Suplementar | H | 0 | * |
|
Retorno:
BRS – Buffer de Resposta | Formato | Min | Máx | Conteúdo |
COO | N | 1 | 6 |
|
Data/Hora atual | D | 15 | 15 |
|
Valor da venda Bruta | N | 1 | 14 |
|
Número de Série do ECF | A | 1 | 20 | Número de Fabricação |
Exemplo do comando:
23 0|10000| Mensagem suplementar |
(Sangria de 100,00)
Mensagem Complementar – Identificação do Aplicativo
Cadastra até duas linhas de comentário que serão impressas no rodapé dos documentos emitidos.
Comando: 24 (0x18)
Modo: Operação Fiscal/MIT.
Parâmetros:
Descritivo | Formato | Min | Máx | Conteúdo |
Texto | A | 1 |