Skip to main content
Este guia leva a fatura de uma importação do seu sistema até os campos que a leitura extrai. Ele usa curl e cinco endpoints, nesta ordem:
  1. GET /packs mostra o pacote e o tipo de documento da fatura.
  2. POST /contacts cria o contato.
  3. POST /collections cria a coleta do contato.
  4. POST /documents envia a fatura para a coleta.
  5. GET /documents/{id} mostra o andamento da leitura e, no fim, os campos da fatura.

Antes de começar

Você precisa de três coisas:
  • a chave de API da organização. Veja Autenticação;
  • um pacote de operação ativo que pede a fatura comercial. O operador cria o pacote no QX;
  • o PDF de uma fatura comercial, com o nome fatura.pdf.
Os exemplos usam qx_sua_chave. Troque esse texto pela chave da organização. Cada POST do guia leva o cabeçalho Idempotency-Key. Crie um valor novo para cada escrita, e guarde o valor junto da escrita no seu sistema. Se a resposta não chegar, repita a chamada com o mesmo valor. A API grava o recurso uma vez só. Veja Idempotência.

1. Ache o pacote e o tipo da fatura

A resposta traz os pacotes de operação ativos. Cada requisito do pacote traz o tipo de documento que ele pede:
Guarde o id do pacote (pck_12) e o id do tipo da fatura (dtp_31).

2. Crie o contato

A resposta 201 traz o contato:
  • O CNPJ cria uma empresa, e o CPF cria uma pessoa.
  • O QX consulta o CNPJ depois da criação. O campo lookup_status mostra o andamento da consulta.
  • A organização pode já ter um contato com esse CNPJ. Nesse caso, a resposta é 409 com o código contact_exists, e o campo contact traz o contato. Use o id desse contato nos próximos passos.

3. Crie a coleta

A resposta 201 traz a coleta, com um slot vazio para cada requisito do pacote:
  • A coleta começa no estado assembling, em montagem.
  • O QX não manda e-mail ao contato. Para mandar o convite do portal ao contato, envie também "send_invitation": true.

4. Envie a fatura para a coleta

A resposta 201 traz o documento novo. A leitura já começou, e os campos ainda não têm resposta:
  • O documento novo ocupa o slot vazio da fatura, e o slot doc_310 sai da coleta. Use o id da resposta (doc_318) nos próximos passos.
  • Quando todo documento obrigatório da coleta chega, a coleta passa a reviewing, e o QX avisa os operadores.

5. Espere a leitura

Chame GET /documents/{id} a cada 10 segundos ou mais. Pare quando o reading_status chegar a um destes valores: Os valores not_started, extracting, enriching e validating dizem que a leitura ainda não terminou. O laço abaixo usa o jq para ler o campo:

6. Leia os campos

A resposta traz todos os campos do tipo, na ordem do catálogo. O exemplo mostra só uma parte deles:
  • Cada item de fields traz a chave, o rótulo e a resposta do campo.
  • O campo sem resposta vem com value igual a null.
  • O campo number traz o número impresso que identifica o documento. Na fatura, é o número da fatura.
Para corrigir uma resposta, chame PATCH /documents/{id} com fields. O valor que o seu sistema grava vence o valor que a leitura extraiu.

As regras de uso

Siga estas quatro regras em toda integração:
  1. Envie os documentos da mesma operação com collection_id. Cada envio da API chega sozinho, e o documento que ele cria não tem irmãos na Triagem. Sem coleta, o encaixe liga o documento à operação só pelos números que ele imprime ou cita. O documento sem esses números pode esperar na Triagem por um operador.
  2. Envie o documento de cadastro, do pacote kyc, com collection_id. Sem coleta, a varredura descarta esse documento quando a organização tem um pacote de operação ativo. A resposta mostra discarded igual a true e discard_reason igual a outside_pack.
  3. Consulte o reading_status a cada 10 segundos ou mais. Cada consulta conta no limite de 300 chamadas por minuto da chave, com as outras chamadas. Veja Autenticação.
  4. Envie um documento por arquivo. A API não divide o arquivo. O arquivo que junta a fatura, o romaneio e o B/L vira um documento só, do tipo que a chamada informou.