Impressão

API para interação com impressoras.

🚧

Antes de usar as APIs...

Certifique-se de ter verificado as secções de APIs e Chave de Integração, além de ter lido as nossas Informações preliminares.

Impressoras disponíveis

BETA Neste momento estão disponíveis integrações com as seguintes impressoras:

• Bematech MP4200; • CIS PR 3000; • Daruma DR800; • Elgin i9; • Epson T20; • Tanca TP 450.

Em todos os casos são suportadas operações de avanço e corte de papel, além de acionamento de gavetas.

Todas as impressoras devem estar configuradas para operar usando ESC/POS. Consulte o manual da impressora para verificar como proceder.

🚧

Atenção!

O ControlPay não é responsável pela impressão em si (impressão, formatação no papel, tamanho de fonte, etc.), ele é apenas responsável por enviar o conteúdo do que será impresso e os comandos de impressora citados neste documento.

Para configurações de formatação na folha de impressão ou configurações semelhantes, consulte o manual de sua impressora ou o seu software de impressão.

Informações para impressão automática

É importante ressaltar que, para que ocorra impressão automática (caso esteja sendo usado o PayGo Windows), é necessário configurá-la em dois locais:

No próprio ControlPay (portal ou via API):

  • No terminal utilizado, é preciso que estejam ativadas configurações de impressão e ter uma impressora vinculada (a impressora cadastrada no ControlPay deve ser a mesma que a física, para que sejam enviadas as impressões com o formato correto).

No PayGo Windows / ControlPay Client:

  • É necessário configurar a impressora na tela de Configurações, informando para onde devem ser enviadas as informações da impressão.

Impressoras e seus códigos

Para o uso da API de envio de impressões, é possível enviar o código da impressora que está sendo usada. Isso fará com que o ControlPay vincule automaticamente o template daquela impressora à impressão e não seja necessário que o usuário vincule uma impressora previamente ao seu terminal.

IdCódigoImpressora
0GENERICASimplificada - Genérica (sem formatação específica para uso em terminais Android, impressão em PDF etc.)
1BMTMP4200Bematech – MP4200
2CISPR3000Cis – PR 3000
3DRMDR800Daruma – DR800
4ELGI9Elgin – i9
5EPST20Epson – T20
6TNATP450Tanca – TP450



GET ImpressoraTemplate/GetTemplates

📘

{{Url}}/ImpressoraTemplate/GetTemplates?key={{Key}}

Variáveis:

Url: endereço do ambiente atual.Key: chave de acesso.

Esta API retorna todos os templates acima mencionados.

{
    "data": "12/03/2026 11:07:06.6685",
    "impressoraTemplates": [
        {
            "id": 1,
            "nome": "Bematech - MP4200",
            "codigoImpressora": "BMTMP4200",
            "isGeneric": false
        },
        {
            "id": 2,
            "nome": "Cis - PR 3000",
            "codigoImpressora": "CISPR3000",
            "isGeneric": false
        },
       ...
    ]
}


GET IntencaoImpressao/GetById

📘

{{Url}}/intencaoImpressao/GetById?key={{Key}}&intencaoImpressaoId={{IntencaoImpressaoId}}

Variáveis:

Url: endereço do ambiente atual.Key: chave de acesso.IntencaoImpressaoId: ID da intenção de impressão desejada.

API para consulta do status de uma impressão. Deve ser usada caso o callback (enviado ao término do trabalho de impressão) não tenha sido recebido.

HEADERS
Content-Typeapplication/json
User-AgentNomeDaAutomacao/1.0
PARAMS
key{Key}
intencaoImpressaoId{IntencaoImpressaoId}
{
   "referencia":"TESTE",
   "conteudo":"Conteudo",
   "impressoraId": 6,
   //"terminalId":
   "aguardarClienteIniciarImpressao":true
}

Exemplo: IntencaoImpressao/GetById

curl --location --request GET 'sandbox.controlpay.com.br/webapi/IntencaoImpressao/GetById?key={{Key}}&intencaoImpressaoId=31' \
--header 'Content-Type: application/json' \
--header 'User-Agent: NomeDaAutomacao/1.0' \
--data-raw '{
   "referencia":"TESTE",
   "conteudo":"Conteudo",
   "impressoraId": 6,
   //"terminalId":
   "aguardarClienteIniciarImpressao":true
}'


POST IntencaoImpressao/Insert

📘

{{Url}}/IntencaoImpressao/Insert?key={{Key}}

Variáveis:

Url: endereço do ambiente atual.Key: chave de acesso.

API usada para envio do conteúdo a ser impresso pela impressora.

Os parâmetros "impressoraId" e "terminalId" são exclusivos em si. Ambos são usados para mapeamento do local onde a impressão deve ser realizada. No caso do envio do parâmetro "terminalId", a impressão será realizada na impressora vinculada àquele terminal.

Recomendamos o uso sempre da propriedade "terminalId" em conjunto com a propriedade "codigoImpressora", informando qual o tipo de impressora usada por aquele terminal.

O parâmetro "referencia" é opcional, podendo ser enviado caso você prefira injetar um identificador próprio neste trabalho de impressão. Este mesmo identificador pode ser usado pelo método de consulta de IntencaoImpressao posteriormente.

Body de exemplo:

{ 
  "referencia": "Ref123",
  "conteudo": "Conteudo da impressao...",
  "terminalId": "5678",
  "aguardarClienteIniciarImpressao": false,

  //Campo identificador do template de impressão.
  //Suplanta impressoraId. Pode ser
  //o ID ou o código do template.
  "codigoImpressora": "BMTMP42000",

  //Propriedade não recomendada
  //"impressoraId": "1234"
}
🚧

Atenção!

Caso seja usada uma impressora genérica e a impressão não for automática (aguardarClienteIniciarImpressao = false), a intenção será gerada com status “Impresso” ao invés do costumeiro “ImpressaoEnviada”.

Mapeamento de comandos de impressão

ComandoDescriçãoBematech MP4200Cis PR3000Daruma DR800Elgin i9
paperCutFullAcionamento total da guilhotina
paperCutPartialAcionamento parcial da guilhotina (Nem todas as impressoras aceitam. Enviaremos um acionamento total da guilhotina caso não seja aceito parcial)X
textAlignCenterAlinhamento do texto centralizado
textAlignLeftAlinhamento do texto à esquerda
textAlignRightAlinhamento do texto à direita
textCondensedOnModo texto condensado ligadoX
textCondensedOffModo texto condensado desligadoX
qrcodeQR CodeXX
ComandoDescriçãoEpson T20Tanca TP 450
paperCutFullAcionamento total da guilhotina
paperCutPartialAcionamento parcial da guilhotina (Nem todas as impressoras aceitam. Enviaremos um acionamento total da guilhotina caso não seja aceito parcial)
textAlignCenterAlinhamento do texto centralizado
textAlignLeftAlinhamento do texto à esquerda
textAlignRightAlinhamento do texto à direita
textCondensedOnModo texto condensado ligado
textCondensedOffModo texto condensado desligado
qrcodeQR CodeXX

EXEMPLO:

"<textAlignLeft>" Texto à esquerda

"<textAlignRight>" Texto à direita

"<textAlignCenter>" Texto centralizado

"<paperCutPartial>" Acionamento parcial da guilhotina

"<paperCutFull>" Acionamento completo da guilhotina

HEADERS
Content-Typeapplication/json
User-AgentNomeDaAutomacao/1.0
PARAMS
key{Key}

Exemplo: Body raw (a string "conteudo" foi quebrada para melhor visualização)

{
   "referencia":"Sua referencia para consulta posterior",
   "conteudo":"<textAlignLeft>
                Texto à esquerda
                <textAlignRight>
                Texto à direita
                <textAlignCenter>
                Texto centralizado
                Acionamento parcial da guilhotina (Nem todas impressoras possuem essa implementação)
                <paperCutPartial>
                <textCondensedOff>
                A partir daqui desligamos o modo de texto condensado.
                Importante
                mostrar que
                <textAlignLeft>
                o alinhamento 
                de texto
                <textAlignRight>
                funciona
                da mesma
                <textAlignCenter>
                maneira
                Acionamento parcial da guilhotina (Nem todas impressoras possuem essa implementação)
                <paperCutPartial>
                <textCondensedOn>
                A partir daqui Ligamos o modo de texto condensado.
                Importante
                mostrar que
                <textAlignLeft>
                o alinhamento 
                de texto
                <textAlignRight>
                funciona
                da mesma
                <textAlignCenter>
                maneira
                QRCODE:
                <qrcode>http://www.ntk.com.br</qrcode>
                Acionamento completo da guilhotina
      					<paperCutFull>",
   "impressoraId": {{impressoraId}},
   "terminalId": {{terminalId}},
   "aguardarClienteIniciarImpressao": true
}

Exemplo: IntencaoImpressao/Insert

curl --location --request POST 'sandbox.controlpay.com.br/webapi/IntencaoImpressao/Insert?key=' \
--header 'Content-Type: application/json' \
--header 'User-Agent: NomeDaAutomacao/1.0' \
--data-raw '{
   "referencia":"Sua referencia para consulta posterior",
   "conteudo":"<textAlignLeft>Texto à esquerda<textAlignRight>Texto à direita<textAlignCenter>Texto centralizado Acionamento parcial da guilhotina (Nem todas impressoras possuem essa implementação)<paperCutPartial><textCondensedOff>A partir daqui desligamos o modo de texto condensado.Importante mostrar que<textAlignLeft>o alinhamento de texto<textAlignRight>funciona da mesma<textAlignCenter>maneira Acionamento parcial da guilhotina (Nem todas impressoras possuem essa implementação)<paperCutPartial><textCondensedOn>A partir daqui Ligamos o modo de texto condensado. Importante mostrar que<textAlignLeft>o alinhamento de texto<textAlignRight>funciona da mesma<textAlignCenter>maneiraQRCODE:<qrcode>http://www.ntk.com.br</qrcode>Acionamento completo da guilhotina<paperCutFull>",
	 "impressoraId": {{impressoraId}},
	 "terminalId": {{terminalId}},
   "aguardarClienteIniciarImpressao": true
}'