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.
Comprovante e documento — dois termos, um só conceito
Comprovante é o nome histórico do formato texto (PUT /comprovante): continua disponível, sem previsão de descontinuação. Documento é o termo atual e mais abrangente para o conteúdo que seu sistema envia à venda para impressão — documento fiscal, comprovante de compra não fiscal ou qualquer outro conteúdo — e é o termo usado no modo mais rico, com imagem (PUT /documento). A mudança evita a ambiguidade de “comprovante”, nome também usado para o comprovante emitido pela adquirente ao confirmar a transação.
Há três 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 /documento | Texto, imagem e QR Code combinados (layout) | A mais completa — recomendada por padrão. Cobre texto com formatação, logotipo e QR Code no mesmo endpoint | Item de texto com a URL — o sistema converte; ou item qrcode explícito |
| PUT /comprovante | Somente texto | Mais simples, sem formatação | 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 |
⭐
PUT /documentoé a porta principal de impressão do PINPDV — reúne o que as outras duas formas cobrem (texto, QR Code) e soma imagem no mesmo envio.PUT /comprovantee o Webhook continuam disponíveis para quem já integrou em texto puro, sem previsão de descontinuação.
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}'Modo PUT /documento
⭐ Esta é a porta mais importante de impressão do PINPDV — a mais completa e a recomendada por padrão para uma integração nova. As demais formas continuam valendo para quem já integrou em texto puro.
Requer PINPDV versão 1.0.1.9 ou superior
Este modo só é suportado a partir da versão 1.0.1.9 do PINPDV. Em equipamentos com versão anterior, o envio falha — confirme a versão instalada antes de integrar.
Em vez de um texto corrido, o corpo é uma lista de itens de layout — texto, imagem e QR Code, na ordem em que devem ser impressos. O endpoint é diferente do PUT /comprovante (/documento, não /comprovante) e o corpo é JSON (Content-Type: application/json), não texto puro.
O vendaIdentificador segue a mesma regra do PUT /comprovante: é o campo identificador da Venda retornada no array vendas da consulta de status — disponível apenas após o pagamento ser aprovado.
Use para destaques simples — para um layout elaborado, envie a imagem pronta
O layout final é montado pelo PINPDV a partir dos itens enviados, e o resultado pode variar sutilmente entre modelos de equipamento e operadoras. Para casos do dia a dia — um texto com alinhamento ou fonte diferente, um logotipo, o QR Code da nota — os três tipos abaixo resolvem bem. Se o seu sistema precisa de um layout elaborado, com controle fino de cada detalhe, monte a imagem final por conta própria e envie como item image — ela chega pronta, sem depender da composição feita pelo PINPDV.
Cada item da lista tem um type. Os três com suporte consistente são:
type | Para que serve |
|---|---|
text | Um bloco de texto, com fonte, tamanho e alinhamento configuráveis |
image | Uma imagem (base64 ou URL) — o mesmo uso de logotipos ou de um layout já pronto |
qrcode | Um QR Code gerado a partir de um conteúdo (ex.: a URL da NFC-e) |
Texto — "type": "text"
| Campo | Obrigatório | Valor | Padrão se omitido |
|---|---|---|---|
text | Sim | O conteúdo do bloco | — |
style.fontSize | Não | Tamanho da fonte | 20 |
style.alignment | Não | left, center ou right | left |
style.lineSpacing | Não | Espaçamento entre linhas | Dinâmico, conforme a altura da linha |
[
{
"type": "text",
"text": "OBRIGADO E VOLTE SEMPRE!",
"style": { "alignment": "center" }
}
]Imagem — "type": "image"
| Campo | Obrigatório | Valor | Padrão se omitido |
|---|---|---|---|
imageBase64 | Um dos dois — nunca os dois juntos | A imagem PNG embutida, precedida de data:image/png;base64, | — |
url | Um dos dois — nunca os dois juntos | Endereço público da imagem PNG | — |
style.alignment | Não | left, center ou right | left |
Envie imageBase64 ou url, nunca os dois no mesmo item.
Exemplo com url:
[
{
"type": "image",
"url": "https://portal.pinpdv.com.br/imgs/logo.png"
}
]Exemplo com imageBase64 (aqui, um quadrado preto 8×8px só para ilustrar o formato — na prática, use a imagem real do seu layout):
[
{
"type": "image",
"imageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAADElEQVR4nGNgGB4AAADIAAGtQHYiAAAAAElFTkSuQmCC"
}
]QR Code — "type": "qrcode"
| Campo | Obrigatório | Valor | Padrão se omitido |
|---|---|---|---|
data | Sim | O conteúdo do QR Code (ex.: a URL de consulta da NFC-e) | — |
size | Sim | Tamanho do QR Code, em pixels | |
style.alignment | Não | left, center (recomendado) ou right | left |
[
{
"type": "qrcode",
"data": "https://consulta.nfce.exemplo.gov.br/consulta?p={CHAVE_NFCE}",
"size": 200
}
]Exemplo — texto, imagem e QR Code no mesmo envio:
curl --request PUT \
--url 'https://api.pinpdv.com.br/venda/{vendaIdentificador}/documento' \
--header 'Authorization: Bearer {SEU_TOKEN}' \
--header 'Content-Type: application/json' \
--data '[
{
"type": "text",
"text": "CNPJ 12.345.678/0001-90",
"style": { "alignment": "center" }
},
{
"type": "image",
"url": "https://exemplo.com.br/logo.png"
},
{
"type": "qrcode",
"data": "https://consulta.nfce.exemplo.gov.br/consulta?p={CHAVE_NFCE}",
"size": 200,
"style": { "alignment": "center" }
}
]'202 - AcceptedQR Code da nota fiscal
Um item text cujo conteúdo seja apenas a URL de consulta da NFC-e (com a chave de acesso) é reconhecido automaticamente e impresso como QR Code — sem precisar declarar "type": "qrcode". Fora esse caso, uma imagem não tem detecção automática de URL: se o documento fiscal exigir o QR Code, use um item qrcode explícito ou já inclua o QR Code na própria imagem enviada.
Assim como no
PUT /comprovante, se o envio não ocorrer antes de o operador sair da tela, o documento pode ser reimpresso na seção Cobranças do app PINPDV.