Arquivos da categoria: NFe

Controle Financeiro e de Estoque

O sistema Focus NFe agora conta com duas novas funcionalidades que você pode solicitar para sua empresa: controle financeiro e controle de estoque.

Controle de estoque

É possível atribuir uma quantidade em estoque para os produtos cadastrados, de forma que aconteça a baixa de estoque automática através da emissão de uma NFe de saída.

Entrando no menu em Operações -> Entrada/Saída manual onde você pode incluir (ou remover) uma quantidade dos produtos já cadastrados.

Entrada manual

O relatório Balanço de Estoque mostra a posição em estoque atual  de todos os produtos. Esta informação pode ser consultada também no cadastro de produtos,  assim como o histórico de todas as operações de movimentação em estoque.

Movimentações em estoque

Controle Financeiro

Outra funcionalidade disponível agora é o controle de lançamentos de contas a pagar e a receber. Cada lançamento pode ter uma ou mais parcelas. Por exemplo, uma nota fiscal pode ter seu pagamento dividido em 3 duplicatas, esta informação consta na aba “Cobrança” da emissão da NFe

Duplicatas

Os lançamentos de contas a receber são feitos automaticamente quando você define as duplicatas de cobrança na NFe. Note que você pode parcelar os recebimentos como quiser. Depois de criado você pode visualizar os lançamentos mais importantes no menu Financeiro -> Lançamentos onde você também pode criar manualmente lançamentos de contas a pagar e a receber.

Lançamentos

Além disso, é possível emitir boletos de cobrança para o seu cliente apenas com um clique a partir dos lançamentos gerados pela sua NFe. Consulte as opções de bancos e carteiras já disponíveis. Implementamos o banco/carteira que sua empresa precisa em um prazo de 30 dias.

Você pode opcionalmente classificar suas despesas/receitas por plano de contas. Feito isso, todas as informações serão consolidadas no relatório DRE Gerencial, onde você pode apurar o lucro de sua empresa.

DRE

Por R$ 30,00 adicionais na sua mensalidade você pode adquirir estas duas funcionalidades para a sua empresa . Contrate através do nosso canal de vendas pelo e-mail contato@acras.com.br.

 

API para envio de NFe usando o formato de arquivo do SEFAZ-SP

Além de usar o nosso formato YAML para autorização de Nota Fiscal eletrônica você pode agora optar pelo formato reconhecido pelo emissor do SEFAZ-SP.

As URLs de comunicação continuam as mesmas, basta alterar o conteúdo enviado que o sistema reconhece automaticamente o formato enviado. Consulte a API para envio de NFe para consultar as URLs disponíveis.

O arquivo TXT segue uma estrutura hierárquica de grupos, que são determinados por letras (conforme o Manual de Integração do Contribuinte) e a delimitação dos campos de cada grupo pelo caractere “|” , denominado coloquialmente como pipe. Para entender a organização dos arquivos e saber como preencher os dados, você deverá consultar dois manuais:

  1. Manual do Layout TXT do SEFAZ-SP
  2. Manual de Integração do contribuinte

A descrição dos campos se encontra na página 7 do manual do layout TXT, e você deve comparar com a descrição do manual de integração do contribuinte, onde os campos são detalhados no Anexo I, a partir da página 148, do manual do contribuinte. Por exemplo, os dados do emitente são descritos na seguinte linha no layout TXT:

C|XNome|XFant|IE|IEST|IM|CNAE|CRT|

No manual do contribuinte você encontra a seção com a mesma letra “C – Identificação do Emitente da Nota Fiscal eletrônica” na página 153 onde você encontra a descrição de cada campo (xNome, xFant, IE, IEST, IM, CNAE e CRT). Faça o mesmo com o restante dos campos (veja que você pode omitir vários campos) e você poderá submeter o arquivo para autorização.

No momento a API está preparada para aceitar uma NFe por arquivo. Para submeter várias NFes basta realizar uma chamada na API para cada arquivo.

API para envio de NFSe: exemplo em PHP

Para poder emitir uma NFSe usando a linguagem PHP você precisa de apenas duas extensões PECL, que são:

  1. Parser do formato YAML: http://www.php.net/manual/en/book.yaml.php. Você irá precisar de apenas duas funções:
    yaml_emit($arr) – Devolve $arr convertido em uma string no formato YAML
    yaml_parse($str) – Devolve um array PHP a partir de uma string $str que está no formato YAML
  2. Biblioteca para envio de requisições HTTP:  http://www.php.net/manual/en/book.http.php

Abaixo segue um exemplo de envio e consulta de NFSe usando estas bibliotecas. O formato do arquivo é único para todas as cidades. Algumas cidades podem exigir mais ou menos campos (consulte documentação). No exemplo abaixo consideramos os campos necessários para a cidade de São Paulo.

Para executar o exemplo, salve em um arquivo “exemplo.php” no seu computador, instale as bibliotecas acima e altere o token de acesso no programa (variável $TOKEN). Em seguida, execute:

 
php exemplo.php
<?php

# Você deve definir isso globalmente para sua aplicação
$SERVER = "http://producao.acrasnfe.acras.com.br";
$TOKEN = "token_recebido_do_suporte";

$nfse = array(
  "data_emissao" => '2013-05-31,',
  "prestador" => array(
    "cnpj" => '06901848000133',
    "inscricao_municipal" => '080204613599',
    "codigo_municipio" => '4106902'
  ),
  "servico" => array(
    "aliquota" => '0.05',
    "base_calculo" => '1.0',
    "discriminacao" => "Servico de hospedagem de sites",
    "iss_retido" => "2",
    "item_lista_servico" => "06939",
    "valor_iss" => '0.5',
    "valor_liquido" => '1.0',
    "valor_servicos" => '1.0'
  ),
  "tomador" => array(
    "cpf" => '03055054912',
    "endereco" => array(
      "bairro" => 'Centro',
      "cep" => "80000000",
      "codigo_municipio" => "4106902",
      "logradouro" => "Rua Emiliano Perneta",
      "numero" => "845",
      "uf" => 'PR',
    ),
    "razao_social" => "Egon Hilgenstieler"
  )
);

print("=> Teste de envio\n");

$r = new HttpRequest($SERVER."/nfse", HttpRequest::METH_POST);
$r->addQueryData(array('token' => $TOKEN));
# A referência é uma string que identifica univocamente uma NFSe e
# será usada para consultas posteriores
$r->addQueryData(array('ref' => '1234'));
$yaml = yaml_emit($nfse);
$r->addRawPostData($yaml);

try {
    $r->send();
    $status = $r->getResponseCode();
    $body = $r->getResponseBody();
    print("Status = $status\n");
    print("Body = $body\n");
} catch (HttpException $ex) {
    echo $ex;
}

print("=> Teste de consulta\n");

# O processo de envio de NFSe é assíncrono, e pode ser necessário
# aguardar até que a nota seja processada
sleep(10);

$r = new HttpRequest($SERVER."/nfse/1234", HttpRequest::METH_GET);
$r->addQueryData(array('token' => $TOKEN));

try {
    $r->send();
    $status = $r->getResponseCode();
    $body = $r->getResponseBody();
    print("Status = $status\n");
    print("Body = $body\n");
    $result = yaml_parse($body);
    var_dump($result);

} catch (HttpException $ex) {
    echo $ex;
}

?>

API para envio de CCe – Carta de Correção eletrônica

Para integrar as operações de emissão e consulta de uma CCe (Carta de Correção eletrônica) de uma NFe à sua aplicação você pode utilizar nossa API web. Aqui assumimos que você emitiu a NFe usando nossa API de envio de NFe.

Emissão de CCe

Utilize o seguinte serviço:

POST /nfe2/emitir_cce?token=TOKEN&ref=REFERENCIA

Onde TOKEN e REFERENCIA são o token de acesso e a referência utilizada para criar a NFe. Este serviço aceita os seguintes parâmetros adicionais:

  • correcao – Contem a correção a ser aplicada à NFe (mínimo de 15 e máximo de 1000 caracteres). É o único campo obrigatório.
  • data_evento – Data no formato ISO (exemplo ‘2012-03-30T14:35:00-03:00’) com a data da correção. Caso este campo não seja informado será usado a data atual
  • numero_sequencial_evento – Uma NFe pode conter 20 cartas de correções (sendo que a última substitui todas as outras) sendo que cada uma possui um número sequencial. Este campo força a utilização do respectivo número. Caso este campo não seja informado, o sistema irá calcular automaticamente a próxima sequência

O serviço é assíncrono assim como a emissão de NFe, ou seja, a solicitação será enfileirada e sua aplicação deverá posteriormente consultar o status da CCe.

Consulta de CCe

Utilize o seguinte serviço:

GET /nfe2/consultar_cce?token=TOKEN&ref=REFERENCIA

Onde TOKEN e REFERENCIA são o token de acesso e a referência utilizada para criar a NFe. Este serviço aceita os seguintes parâmetros adicionais:

  • numero_sequencial_evento – Este campo consulta apenas a CCe indicada pelo seu número sequencial. Caso este campo não seja informado, o sistema irá informar a situação da última CCe desta NFe

O sistema irá devolver a situação da CCe em formato YAML, abaixo um exemplo de uma CCe emitida em duplicidade:

---
status: erro_autorizacao
chave_nfe: NFe41131006059934000185550010000027751019556666
status_sefaz: "573"
numero_sequencial_evento: 1
mensagem_sefaz: Duplicidade de Evento. ID1101104113100605993400018555001000002775101955776666

Abaixo um exemplo de uma CCe autorizada corretamente:

---
status: autorizado
chave_nfe: NFe41131006059934000185550010000027751019556666
numero_sequencial_evento: 1
caminho_xml: /arquivos/99999999000199/201310/XMLs/41131006059934000185550010000027751019556666-cce-01.xml
caminho_pdf: /notas_fiscais/NFe41131006059934000185550010000027751019556666/cartas_correcao/1.pdf

 

 

Parceria ACINFAZ – Acras Sistemas

No último dia 29 de Agosto a ACINFAZ (Associação Comercial de Fazenda Rio Grande) promoveu um encontro com contadores da região de Fazenda Rio Grande. Naquela ocasião foi anunciada a parceria traçada entre a ACINFAZ e a Acras.

Estavam presentes contadores da região, bem como alunos de Contabilidade.


Mesa de reunião ACINFAZ


Mesa de reunião composta pelo Sr Eurides Antonio Rocha (Esq. Representante da SESCAP), Sra. Lucélia Lecheta (Centro, Presidente do CRC-PR) e Sr. Eudes Braz Moreira (dir. Vice-presidente de finanças da ACINFAZ)

A ACINFAZ obteve exclusividade na comercialização dos produtos da Acras Sistemas em sua área de atuação.

O Sr. Ricardo Acras, diretor da Acras Sistemas, apresentou aos presentes as principais vantagens dos produtos da Acras, Focus NFe (www.focusnfe.com.br) e Focus Lojas (www.focuslojas.com.br) tanto do ponto de vista do próprio contador como do empresário.

Ricardo Acras

Ricardo Acras, diretor da Acras Sistemas.

 

API to send NFe using Focus NFe service

If you understand portuguese, look here. This post is intended for non-English speakers, it shows how to integrate your software with Focus NFe. If you don’t know what is NFe take a look here. To test our API one can use the cURL tool, not needing to write a single line of code, that’s how we will show how our API works. Authentication We will use an access token to give access to test and production environments. For each environment will be provided a different token. Reference (id) You will have to provide an unique id for Each NFe that will be issued. This reference can be any string, most commonly it is used the primary key in the application’s. It is not recommended that you use the NFe numeration, for it is our system that will assign the numbers for the NFes. Sending a NFe The following URLs are used to send NFes to our software. The first one is used to send NFes to the test (homologação) environment and the second is to send NFes to the production (produção) environment: POST http://homologacao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCE POST http://producao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCE TOKEN and REFERENCE must be changed by yout access token (provided by our support team) and the internal reference of the NFe in your software. The content of the POST must be the communication file, wich is a YAML file built under this specification (portuguese only): http://www.focusnfe.com.br/nfe/lang/NotaFiscalXML.html. The following example shows a communication file:

---
natureza_operacao: Remessa
forma_pagamento: 0
data_emissao: 2013-04-15
data_entrada_saida: 2013-04-15
tipo_documento: 1
finalidade_emissao: 1
cnpj_emitente: SEU_CNPJ
nome_emitente: Sua Razão Social Ltda
nome_fantasia_emitente: Fantasia do Emitente
logradouro_emitente: Rua Quinze de Abril
numero_emitente: 999
bairro_emitente: Jd Paulistano
municipio_emitente: São Paulo
uf_emitente: SP
cep_emitente: 01454-600
inscricao_estadual_emitente: SUA_INSCRICAO_ESTADUAL
nome_destinatario: NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL
cpf_destinatario: 03055054911
inscricao_estadual_destinatario:
telefone_destinatario: 1196185555
logradouro_destinatario: Rua São Januário
numero_destinatario: 99
bairro_destinatario: Crespo
municipio_destinatario: Manaus
uf_destinatario: AM
pais_destinatario: Brasil
cep_destinatario: 69073178
icms_base_calculo: 0
icms_valor_total: 0
icms_base_calculo_st: 0
icms_valor_total_st: 0
valor_frete: 0.0000
valor_seguro: 0
valor_total: 47.23
valor_produtos: 47.23
valor_ipi: 0
modalidade_frete: 0
items:
- numero_item: 1
  codigo_produto: 1232
  descricao: Cartões de Visita
  cfop: 5923
  unidade_comercial: un
  quantidade_comercial: 100
  valor_unitario_comercial: 0.4723
  valor_unitario_tributavel: 0.4723
  unidade_tributavel: un
  codigo_ncm: 49111090
  quantidade_tributavel: 100
  valor_bruto: 47.23
  icms_situacao_tributaria: 41
  icms_origem: 0
  pis_situacao_tributaria: 07
  cofins_situacao_tributaria: 07

In test environment it is mandatory to use the following name to the adressee (destinatario) of the NFe: NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO – SEM VALOR FISCAL. Given your communication file name is remessa.yml, the curl command will be:

curl -T remessa.yml 'http://homologacao.acrasnfe.acras.com.br/fe2/autorizar?token=TOKEN&ref=1'

After sending the NFe, Focus NFe will process the information asynchronously, meaning you must come back and query the result after a while. Querying NFe The URLs to query the status of a NFe are:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCE
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCE

Possible Results

mensagem_sefaz: "Rejeição: Data de Emissão muito atrasada"
status_sefaz: "228"
status: erro_autorizacao

Meaning the NFe was not authorized with the resulting message (only in portuguese)

status: processando_autorizacao

Meaning the NFe is still being processed.

serie: "1"
chave_nfe: NFe35130413555994000154550010000000021150496225
numero: "2"
mensagem_sefaz: Autorizado o uso da NF-e
status_sefaz: "100"
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml
caminho_danfe: /arquivos_development/SEU_CNPJ/201304/DANFEs/35130413555994000154550010000000021150496225.pdf
status: autorizado

caminho_danfe is the relative path to the DANFe PDF file. caminho_xml is the relative path to the XML file Cancellation After authorized, the NFe can be cancelled within 24 ours. The service URLs to do that are. POST http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCE

POST http://producao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCE

Other than the main parameters, the only one to be filled is “justificativa” wich is the reason that the NFe is being cancelled. curl -F ‘justificativa=CNPJ do destinatario incorreto’ ‘http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=2’ Then you can query the NFe again. If the cancellation is succeeded you will get this status file:

chave_nfe: NFe35130413555994000154550010000000021150496225
status_sefaz: "135"
status: cancelado
caminho_xml_cancelamento: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-can.xml
mensagem_sefaz: Evento registrado e vinculado a NF-e
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml

Software para emissão de Nota Fiscal Eletrônica

Se a receita do estado de São Paulo criou um software gratuito para emissão de NFe, por que utilizar um sistema pago?

A pergunta parece não ter resposta, pois quem em sã consciência iria escolher pagar por algo que pode ter de graça?

Ocorre que o sistema gratuito de São Paulo pode ser muito mais caro do que um sistema pago. Veja por quê.

Cadastros: Com o Focus NFe seus cadastros são mantidos de forma segura. Clientes, fornecedores e produtos podem ser cadastrados e mantidos em um sistema central que pode ser acessado de qualquer lugar. Nada precisa ser repetido quando emitir uma nota fiscal.

Calculo de impostos automatizado: Este talvez seja o maior ponto. A NFe envolve um sem número de informações fiscais que devem ser enviadas para a receita. Quando utiliza o sistema gratuito o contribuinte é obrigado a informar cada uma destas informações manualmente. Com o Focus NFe todo o cálculo de impostos é totalmente automático.

Facilidade de emissão: A facilidade de se emitir uma NFe com o Focus NFe é incontestável, basta assistir a este vídeo para conferir: http://focusnfe.com.br/nfe/video_aula_inicial/video_aula_inicial.html

Suporte especializado: O Focus NFe possui um suporte técnico especializado e sempre disponível ao passo que com o sistema gratuito o contribuinte não tem a quem recorrer caso ocorra algum problema no uso do sistema.

Guarda dos arquivos: Nós fazemos a guarda legal de todo documento fiscal emitido pelos nossos clientes por tempo indeterminado. Os arquivos podem ser recuperados a qualquer momento pelo contribuinte ou seu contador.

Sistema financeiro integrado: A partir de 65 notas emitidas por mês o sistema é acompanhado por um sistema financeiro completo integrado com Contas a Pagar e Receber, controle de contas bancárias, emissão de boleto bancário e muito mais. (Para clientes que emitem menos de 65 notas mensais o sistema pode ser ativado por R$30,00 mensais).

Com tantas facilidades, muito tempo é economizado no trato dos documentos fiscais da empresa. Este tempo custa dinheiro, sem dúvida muito mais dinheiro do que o investido em um sistema de qualidade. Saiba quanto custa para ter um sistema de qualidade, é bem menos do que você imagine: Preços.

API v3 para emissão de Nota Fiscal de Serviço Eletrônica (NFSe)

Infelizmente as prefeituras não adotam um padrão único para emissão de Notas Fiscais de Serviço (NFSe), apesar de existir uma recomendação da ABRASF, cada cidade é livre para decidir o padrão que achar melhor, tornando difícil o trabalho de quem precisa fazer a integração de seu cidade com múltiplas cidades. Para contornar este problema, estamos desenvolvendo a versão 3 de nossa API para emissão de NFSe, que tentará ser o mais homogênea possível, atendendo ao maior número de cidades com um mínimo de mudanças. Abaixo descrevemos o formato de comunicação desta API. A API irá utilizar o padrão REST de comunicação via HTTP, as 3 chamadas possíveis da API são exemplificadas abaixo:

  • POST /nfse?ref=REFERENCIA&token=TOKEN – Submete uma nova NFSe para autorização
  • GET /nfse/REFERENCIA?token=TOKEN – Recupera informações sobre a NFSe
  • DELETE /nfse/REFERENCIA?token=TOKEN  – Cancela uma NFSe

Onde REFERENCIA é a referência do objeto do sistema original (por exemplo, o identificador do banco de dados) e TOKEN é o token de acesso fornecido na contratação do sistema. O token é utilizado para identificar a empresa prestadora do serviço.

Submissão de NFSe

A submissão de uma NFSe irá conter no seu corpo um arquivo YAML descrevendo os dados da nota. Todos os campos são descritos abaixo e as diferenças entre as cidades comentadas. Os campos denotados com (*) são obrigatórios.

  • data_emissao (*): Data/hora de emissão da NFSe. Alguns municípios como São Paulo não utilizam hora e ela será descartada caso seja fornecida.
  • status: Status da NFS-e, informar 1 – Normal ou 2 – Cancelado. (Valor padrão: 1).
  • natureza_operacao: Natureza da operação. Informar um dos códigos abaixo. Campo ignorado para o município de São Paulo. 1 – Tributação no município 2 – Tributação fora do município 3 – Isenção 4 – Imune 5 – Exigibilidade suspensa por decisão judicial 6 – Exigibilidade suspensa por procedimento administrativo (Valor padrão: 1)
  • regime_especial_tributacao: Informar o código de identificação do regime especial de tributação conforme abaixo. Campo ignorado para o município de São Paulo. 1 – Microempresa municipal 2 – Estimativa 3 – Sociedade de profissionais 4 – Cooperativa 5 – MEI – Simples Nacional 6 – ME EPP – Simples Nacional
  • optante_simples_nacional(*): Informar verdadeiro ou falso se a empresa for optante pelo Simples Nacional. Campo ignorado pelo município de São Paulo.
  • incentivador_cultural: Informe verdadeiro ou falso. Valor padrão: falso. Campo ignorado para o município de São Paulo.
  • tributacao_rps: Usado apenas pelo município de São Paulo. Informe o tipo de tributação: T – Operação normal (tributação conforme documento emitido); I – Operação isenta ou não tributável, executadas no Município de São Paulo; F – Operação isenta ou não tributável pelo Município de São Paulo, executada em outro Município; J – ISS Suspenso por Decisão Judicial (neste caso, informar no campo Discriminação dos Serviços, o número do processo judicial na 1a. instância). (Valor padrão “T”)
  • servico:
    • valor_servicos(*): Valor dos serviços.
    • valor_deducoes: Valor das deduções.
    • valor_pis: Valor do PIS.
    • valor_cofins: Valor do COFINS.
    • valor_inss: Valor do INSS.
    • valor_ir: Valor do IS.
    • valor_csll: Valor do CSLL
    • iss_retido(*): Informar verdadeiro ou falso se o ISS foi retido.
    • valor_iss: Valor do ISS. Campo ignorado pelo município de São Paulo.
    • valor_iss_retido: Valor do ISS Retido. Campo ignorado pelo município de São Paulo.
    • outras_retencoes: Valor de outras retenções.  Campo ignorado pelo município de São Paulo.
    • base_calculo: Base de cálculo do ISS, valor padrão igual ao valor_servicos. Campo ignorado pelo município de São Paulo.
    • aliquota: Aliquota do ISS.
    • desconto_incondicionado: Valor do desconto incondicionado. Campo ignorado pelo município de São Paulo.
    • desconto_condicionado: Valor do desconto incondicionado. Campo ignorado pelo município de São Paulo.
    • item_lista_servico(*): informar o código da lista de serviços, de acordo com a Lei Complementar 116/2003. Utilize outra tabela para o município de São Paulo.
    • codigo_cnae: Informar o código CNAE. Campo ignorado pelo município de São Paulo.
    • codigo_tributario_municipio: Informar o código tributário de acordo com a tabela de cada município (não há um padrão). Campo ignorado pelo município de São Paulo.
    • discriminacao(*): Discriminação dos serviços.
    • codigo_municipio(*): Informar o código IBGE do município de prestação do serviço.
  • prestador:
    • cnpj(*): CNPJ do prestador de serviços.
    • codigo_municipio(*): Código IBGE do município do prestador (consulte lista aqui)
    • inscricao_municipal: Inscrição municipal do prestador de serviços.
  • tomador:
    • cpf(*): CPF do tomador, se aplicável.
    • cnpj(*): CNPJ do tomador, se aplicável.
    • inscricao_municipal: Inscrição municipal do tomador
    • razao_social: Razão social ou nome do tomador
    • endereco:
      • logradouro: Nome do logradouro.
      • tipo_logradouro: Tipo do logradouro. Usado apenas para o município de São Paulo. Valor padrão: os 3 primeiros caracteres do logradouro.
      • numero: Número do endereço.
      • complemento: Complemento do endereço.
      • bairro: Bairro
      • codigo_municipio: código IBGE do município.
      • uf: UF do endereço.
      • cep: CEP do endereço.
    • telefone: Telefone do tomador. Campo ignorado para o município de São Paulo.
    • email: Email do tomador.
  • intermediario (esta seção é ignorada pelo município de São Paulo)
    • razao_social: Razão social do intermediário do serviço.
    • cpf: CPF  do intermediário do serviço, se aplicável.
    • cnpj: CNPJ  do intermediário do serviço, se aplicável.
    • inscricao_municipal: Inscrição municipal  do intermediário do serviço, se aplicável.
  • codigo_obra: Código da obra quando construção civil. Este campo é ignorado pelo município de São Paulo.
  • art: Código ART quando construção civil. Este campo é ignorado pelo município de São Paulo.

Exemplo de um arquivo YAML:

data_emissao: 2013-05-31T12:00:00-03:00
incentivador_cultural: false
natureza_operacao: "1"
optante_simples_nacional: false
prestador: 
 cnpj: 06901848000133
 inscricao_municipal: 080204613599
 codigo_municipio: 4106902
servico: 
 aliquota: 0.05
 base_calculo: 200.0
 discriminacao: "Servico de hospedagem de sites"
 iss_retido: "2"
 item_lista_servico: "801"
 valor_iss: 10.0
 valor_liquido: 200.0
 valor_servicos: 200.0
status: "1"
tomador: 
 cpf: 03055054912
 endereco: 
   bairro: Centro
   cep: "80000000"
   codigo_municipio: "4106902"
   logradouro: "Rua Emiliano Perneta"
   numero: "845"
   uf: PR
 razao_social: "Egon Hilgenstieler"

Consulte o suporte técnico para possíveis exceções no seu município.

Consulta

Após a emissão, a consulta da situação do processamento poderá ser feita em um segundo momento para obter as informações da NFSe gerada ou dos erros de processamento. O retorno é também em formato YAML. Parâmetros:

  • token: O token secreto de sua empresa
  • ref: Número da referência

Exemplo de chamada e retorno:

GET /nfse/<REFERECIA>?token=<seu_token>

uri: https://nfe.prefeitura.sp.gov.br/contribuinte/notaprint.aspx?inscricao=112312&nf=14&verificacao=P2UJ4QGT
codigo_verificacao: P2UJ4QGT
data_emissao: 2012-08-12 03:00:00 Z
numero: "14"
status: autorizado

Retorno: HTTP status 200 (Ok) ou HTTP status 404 (Not Found) se não encontrada NFSe associada a referência Campos de retorno:

  • uri: Endereço disponibilizado pela prefeitura para visualização da NFSe
  • codigo_verificacao: Código de verificação da NFSe
  • data_emissao: Data de emissão
  • numero: Número da NFSe
  • status: “autorizado” se a NFSe foi emitida com sucesso ou “erro_autorizacao” caso contrário
  • erros: Array de mensagens de erro caso a nota fiscal não tenha sido emitida com sucesso.

NFe – Brazilian Electronic Invoice System

Lately we have seen lots of foreign developers facing the challenge of developing NFe solutions for brazilian companies. As we now have some customers in this situation we will release content in english to make it easy for these developers to accomplish this challenge.

 

What is the NFe (Nota Fiscal Eletrônica or Electronic Invoice)

Until 2008 invoices in Brazil were issued in paper. Any company could get the authorization to print a certain number of unfilled invoices so they could fill it and send to their customers.
Since 2008 Brazilian government has adopted an electornic invoice system, making it mandatory to any brazilian company that sells products.
The electronic version of invoices are issued one by one and pre-filled by the company. Meaning that each and every sale (or importing) transaction is informed to the government that authorizes one by one. Obviously this is made in an automated way, called NFe.
The process of issuing a NFe

First of all one should fill a XML file containing, information about the issuer, the receiver, the products, the taxes (wich are very, very complicated in Brazil), the way it will be transported, how it will be paid and so on.

The second step will be to digitally sign this XML document using a digital certificate compliant with ICP-Brasil standards.

Third step is to communicate with the government servers, using SOAP technology. Government receives the transaction and “tells” you the estimated time it will have an answer (rarely being more than 5 seconds).

After that time we query the server to see if it have an answer. If the invoice is authorized then we are able to generate the DANFe (short for Auxiliar Document of the NFe). By law we have to inform the receiver via email that the NFe is successfully issued.

By law the issuer must keep the XML file for at least 5 years.

 

Focus NFe service

As it turns out, the XML file is very complicated, it has many fields and rules according to the type of the company and the kind of taxes it pays. Furthermore the communication with government computers may be tricky as each state has it’s own servers and there are redundancy servers with little communication specificities.

The Focus NFe service has a simple text file for communication and a very simple return file as well. All the details and communication with each server in the country is handled by our service. The generation of DANFe is handled by Focus NFe. The service also sends the NFe to the receiver and keeps the XML file safe for as long as the service contract is active.

Brazilian fiscal law is complicated and is constantly changing. We keep our service compliant to the law at all times, and every time it is possible, we do not change the communication files layout. (It is important to say that the API do not calculate taxes, so changes in taxes must be handled by the programmer).

API para envio de NFe

Para integrar as operações de autorização, consulta e cancelamento de NFe à sua aplicação você pode utilizar nossa API web. Caso você esteja desenvolvendo uma aplicação desktop em ambiente Windows, o comunicador por arquivo pode ser uma solução mais natural. Em outros casos a API descrita neste post poderá ser utilizada.

Para testar todas as operações envolvendo a NFe, não é necessário implementar nenhuma linha de código, todos os testes podem ser efetuados com o programa cURL que pode ser baixado em plataformas Linux, Windows ou MacOS. O comando cURL serve para efetuar chamadas HTTP GET ou POST, necessários para esta API. Neste post demonstraremos o uso da API com este comando.

Autenticação

A autenticação para os comandos da API será feita através de um token, que será fornecido pelo nosso suporte. Esse token deverá ser enviado em todas as solicitações da API. Será utilizado um token diferente para o ambiente de homologação e de produção.

Referência

Para identificar uma NFe no sistema, deverá ser fornecida uma referência única que irá representar a NFe no seu sistema. Esta referência pode ser qualquer cadeia de caracteres, como por exemplo o identificador da chave primária de seu banco de dados. Não recomendamos que você utilize a numeração da NFe, pois isto nosso sistema irá controlar automaticamente.

Operação Envio de NFe

Para enviar uma NFe, você deverá utilizar as seguintes URLs, para os ambientes de homologação e produção, respectivamente:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCIA

POST http://producao.acrasnfe.acras.com.br/nfe2/autorizar?token=TOKEN&ref=REFERENCIA

Onde REFERENCIA e TOKEN devem ser substituídos pelo identificador único da NFe e pelo seu token de acesso. Como conteúdo do POST deve ser enviado um texto contendo uma representação da NFe a ser autorizada no formato YAML que tem suporte a diversas linguagens de programação.

Consulte a documentação do arquivo de envio de NFe para referência dos campos da NFe. Talvez seja necessário um auxílio do departamento contábil de sua empresa para que você determine a natureza de operação, CFOP e cálculos de impostos de acordo com as operações usuais de sua empresa. Se o seu sistema já estava integrado com o emissor de NFe do SEFAZ de SP, você poderá aproveitar e usar o mesmo formato.

Abaixo mostramos um exemplo de arquivo, em uma operação remessa:

---
natureza_operacao: Remessa
forma_pagamento: 0
data_emissao: 2013-04-15
data_entrada_saida: 2013-04-15
tipo_documento: 1
finalidade_emissao: 1
cnpj_emitente: SEU_CNPJ
nome_emitente: Sua Razão Social Ltda
nome_fantasia_emitente: Fantasia do Emitente
logradouro_emitente: Rua Quinze de Abril
numero_emitente: 999
bairro_emitente: Jd Paulistano
municipio_emitente: São Paulo
uf_emitente: SP
cep_emitente: 01454-600
inscricao_estadual_emitente: SUA_INSCRICAO_ESTADUAL
nome_destinatario: NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL
cpf_destinatario: 03055054911
inscricao_estadual_destinatario:
telefone_destinatario: 1196185555
logradouro_destinatario: Rua São Januário
numero_destinatario: 99
bairro_destinatario: Crespo
municipio_destinatario: Manaus
uf_destinatario: AM
pais_destinatario: Brasil
cep_destinatario: 69073178
icms_base_calculo: 0
icms_valor_total: 0
icms_base_calculo_st: 0
icms_valor_total_st: 0
valor_frete: 0.0000
valor_seguro: 0
valor_total: 47.23
valor_produtos: 47.23
valor_ipi: 0
modalidade_frete: 0
items:
- numero_item: 1
  codigo_produto: 1232
  descricao: Cartões de Visita
  cfop: 5923
  unidade_comercial: un
  quantidade_comercial: 100
  valor_unitario_comercial: 0.4723
  valor_unitario_tributavel: 0.4723
  unidade_tributavel: un
  codigo_ncm: 49111090
  quantidade_tributavel: 100
  valor_bruto: 47.23
  icms_situacao_tributaria: 41
  icms_origem: 0
  pis_situacao_tributaria: 07
  cofins_situacao_tributaria: 07

Em ambiente de homologação, o campo nome_destinatario deve ser obrigatoriamente NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO – SEM VALOR FISCAL. Caso contrário a nota será rejeitada pelo SEFAZ.

Para testar a autorização da NFe, você pode salvar o arquivo de exemplo com o nome remessa.yml e executar o seguinte comando em seu computador:

curl -T remessa.yml 'http://homologacao.acrasnfe.acras.com.br/fe2/autorizar?token=TOKEN&ref=1'

Substituindo o campo TOKEN e lembrando de incrementar a referência caso deseje fazer mais de um teste. Caso o comando seja executado com sucesso, o comando curl não irá gerar nenhuma saída.

Após o envio da NFe, ela irá ser processada de forma assíncrona, ou seja, as requisições serão aceitas imediatamente e enfileiradas para processamento. A NFe poderá ser autorizada em poucos segundos, dependendo da quantidade de requisições.

Operação de Consulta

Após o envio, você poderá consultar o status do processamento, que poderá informar algum erro de validação ou as informações referente a autorização da NFe. As URLs dos ambientes de homologação e produção são:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCIA
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=REFERENCIA

Por exemplo, se substituirmos no arquivo remessa.yml o campo “data_emissao” para o ano de 2012, podemos testar uma rejeição de NFe usando o comando abaixo, supondo que a referência tenha sido enviada anteriormente como ‘1’:

curl 'http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=1'

O resultado de uma chamada desta URL também virá no formato YAML, conforme abaixo:

---
mensagem_sefaz: "Rejeição: Data de Emissão muito atrasada"
status_sefaz: "228"
status: erro_autorizacao

Para testar uma autorização de NFe, devemos alterar o campo data_emissao e data_entrada_saida para o dia atual e em seguida enviar a NFe:

curl -T remessa.yml 'http://homologacao.acrasnfe.acras.com.br/fe2/autorizar?token=TOKEN&ref=2'

Se consultarmos o status imediatamente depois do envio:

curl 'http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=2'

Podemos obter o resultado:

---
status: processando_autorizacao

Que significa que a nota ainda não foi processada completamente. Após a autorização receberemos uma saída conforme o exemplo abaixo:

---
serie: "1"
chave_nfe: NFe35130413555994000154550010000000021150496225
numero: "2"
mensagem_sefaz: Autorizado o uso da NF-e
status_sefaz: "100"
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml
caminho_danfe: /arquivos_development/SEU_CNPJ/201304/DANFEs/35130413555994000154550010000000021150496225.pdf
status: autorizado

O caminho do XML e da DANFE são relativos a partir do endereço do servidor utilizado. No exemplo acima a DANFE poderá ser acessada no endereço:

http://homologacao.acrasnfe.acras.com.br/arquivos_development/SEU_CNPJ/201304/DANFEs/35130413555994000154550010000000021150496225.pdf

Operação de Cancelamento

A NFe poderá ser cancelada até 24 horas depois da emissão. Alguns estados permitem um prazo maior para o cancelamento, verifique os detalhes junto com o SEFAZ do seu estado. Para cancelar uma NFe, utilize os seguintes endereços de homologação e produção:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCIA
POST http://producao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=REFERENCIA

Sendo necessário informar a justificativa do cancelamento no campo “justificativa” do POST. Para testar o cancelamento da referência “2” do exemplo anterior podemos executar:

curl -F 'justificativa=CNPJ do destinatario incorreto' 'http://homologacao.acrasnfe.acras.com.br/nfe2/cancelar?token=TOKEN&ref=2'

Este comando irá colocar o cancelamento na fila de processamento, após alguns segundos você poderá consultar se o cancelamento foi efetuado corretamente com a mesma operação “Consultar”:

curl 'http://producao.acrasnfe.acras.com.br/nfe2/consultar?token=TOKEN&ref=2'

Que fornecerá um resultado como abaixo:

---
chave_nfe: NFe35130413555994000154550010000000021150496225
status_sefaz: "135"
status: cancelado
caminho_xml_cancelamento: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-can.xml
mensagem_sefaz: Evento registrado e vinculado a NF-e
caminho_xml_nota_fiscal: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000021150496225-nfe.xml

Note que após o cancelamento a DANFE deixa de existir e não poderá mais ser salva.

Operação de Envio e Consula de Carta de Correção eletrônica

Uma Carta de Correção eletrônica (CCe) pode ser utilizada para corrigir eventuais erros na NFe. As seguintes informações não podem ser corrigidas:

  1. As variáveis que determinam o valor do imposto tais como: base de cálculo, aliquota, diferença de preço, quantidade, valor da operação ou da prestação;
  2. A correção de dados cadastrais que implique mudança do remetente ou do destinatário;
  3. A data de emissão ou de saída.

Não existe prazo especificado para emissão de cartas de correção. É possível enviar até 20 correções diferentes, sendo que será válido sempre a última correção enviada. Os endereços são:

Envio:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=REFERENCIA
POST http://producao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=REFERENCIA

Sendo necessário informar a correção da NFe no campo “correcao” do POST. A correção é um texto livre, sem quebras de linha. Exemplo:

curl -F 'correcao=O CEP correto do destinatario é 80210200' 'http://homologacao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=1'

Para consultar o resultado do processamento, utilizamos outras URLs:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_cce?token=TOKEN&ref=REFERENCIA
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar_cce?token=TOKEN&ref=REFERENCIA

Exemplo:

curl 'http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_cce?token=TOKEN&ref=1'

Cujo resultado será algo como:

---
chave_nfe: NFe35130413555994000154550010000000011319749231
status: autorizado
caminho_xml: /arquivos_development/SEU_CNPJ/201304/XMLs/35130413555994000154550010000000011319749231-cce-01.xml
caminho_pdf: /notas_fiscais/NFe35130413555994000154550010000000011319749231/cartas_correcao/1.pdf
numero_sequencial_evento: 1

Operação de Envio e Consula de Inutilização de Numeração

Em uma situação normal você não precisará informar ao SEFAZ a inutilização de um número da NFe pois a API controla automaticamente a numeração das notas. Porém, se por alguma situação específica for necessário a inutilização de alguma faixa de números você poderá chamar as seguintes operações:

Envio de inutilização de faixa de numeração:

POST http://homologacao.acrasnfe.acras.com.br/nfe2/inutilizar_numeracao?token=TOKEN
POST http://producao.acrasnfe.acras.com.br/nfe2/inutilizar_numeracao?token=TOKEN

A inutilização precisa dos seguintes parâmetros obrigatórios:

  • cnpj – CNPJ da empresa emitente
  • serie –  Série da numeração da NFe que terá uma faixa de numeração inutilizada
  • numero_inicial – Número inicial a ser inutilizado
  • numero_final – Número final a ser inutilizado
  • justificativa – Justificativa da inutilização (mínimo 15 caracteres)

Exemplo:

curl -F 'justificativa=Erro no envio para o SEFAZ' -F cnpj=SEU_CNPJ -F serie=1 -F numero_inicial=231 -F numero_final=231 'http://homologacao.acrasnfe.acras.com.br/nfe2/emitir_cce?token=TOKEN&ref=1'

Para consultar o resultado do processamento, utilizamos outras URLs:

GET http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_inutilizacao_numeracao?token=TOKEN
GET http://producao.acrasnfe.acras.com.br/nfe2/consultar_inutilizacao_numeracao?token=TOKEN&ref=REFERENCIA

A consulta precisa dos mesmos parâmetros utilizados para inutilização, com exceção do campo ‘justificativa’.

Exemplo:

curl -F cnpj=SEU_CNPJ -F serie=1 -F numero_inicial=231 -F numero_final=231 'http://homologacao.acrasnfe.acras.com.br/nfe2/consultar_inutilizacao_numeracao?token=TOKEN'

Cujo resultado será algo como:

--- 
serie: "1"
numero_inicial: "231"
status: autorizado
caminho_xml: /arquivos_development/SEU_CNPJ/201404/XMLs/147762335300017255001000000901000000902-inu.xml
numero_final: "902"

Com isso finalizamos uma visão geral de todas as operações envolvendo a NFe, caso tenha alguma dúvida, não hesite em contatar nosso suporte no e-mail suporte@acras.com.br