A API V3 JÁ ESTÁ DISPONÍVEL
As integrações API v2 que já estão configuradas, seguirão funcionando temporariamente. |
Envio e consulta da nota
Realiza o envio e a consulta da nota a partir do seu numero
e serie
. Se o parâmetro sendEmail
for definido, a nota será enviada para o cliente e o link da DANFE será gerado.
curl |
curl -X POST "https://bling.com.br/Api/v2/notafiscal/json/" |
PHP |
$url = 'https://bling.com.br/Api/v2/notafiscal/json/'; $posts = array ( "apikey" => "{apikey}", "number" => "{numero}", "serie" => "{serie}", "sendEmail" => "{sendEmail}" ); $retorno = executeSendFiscalDocument($url, $posts); echo $retorno; function executeSendFiscalDocument($url, $data){ $curl_handle = curl_init(); curl_setopt($curl_handle, CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_POST, count($data)); curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $data); curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE); $response = curl_exec($curl_handle); curl_close($curl_handle); return $response; } |
C# |
public static void ExecuteSendFiscalDocument() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://bling.com.br/Api/v2/notafiscal/json/"); ASCIIEncoding encoding = new ASCIIEncoding(); string postData = "apikey={apikey}&number={numero}&serie={serie}&sendEmail={sendEmail}"; byte[] data = encoding.GetBytes(postData); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = data.Length; using (Stream stream = request.GetRequestStream()) stream.Write(data,0,data.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); Console.Out.WriteLine("Response Body: \r\n {0}", responseString); } |
Parâmetro | Descrição | Tipo |
apikey |
apikey gerada no sistema | string |
number |
número da nota fiscal | integer |
serie |
série da nota fiscal | integer |
sendEmail |
envia e-mail para o cliente com o link da DANFE | string (true/false) |
Condições necessárias
- É necessário que o cliente possua um certificado em arquivo, que esteja armazenado em nosso servidor.
- A nota fiscal já deve estar cadastrada no sistema.
- Somente é possível enviar notas fiscais que estejam nas situações pendentes ou rejeitadas.
Possíveis situações de retorno
Código | Mensagem |
---|---|
0 | Não enviada |
1 | Rejeitada |
2 | Autorizada |
3 | Aguardando protocolo ou recibo de entrega |
4 | Denegada |
5 | Exceção |
6 | Nota fiscal não localizada |
7 | Erros nos parâmetros enviados para a emissão da NFe |
Mensagens de erros específicos
Na tabela abaixo, encontram-se erros estruturais ao enviar o XML.
Código | Mensagem |
---|---|
50 | Numero nao foi preenchido |
51 | Serie nao foi preenchida |
52 | Numero ou serie nao sao tipos numericos |
53 | Nota nao localizada, apenas notas pendentes ou rejeitadas podem ser enviadas |
62 | NF-e rejeitada 3 vezes pelo mesmo motivo. Sera necessario fazer o envio diretamente pelo sistema |
Segue um exemplo de retorno de erro.
{ "retorno": { "erros":[ "erro":{ "cod": 52, "msg": "Numero ou serie nao sao tipos numericos", } ] } }
Retorno
Independente do envio ou não da nota, o retorno terá uma estrutura diferenciada.
Segue a relação de atributos retornados:
Atributo | Valor |
situacao | Situação da nota (conforme tabela mencionada acima) |
mensagem | Mensagem padrão do Bling |
erro | Caso haja erro no envio da NFe, este campo será preenchido com o erro específico |
chaveAcesso | Chave na NFe |
linkDanfe | Link da danfe (não é criado quando há erro) |
O exemplo abaixo demonstra um retorno aonde a nota foi enviada com sucesso. A resposta será no formato especificado na URL (XML ou JSON).
Exemplo de retorno
{ "retorno": { "notafiscal": [ { "situacao": 2, "mensagem": "Nota Fiscal Enviada - Autorizado o uso da NF-e", "erro": null, "chaveAcesso": "43120891184036000128550010000000391485045649", "linkDanfe": "https://bling.com.br/doc.view.php?id=7ab6ad08c866c1b656a82f9a43efb3f5", } ] } }
Entretanto, caso a nota não pôde ser enviada ou foi negada pelo sefaz, a estrutura de erro diferencia-se do resto dos erros da API.
Segue exemplo de retorno:
Exemplo de retorno
{ "retorno": { "erros":[ "notafiscal":{ "situacao": 0, "mensagem": "A nota fiscal nao foi enviada, pois contem erros", "erro": "O campo nro deve ter no minimo 1 caractere.", "chaveAcesso": "13120891184036000128550010000000391485045640", "linkDanfe": "", } ] } }