Exemplo de código em Phyton
Sobre o Phyton
Python é uma linguagem de programação de alto nível, interpretada, de script, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Foi lançada por Guido van Rossum em 1991.
A emissão de NFe, NFSe ou NFCe utilizando Python pode ser feita de forma direta através da comunicação sem intermediários com as receitas estaduais ou prefeituras, porém existem inúmeras vantagens em utilizar uma API de terceiros para esta emissão.
O Focus NFe possui uma API simples e completa para emissão destes documentos fiscais, abaixo você irá encontrar exemplos funcionais de código-fonte em Python utilizando a nossa API.
Envio de uma NFe
import json
import requests
'''
Para ambiente de produção use a variável abaixo:
url = "https://api.focusnfe.com.br"
'''
url = "https://homologacao.focusnfe.com.br/v2/nfe"
# Substituir pela sua identificação interna da nota
ref = {"ref":"12345"}
token="token obtido no cadastro da empresa"
'''
Usamos dicionarios para armazenar os campos e valores que em seguida,
serao convertidos em JSON e enviados para nossa API
'''
nfe = {}
itens = {}
notas_referenciadas ={}
nfe["natureza_operacao"] = "Venda"
nfe["forma_pagamento"] = "0"
nfe["data_emissao"] = "2018-03-07T10:20:00-03:00"
nfe["tipo_documento"] = "0"
nfe["local_destino"] = "1"
nfe["finalidade_emissao"] = "4"
nfe["consumidor_final"] = "0"
nfe["presenca_comprador"] = "9"
nfe["cnpj_emitente"] = "99999999999999"
nfe["logradouro_emitente"] = "R. Padre Pigato"
nfe["numero_emitente"] = "9236"
nfe["bairro_emitente"] = "Santa Gula"
nfe["municipio_emitente"] = "Curitiba"
nfe["uf_emitente"] = "PR"
nfe["cep_emitente"] = "82320999"
nfe["telefone_emitente"] = "4199999999"
nfe["inscricao_estadual_emitente"] = "999999999"
nfe["regime_tributario_emitente"] = "1"
nfe["cpf_destinatario"] = "99999999999"
nfe["nome_destinatario"] = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
nfe["logradouro_destinatario"] = "Rua Prof. Yolanda Romeu Lugarini"
nfe["numero_destinatario"] = "1"
nfe["bairro_destinatario"] = "JD SANTA CECILIA"
nfe["municipio_destinatario"] = "CAMPO MAGRO"
nfe["uf_destinatario"] = "PR"
nfe["cep_destinatario"] = "83000000"
nfe["indicador_inscricao_estadual_destinatario"] = "2"
nfe["icms_base_calculo"] = "0"
nfe["icms_valor_total"] = "0"
nfe["icms_valor_total_desonerado"] = "0"
nfe["icms_base_calculo_st"] = "0"
nfe["icms_valor_total_st"] = "0"
nfe["valor_produtos"] = "1.00"
nfe["valor_frete"] = "0"
nfe["valor_seguro"] = "0"
nfe["valor_desconto"] = "0"
nfe["valor_total_ii"] = "0"
nfe["valor_ipi"] = "0"
nfe["valor_pis"] = "0"
nfe["valor_cofins"] = "0"
nfe["valor_outras_despesas"] = "0"
nfe["valor_total"] = "1.00"
nfe["modalidade_frete"] = "0"
notas_referenciadas["chave_nfe"] = 41170599999999999999550020000001111337477298
itens["numero_item"] = "1"
itens["codigo_produto"] = "ESSP"
itens["descricao"] = "Carrinho de corrida"
itens["cfop"] = "1202"
itens["unidade_comercial"] = "UN"
itens["quantidade_comercial"] = "1.00"
itens["valor_unitario_comercial"] = "1.00"
itens["valor_bruto"] = "1.00"
itens["valor_desconto"] = "0"
itens["unidade_tributavel"] = "UN"
itens["codigo_ncm"] = "49119900"
itens["quantidade_tributavel"] = "1.00"
itens["valor_unitario_tributavel"] = "1.00"
itens["inclui_no_total"] = "1"
itens["icms_origem"] = "0"
itens["icms_situacao_tributaria"] = "103"
itens["pis_situacao_tributaria"] = "99"
itens["cofins_situacao_tributaria"] = "99"
# Adicionamos os dados das variaveis itens e notas_referenciadas como listas ao dicionario principal.
nfe["items"] = [itens]
nfe["notas_referenciadas"] = [notas_referenciadas]
r = requests.post(url, params=ref, data=json.dumps(nfe), auth=(token,""))
# Mostra na tela o codigo HTTP da requisicao e a mensagem de retorno da API
print(r.status_code, r.text)
Envio de uma NFSe
# Faça o download e instalação da biblioteca requests, através do python-pip.
import json
import requests
'''
Para ambiente de produção use a variável abaixo:
url = "https://api.focusnfe.com.br"
'''
url = "https://homologacao.focusnfe.com.br/v2/nfse"
# Substituir pela sua identificação interna da nota
ref = {"ref":"12345"}
token="token obtido no cadastro da empresa"
'''
Usamos dicionarios para armazenar os campos e valores que em seguida,
serao convertidos em JSON e enviados para nossa API
'''
nfse = {}
nfse["prestador"] = {}
nfse["servico"] = {}
nfse["tomador"] = {}
nfse["tomador"]["endereco"] = {}
nfse["razao_social"] = "ACME INK"
nfse["data_emissao"] = "2018-02-26T12:00:00-03:00"
nfse["incentivador_cultural"] = "false"
nfse["natureza_operacao"] = "1"
nfse["optante_simples_nacional"] = "true"
nfse["status"] = "1"
nfse["prestador"]["cnpj"] = "99999999999999"
nfse["prestador"]["inscricao_municipal"] = "99999999"
nfse["prestador"]["codigo_municipio"] = "9999999"
nfse["servico"]["aliquota"] = "2.92"
nfse["servico"]["base_calculo"] = "1.00"
nfse["servico"]["discriminacao"] = "SERVICOS E MAO DE OBRA"
nfse["servico"]["iss_retido"] = "0"
nfse["servico"]["item_lista_servico"] = "1412"
nfse["servico"]["valor_iss"] = "11.68"
nfse["servico"]["valor_liquido"] = "1.00"
nfse["servico"]["valor_servicos"] = "1.00"
nfse["tomador"]["cnpj"] = "99999999999999"
nfse["tomador"]["razao_social"] = "Parkinson da silva coelho JR"
nfse["tomador"]["endereco"]["bairro"] = "São Miriti"
nfse["tomador"]["endereco"]["cep"] = "31999-000"
nfse["tomador"]["endereco"]["codigo_municipio"] = "9999999"
nfse["tomador"]["endereco"]["logradouro"] = "João Batista Netos"
nfse["tomador"]["endereco"]["numero"] = "34"
nfse["tomador"]["endereco"]["uf"] = "MG"
#print (json.dumps(nfse))
r = requests.post(url, params=ref, data=json.dumps(nfse), auth=(token,""))
# Mostra na tela o codigo HTTP da requisicao e a mensagem de retorno da API
print(r.status_code, r.text)
Exemplos de respostas da API por status para a requisição de envio:
processando_autorizacao (requisição enviada com sucesso para API)
{
"cnpj_prestador": "CNPJ_PRESTADOR",
"ref": "REFERENCIA",
"status": "processando_autorizacao"
}
requisicao_invalida (requisição com campos faltantes/erro de estrutura no JSON)
{
"codigo": "requisicao_invalida",
"mensagem": "Parâmetro \"prestador.codigo_municipio\" não informado"
}
Envio de uma NFCe
# Faça o download e instalação da biblioteca requests, através do python-pip.
import json
import requests
'''
Para ambiente de produção use a variável abaixo:
url = "https://api.focusnfe.com.br"
'''
url = "https://homologacao.focusnfe.com.br/v2/nfce"
# Substituir pela sua identificação interna da nota
ref = {"ref":"1234"}
token="token obtido no cadastro da empresa"
'''
Usamos dicionarios para armazenar os campos e valores que em seguida,
serao convertidos em JSON e enviados para nossa API
'''
nfce = {}
items = {}
formas_pagamento={}
nfce["cnpj_emitente"] = "99999999999999"
nfce["nome_emitente"] = "Acme ink"
nfce["nome_fantasia_emitente"] = "Acme ink"
nfce["logradouro_emitente"] = "Rua Tupiniquim"
nfce["numero_emitente"] = "4000"
nfce["bairro_emitente"] = "Brás"
nfce["municipio_emitente"] = "São Paulo"
nfce["uf_emitente"] = "SP"
nfce["cep_emitente"] = "99997-000"
nfce["inscricao_estadual_emitente"] = "111111111"
nfce["data_emissao"] = "2018-03-06T17:11:00.939-03:00"
nfce["natureza_operacao"] = "Venda ao Consumidor"
nfce["tipo_documento"] = "1"
nfce["presenca_comprador"] = "1"
nfce["finalidade_emissao"] = "1"
nfce["modalidade_frete"] = "9"
nfce["forma_pagamento"] = "0"
nfce["nome_destinatario"] = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
nfce["cpf_destinatario"] = "99999999999"
nfce["informacoes_adicionais_contribuinte"] = "Informacoes adicionais do contribuinte"
nfce["valor_produtos"] = "15.0"
nfce["valor_desconto"] = "0.00"
nfce["valor_total"] = "15.0"
formas_pagamento["forma_pagamento"] = "4"
formas_pagamento["valor_pagamento"] = "15.00"
formas_pagamento["bandeira_operadora"] = "7"
formas_pagamento["troco"] = "0"
itens["numero_item"] = "1"
itens["codigo_produto"] = "353"
itens["descricao"] = "NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
itens["codigo_ncm"] = "48024090"
itens["cfop"] = "5102"
itens["valor_desconto"] = "0.00"
itens["icms_origem"] = "0"
itens["icms_situacao_tributaria"] = "400"
itens["unidade_comercial"] = "UN"
itens["unidade_tributavel"] = "UN"
itens["quantidade_comercial"] = "10"
itens["quantidade_tributavel"] = "10"
itens["valor_unitario_comercial"] = "1.5"
itens["valor_unitario_tributavel"] = "1.5"
itens["valor_bruto"] = "15.00"
# Adicionamos os dados das variaveis itens e formas_pagamento como listas ao dicionario principal.
nfce["items"] = [itens]
nfce["formas_pagamento"] = [formas_pagamento]
r = requests.post(url, params=ref, data=json.dumps(nfce), auth=(token,""))
# Mostra na tela o codigo HTTP da requisicao e a mensagem de retorno da API
print(r.status_code, r.text)
Envio de uma CTe
import json
import requests
'''
Para ambiente de produção use a variável abaixo:
url = "https://api.focusnfe.com.br"
'''
url = "https://homologacao.focusnfe.com.br/v2/cte_os"
# Substituir pela sua identificação interno do CTe.
ref = {"ref":"12345"}
token="Token_obtido_no_cadastro_da_empresa"
'''
Usamos dicionarios para armazenar os campos e valores que em seguida,
serao convertidos em JSON e enviados para nossa API.
'''
cte_os = {}
seguros_carga = {}
documentos_referenciados ={}
cte_os["bairro_emitente"] = "S\u00e3o Cristov\u00e3o"
cte_os["bairro_tomador"] = "Bacacheri"
cte_os["cep_emitente"] = "99880077"
cte_os["cep_tomador"] = "88991188"
cte_os["cfop"] = "5353"
cte_os["cnpj_emitente"] = "51916585000125"
cte_os["cnpj_tomador"] = "51966818092777"
cte_os["codigo_municipio_emitente"] = "2927408"
cte_os["codigo_municipio_envio"] = "5200050"
cte_os["codigo_municipio_fim"] = "3100104"
cte_os["codigo_municipio_inicio"] = "5200050"
cte_os["codigo_municipio_tomador"] = "4106902"
cte_os["codigo_pais_tomador"] = "1058"
cte_os["complemento_emitente"] = "Andar 19 - sala 23"
cte_os["data_emissao"] = "2018-06-18T09:17:00"
cte_os["descricao_servico"] = "Descricao do seu servico aqui"
documentos_referenciados["data_emissao"] = "2018-06-10"
documentos_referenciados["numero"] = "1"
documentos_referenciados["serie"] = "1"
documentos_referenciados["subserie"] = "1"
documentos_referenciados["valor"] = "1.00"
cte_os["funcionario_emissor"] = "Nome do funcionario que fez a emissao"
cte_os["icms_aliquota"] = "17.00"
cte_os["icms_base_calculo"] = "1.00"
cte_os["icms_situacao_tributaria"] = "00"
cte_os["icms_valor"] = "0.17"
cte_os["indicador_inscricao_estadual_tomador"] = "9"
cte_os["inscricao_estadual_emitente"] = "12345678"
cte_os["logradouro_emitente"] = "Aeroporto Internacional de Salvador"
cte_os["logradouro_tomador"] = "Rua Jo\u00e3o"
cte_os["modal"] = "02"
cte_os["municipio_emitente"] = "Salvador"
cte_os["municipio_envio"] = "Abadia de Goi\u00e1s"
cte_os["municipio_fim"] = "Abadia dos Dourados"
cte_os["municipio_inicio"] = "Abadia de Goi\u00e1s"
cte_os["municipio_tomador"] = "Curitiba"
cte_os["natureza_operacao"] = "PREST. DE SERV. TRANSPORTE A ESTAB. COMERCIAL"
cte_os["nome_emitente"] = "ACME LTDA"
cte_os["nome_fantasia_emitente"] = "ACME"
cte_os["nome_fantasia_tomador"] = "Nome do tomador do servico aqui"
cte_os["nome_tomador"] = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL"
cte_os["numero_emitente"] = "S/N"
cte_os["numero_fatura"] = "1"
cte_os["numero_tomador"] = "1"
cte_os["pais_tomador"] = "BRASIL"
cte_os["quantidade"] = "1.00"
seguros_carga["nome_seguradora"] = "Nome da seguradora aqui"
seguros_carga["numero_apolice"] = "12345"
seguros_carga["responsavel_seguro"] = "4"
cte_os["telefone_emitente"] = "4133336666"
cte_os["tipo_documento"] = "0"
cte_os["tipo_servico"] = "6"
cte_os["uf_emitente"] = "BA"
cte_os["uf_envio"] = "GO"
cte_os["uf_fim"] = "MG"
cte_os["uf_inicio"] = "GO"
cte_os["uf_tomador"] = "PR"
cte_os["valor_desconto_fatura"] = "0.00"
cte_os["valor_inss"] = "0.10"
cte_os["valor_liquido_fatura"] = "1.00"
cte_os["valor_original_fatura"] = "1.00"
cte_os["valor_receber"] = "1.00"
cte_os["valor_total"] = "1.00"
cte_os["valor_total_tributos"] = "0.00"
# Adicionamos os dados das variaveis seguros_carga e documentos_referenciados como listas ao dicionario principal.
cte_os["seguros_carga"] = [seguros_carga]
cte_os["documentos_referenciados"] = [documentos_referenciados]
r = requests.post(url, params=ref, data=json.dumps(cte_os), auth=(token,""))
# Mostra na tela o codigo HTTP da requisicao e a mensagem de retorno da API.
print(r.status_code, r.text)
Manifesto do Destinatário
# Faça o download e instalação da biblioteca requests, através do python-pip.
import json
import requests
'''
Para ambiente de produção use a variável abaixo:
url = "https://api.focusnfe.com.br"
'''
url = "https://homologacao.focusnfe.com.br/v2/nfes_recebidas/"
token="token obtido no cadastro da empresa"
chave = "chave_da_nota_fiscal"
'''
Usamos um dicionario para armazenar os campos e valores que em seguida,
serao convertidos a JSON e enviados para nossa API
'''
manifesto = {}
manifesto["tipo"] = "ciencia"
r = requests.post(url+chave+"/manifesto", data=json.dumps(manifesto), auth=(token,""))
# Mostra na tela o codigo HTTP da requisicao e a mensagem de retorno da API
print(r.status_code, r.text)
A integração com nossa API é simples e rápida e nossa documentação aberta e objetiva. Tudo isso pensando na sua economia de tempo.
Deseja testar nossa API?
Solicite um contato comercial e teremos prazer em ajudar.