Impressão 🖨️
O PINPDV imprime no Smart POS (ou equipamento equivalente) o conteúdo enviado pelo seu sistema, sempre vinculado a uma venda. É especialmente útil para a impressão do documento fiscal — alguns estados tornam obrigatória a impressão do documento fiscal no mesmo equipamento em que a transação foi capturada.
Há duas formas de realizar a impressão, resumidas abaixo. O mesmo fluxo vale para TEF Mobile, Pré-venda e Venda Avulsa.
| Forma | Conteúdo | Uso | QR Code da NFC-e |
|---|---|---|---|
| PUT /comprovante | Somente texto | Mais simples | Linha com a URL (texto) — o sistema converte |
| Webhook | Somente texto | Resposta síncrona; requer URL pública | Linha com a URL (texto) — o sistema converte |
Venda Expressa não imprime via sistema
A Venda Expressa não suporta impressão via sistema — nela o operador digita o valor direto no Smart POS, sem janela para o sistema injetar o documento. Para impressão gerenciada pelo sistema, use o TEF Mobile, a Pré-venda ou a Venda Avulsa.
Modo PUT /comprovante
Formato do comprovante: O conteúdo é sempre texto simples (text/plain), com 38 caracteres por linha, alinhado à esquerda. Sem formatação adicional.
O comprovante é sempre anexado a uma Venda — e uma Venda só passa a existir depois que o pagamento é processado. Enquanto a venda não é concluída, não há Venda e, portanto, não há comprovante a enviar.
Por isso o vendaIdentificador da URL não é o identificador que você enviou ao criar a solicitação (TEF Mobile ou Pré-venda): ele é o campo identificador de cada item do array vendas, retornado na consulta de status da solicitação. Fluxo:
- Crie a solicitação (TEF Mobile ou Pré-venda) e aguarde a conclusão.
- Consulte o status; quando o pagamento for aprovado, o array
vendaspassa a conter a Venda gerada. - Use o
identificadordessa Venda comovendaIdentificadorpara enviar o comprovante.
O corpo é texto puro — sem interpretação de escapes
O conteúdo é enviado literalmente: caracteres de escape não são interpretados. Não use \n, \t ou similares — eles seriam impressos como os próprios caracteres. Para quebrar linha, insira uma quebra de linha real no corpo da requisição.
O cabeçalho Content-Type: text/plain é obrigatório — o conteúdo é sempre tratado como texto simples, com 38 caracteres por linha, alinhado à esquerda.
curl --request PUT \
--url 'https://api.pinpdv.com.br/venda/{vendaIdentificador}/comprovante' \
--header 'Authorization: Bearer {SEU_TOKEN}' \
--header 'Content-Type: text/plain' \
--data 'COMPROVANTE DE PAGAMENTO
CNPJ 12.345.678/0001-90
AV. BRASIL, 1000 - CENTRO/SC
------------------------------
COMPROVANTE DE PAGAMENTO
------------------------------
1x REFRIGERANTE 2L 9,90
1x PAO DE QUEIJO 500G 24,50
------------------------------
TOTAL R$ 34,40
PAGAMENTO DEBITO
BANDEIRA MASTERCARD
NSU 000000214 AUT 164550
30/04/2026 15:00
------------------------------
OBRIGADO E VOLTE SEMPRE!'202 - AcceptedCaso o envio não seja feito antes do operador sair da tela, o comprovante pode ser reimpresso na seção Cobranças do app PINPDV.
QR Code da nota fiscal
Nos modos de texto — resposta do webhook e PUT /comprovante — para imprimir o QR Code da nota fiscal você insere uma quebra de linha no conteúdo e, na linha seguinte, informa a URL de consulta da NFC-e. O sistema identifica a URL automaticamente e a converte em imagem (QR Code) no momento da impressão.
curl --request PUT \
--url 'https://api.pinpdv.com.br/venda/{vendaIdentificador}/comprovante' \
--header 'Authorization: Bearer {SEU_TOKEN}' \
--header 'Content-Type: text/plain' \
--data 'COMPROVANTE DE PAGAMENTO
CNPJ 12.345.678/0001-90
AV. BRASIL, 1000 - CENTRO/SC
------------------------------
COMPROVANTE DE PAGAMENTO
------------------------------
1x REFRIGERANTE 2L 9,90
1x PAO DE QUEIJO 500G 24,50
------------------------------
TOTAL R$ 34,40
PAGAMENTO DEBITO
BANDEIRA MASTERCARD
NSU 000000214 AUT 164550
30/04/2026 15:00
------------------------------
OBRIGADO E VOLTE SEMPRE!
https://consulta.nfce.exemplo.gov.br/consulta?p={CHAVE_NFCE}'Modo Webhook
Configure uma URL de webhook no Portal do Cliente. O PINPDV chama sua URL via POST sempre que houver qualquer alteração em uma venda — criação, atualização de status e conclusão. Use o campo status do payload para identificar o momento relevante para o seu fluxo.
Sua resposta deve ser, em texto simples (text/plain), o conteúdo do documento a ser disponibilizado para impressão no Smart POS. A resposta é opcional: se sua URL não retornar conteúdo ou não estiver disponível, a venda continua normalmente.
Use 38 caracteres por linha. O texto é alinhado à esquerda. Sem formatação adicional.
Responda em até 30 segundos
O PINPDV aguarda a resposta do webhook por no máximo 30 segundos. Passado esse tempo, a requisição sofre timeout e o conteúdo não é impresso.
Não segure a resposta gerando o documento. Se a montagem do comprovante puder demorar (consulta a banco, emissão de documento fiscal, etc.), responda rápido — com corpo vazio (200 OK sem conteúdo) ou uma mensagem curta de espera (ex.: AGUARDE... GERANDO DOCUMENTO PARA IMPRESSAO) — e, assim que o conteúdo estiver pronto, envie-o via PUT /comprovante.
Esse padrão assíncrono evita que o app fique travado aguardando e que o uso do PINPDV pareça lento.
A URL de webhook é cadastrada no Portal do Cliente PINPDV, em Configurações → Configuração → Webhook. Para o payload enviado, a resposta esperada e o acompanhamento das notificações, veja Webhook.
Payload recebido no webhook: Será sempre o objeto “venda”.
{
"id": 288581,
"identificador": "pedido-001",
"tipoVenda": { "key": 1, "value": "Expressa" },
"valor": 100.11,
"isDocumento": false,
"cadastradoEm": "2026-04-30T14:59:58.573",
"status": { "key": 0, "value": "Realizada" },
"transacoes": [
{
"id": 256657,
"valor": 100.11,
"parcelas": 1,
"status": { "key": 0, "value": "Aprovada" },
"tipoPagamento": 3,
"pagamentoTipo": { "key": 3, "value": "Debito" },
"dados": {
"dataHora": "2026-04-30T15:00:00.688",
"nsu": "000000214",
"autorizacao": "164550",
"bandeira": "MASTERCARD",
"adquirente": "Getnet"
}
}
],
"pinPdv": { "id": 1, "codigo": "449263", "nome": "CAIXA 01" },
"isCancelamento": false
}Resposta esperada pelo webhook (corpo da resposta HTTP, Content-Type: text/plain):
CNPJ 12.345.678/0001-90
AV. BRASIL, 1000 - CENTRO/SC
------------------------------
COMPROVANTE DE PAGAMENTO
------------------------------
1x REFRIGERANTE 2L 9,90
1x PAO DE QUEIJO 500G 24,50
------------------------------
TOTAL R$ 34,40
PAGAMENTO DEBITO
BANDEIRA MASTERCARD
NSU 000000214 AUT 164550
30/04/2026 15:00
------------------------------
OBRIGADO E VOLTE SEMPRE!QR Code da nota fiscal
Nos modos de texto — resposta do webhook e PUT /comprovante — para imprimir o QR Code da nota fiscal você insere uma quebra de linha no conteúdo e, na linha seguinte, informa a URL de consulta da NFC-e. O sistema identifica a URL automaticamente e a converte em imagem (QR Code) no momento da impressão.
curl --request PUT \
--url 'https://api.pinpdv.com.br/venda/{vendaIdentificador}/comprovante' \
--header 'Authorization: Bearer {SEU_TOKEN}' \
--header 'Content-Type: text/plain' \
--data 'COMPROVANTE DE PAGAMENTO
CNPJ 12.345.678/0001-90
AV. BRASIL, 1000 - CENTRO/SC
------------------------------
COMPROVANTE DE PAGAMENTO
------------------------------
1x REFRIGERANTE 2L 9,90
1x PAO DE QUEIJO 500G 24,50
------------------------------
TOTAL R$ 34,40
PAGAMENTO DEBITO
BANDEIRA MASTERCARD
NSU 000000214 AUT 164550
30/04/2026 15:00
------------------------------
OBRIGADO E VOLTE SEMPRE!
https://consulta.nfce.exemplo.gov.br/consulta?p={CHAVE_NFCE}'