# Adquirentes (/adquirentes)
Esta página concentra a tabela de adquirentes homologadas para operação com Smart TEF.
## Tabela de adquirentes [#tabela-de-adquirentes]
Versões mais atuais: Controle `1.26.6*` e Smart TEF `1.4.6*`.
## Campos de retorno relacionados [#campos-de-retorno-relacionados]
Alguns campos de retorno são preenchidos pela adquirente durante ou após o processamento da transação:
| Campo | Descrição |
| ------------------- | ------------------------------------------------- |
| `acquirer` | Nome da adquirente. |
| `acquirer_cnpj` | CNPJ da adquirente. |
| `nsu_host` | NSU atribuído pelo host. |
| `autorization_code` | Código de autorização retornado no processamento. |
Esses campos podem retornar `null` até a conclusão da transação.
# Anonimização (/anonimizacao)
Anonimização remove ou mascara dados pessoais associados a pagamentos, reduzindo o risco de identificação direta ou indireta.
## Conceito [#conceito]
Depois de anonimizado, o dado deixa de ser dado pessoal, e a pessoa não pode mais ser reidentificada por aquele payload.
Exemplo antes da anonimização:
```json
{
"CPF": "123.456.789-00",
"Nome": "Fulano"
}
```
Exemplo depois da anonimização:
```json
{
"Nome": "*************",
"CPF": "***********"
}
```
> O mecanismo substitui todo o conteúdo de extras dos pagamentos anonimizados por valores mascarados, mesmo quando existirem outras chaves no objeto.
## Anonimizar pagamentos [#anonimizar-pagamentos]
```http
POST https://api.smarttef.mobi/manager/store/payments/anonymize
```
```json
{
"payments_identifers": [
"01970d18-aac3-7ff4-ba76-78e785409d09"
]
}
```
| Campo | Obrigatório | Descrição |
| --------------------- | ----------- | ----------------------------------------------------------------- |
| `payments_identifers` | Sim | Lista de identificadores de pagamento que devem ser anonimizados. |
## Retorno da anonimização [#retorno-da-anonimização]
```json
{
"rowsAffected": 3,
"hasChanges": true,
"message": "Payments anonymized successfully"
}
```
| Campo | Tipo | Descrição |
| -------------- | --------- | -------------------------------------------------- |
| `rowsAffected` | `number` | Quantidade de pagamentos anonimizados com sucesso. |
| `hasChanges` | `boolean` | Indica se houve alteração nos dados. |
| `message` | `string` | Mensagem descritiva do resultado. |
Depois da anonimização, os dados pessoais deixam de ser apresentados nos retornos da API.
# Gestão (/gestao)
As operações de gestão mantêm a loja pronta para executar cards no Smart TEF. Elas usam o escopo da loja e devem ser chamadas com token compatível.
## Loja [#loja]
Use as operações de loja para consultar cadastro, atualizar dados, alterar configurações e anonimizar pagamentos quando aplicável.
Endpoints detalhados: [Loja](/api-reference/loja).
## Usuários [#usuários]
Usuários representam operadores e administradores vinculados à loja. Eles podem ser listados, criados, atualizados, bloqueados e configurados para MFA.
Endpoints detalhados: [Usuários](/api-reference/usuarios).
## Terminais [#terminais]
Terminais são os POS vinculados à loja. Antes de direcionar uma ordem, confirme que o terminal está ativo, pertence à loja e não está bloqueado.
Endpoints detalhados: [Terminais](/api-reference/terminais).
## Boas práticas [#boas-práticas]
* Mantenha cadastros e terminais atualizados antes de iniciar a operação.
* Use identificadores de usuário ou serial do POS apenas quando o fluxo exigir card direcionado.
* Revise bloqueios de usuário e terminal ao investigar ordens não exibidas no POS.
# Integrador (/integrador)
O escopo de integrador é usado por parceiros autorizados que administram lojas vinculadas ao Smart TEF.
Use esse escopo para ativar, desativar, bloquear, desbloquear ou reativar lojas, além de gerar e revogar tokens operacionais de loja.
## Quando usar [#quando-usar]
| Necessidade | Operação esperada |
| ------------------ | ---------------------------------------------- |
| Habilitar loja | Ativar ou reativar loja vinculada. |
| Suspender operação | Bloquear ou desativar loja. |
| Liberar operação | Desbloquear loja. |
| Trocar credenciais | Gerar ou revogar token da loja. |
| Ajustar parâmetros | Listar ou alterar configurações do integrador. |
## Regras de escopo [#regras-de-escopo]
* O token de integrador deve ser usado somente nas rotas próprias de integrador.
* A loja precisa estar vinculada ao integrador autenticado.
* O token de loja gerado pelo integrador deve ser usado nas operações operacionais da loja.
* Revogue tokens em caso de troca de credenciais, suspeita de vazamento ou encerramento da integração.
Endpoints detalhados: [Integrador](/api-reference/integrador).
# Fluxo de implantação (/fluxo-implantacao)
Use este fluxo como roteiro para preparar uma loja antes de operar pagamentos, impressões ou formulários em produção.
## Passo 1: preparar a loja [#passo-1-preparar-a-loja]
Confirme que a loja foi criada e habilitada no Smart TEF. Parceiros White Label devem solicitar a liberação ao atendimento comercial antes de iniciar.
## Passo 2: obter credenciais [#passo-2-obter-credenciais]
Separe o Bearer Token da loja, o Gateway Token quando aplicável e as credenciais de portal para pelo menos um usuário administrador e um operador.
Veja os detalhes em [Autenticação](./autenticacao).
## Passo 3: ativar terminais [#passo-3-ativar-terminais]
Garanta que os terminais estejam vinculados à loja, ativos e não bloqueados. Operações direcionadas para POS dependem de terminal válido.
## Passo 4: configurar gestão operacional [#passo-4-configurar-gestão-operacional]
Cadastre ou revise usuários, terminais e dados da loja. A visão geral está em [Gestão](./gestao), e os endpoints detalhados ficam em [API](/api).
## Passo 5: configurar webhook [#passo-5-configurar-webhook]
Quando desejar callbacks automáticos, configure uma URL pública HTTPS para receber eventos de status.
Veja os payloads e regras em [Webhook](./webhook).
## Passo 6: validar o primeiro fluxo [#passo-6-validar-o-primeiro-fluxo]
Crie uma ordem, guarde o identificador retornado e acompanhe o status por polling ou webhook até o estado final.
Para uma validação mínima, siga o [Quickstart](./quickstart).
# Referência (/referencia)
Use esta página como apoio rápido para interpretar retornos e montar requisições para a API Smart TEF.
## Status de pagamento [#status-de-pagamento]
| Status | Descrição |
| ---------- | --------------------- |
| `PDT` | Pendente |
| `PROC_PAG` | Processando pagamento |
| `CNC` | Concluído |
| `CAN_ERP` | Cancelado pelo ERP |
| `REJ_PAG` | Pagamento rejeitado |
| `SOL_EST` | Estorno solicitado |
| `PROC_EST` | Processando estorno |
| `EST` | Estornado |
| `REJ_EST` | Estorno rejeitado |
## Status de impressão e formulário [#status-de-impressão-e-formulário]
| Status | Descrição |
| --------- | ------------------ |
| `PDT` | Pendente |
| `PROC` | Processando |
| `IMP` | Impresso |
| `CNC` | Concluído |
| `REJ` | Rejeitado |
| `CAN_ERP` | Cancelado pelo ERP |
## Tipos de pagamento [#tipos-de-pagamento]
| ID | Descrição |
| --------- | --------------------------------------- |
| `CREDIT` | Crédito |
| `DEBIT` | Débito |
| `PIX` | Pix |
| `VOUCHER` | Voucher |
| `OTHERS` | Forma escolhida durante o processamento |
## Operações no POS [#operações-no-pos]
| Operação | Cor |
| ------------ | -------- |
| Pagamento | Cinza |
| Cancelamento | Vermelho |
| Impressão | Amarelo |
## Tipos de exibição [#tipos-de-exibição]
| Tipo | Descrição |
| ----------- | ------------------------------------------------------------- |
| `NRM` | Ordem normal, disponível na lista de operações. |
| `CRD_UNICO` | Ordem direcionada a um único destino, exibida com prioridade. |
Quando `order_type` for `CRD_UNICO`, informe apenas um destino: `user_id` ou `serial_pos`. Os dois campos não devem ser enviados juntos.
## Regras gerais de criação [#regras-gerais-de-criação]
| Regra | Aplicação |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CNPJ | Quando informado no payload, deve pertencer ao mesmo escopo do token usado na requisição. |
| Destino único | `serial_pos` e `user_id` são mutuamente exclusivos. |
| Duplicidade funcional | Identificadores externos como `charge_id`, `print_id` e `form_name` não devem ser reutilizados enquanto houver operação pendente, processando ou em fluxo de estorno para a mesma loja. |
| Cancelamento | Cancelamentos pelo ERP se aplicam a ordens ainda pendentes. |
| Consulta por período | Em listagens por período, use janelas curtas e evite reprocessar grandes intervalos quando o webhook estiver configurado. |
## Juros de parcelamento [#juros-de-parcelamento]
| Valor | Descrição |
| ---------- | --------------------------------------------- |
| `F_STORE` | Padrão. A loja paga os juros do parcelamento. |
| `F_CLIENT` | O cliente paga os juros do parcelamento. |
## Campos extras [#campos-extras]
O campo `extras` carrega informações adicionais da ordem, como `CPF`, `CNPJ`, `Nome` ou dados de pedido. Use `has_details` para definir se esses dados aparecem em uma tela auxiliar.
## Convenções de retorno [#convenções-de-retorno]
* Campos de adquirente como `autorization_code`, `nsu_host`, `acquirer`, `coupon` e `payment_value` podem retornar `null` até o fim do processamento.
* Quando `order_type` for `CRD_UNICO`, envie somente um destino: `user_id` ou `serial_pos`.
* No payload de pagamento, `type` será `PAYMENT`. No payload de impressão, `type` será `PRINT`.
* Em anonimização, todo o conteúdo de `extras` pode ser substituído por valores mascarados.
## Envelope de resposta [#envelope-de-resposta]
As APIs retornam o status HTTP e um objeto `data`. Em erros de validação ou regra de negócio, `data.message` pode conter uma lista de mensagens.
```json
{
"status": 400,
"data": {
"message": ["Loja não encontrada"],
"timestamp": "2026-02-09T12:00:00.000Z",
"path": "/commands/order/create"
}
}
```
| HTTP | Uso comum |
| ----- | ---------------------------------------------------------- |
| `400` | Campo inválido ou operação bloqueada por regra de negócio. |
| `401` | Token ausente, inválido, bloqueado ou incompatível. |
| `404` | Entidade não encontrada. |
| `409` | Conflito de estado ou duplicidade funcional. |
# Autenticação (/autenticacao)
Os endpoints da API Smart TEF usam JSON e autenticação por Bearer Token. Em rotas protegidas, também pode ser necessário enviar o Gateway Token no header de assinatura.
## Headers comuns [#headers-comuns]
| Nome | Descrição | Valor |
| --------------------------- | ---------------------------------------------------------- | -------------------- |
| `Authorization` | Bearer Token recebido na criação da loja ou do integrador. | `Bearer ` |
| `ocp-apim-subscription-key` | Gateway Token recebido na criação da loja. | `` |
| `Content-Type` | Tipo de conteúdo da requisição. | `application/json` |
## Token da loja [#token-da-loja]
Use o token da loja para operações do dia a dia, como criar pagamentos, consultar status, configurar webhook, gerenciar usuários e terminais da própria loja.
Quando a loja for gerenciada por um integrador, o token pode ser gerado pela rota:
```http
POST https://api.smarttef.mobi/integrator/store/get/token
```
## Token do integrador [#token-do-integrador]
Use o token do integrador apenas para operações de gestão sobre lojas integradas, como ativação, bloqueio, desbloqueio, reativação e revogação de token.
## Escopo e autorização [#escopo-e-autorização]
| Contexto | Regra |
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Loja | A operação fica limitada à loja representada pelo token. Quando um payload aceitar `cnpj`, ele deve ser o mesmo CNPJ associado ao token. |
| Integrador | O integrador precisa estar ativo e autorizado a operar sobre a loja informada. Operações de integrador não substituem o token operacional da loja. |
| Terminal | Operações executadas no POS dependem de terminal ativo, pertencente à loja e não bloqueado. |
| Operador | Quando a operação receber `user_id`, o usuário deve pertencer à loja e estar apto a operar no Smart TEF. |
## Direcionamento de ordens [#direcionamento-de-ordens]
Ordens podem ser abertas para a lista geral ou direcionadas para um destino específico:
* `order_type: "NRM"` deixa o card disponível na lista de operações.
* `order_type: "CRD_UNICO"` direciona o card para um único destino e exige apenas `user_id` ou apenas `serial_pos`.
* `user_id` e `serial_pos` não devem ser enviados juntos na mesma ordem.
## Credenciais de portal [#credenciais-de-portal]
Tenha disponível pelo menos:
* Um usuário administrador para configurações.
* Um usuário operador para fluxos operacionais.
* Loja criada e habilitada no ambiente correto.
* Terminal ativado, quando o fluxo depender de card direcionado a POS.
## Observações [#observações]
* Parceiros White Label devem solicitar habilitação comercial antes de começar.
* Nem todos os endpoints exigem as mesmas credenciais, mas o `Authorization` deve ser tratado como obrigatório na integração.
* Use HTTPS para webhook e para qualquer endpoint exposto publicamente pelo ERP.
## Boas práticas de segurança [#boas-práticas-de-segurança]
* Guarde tokens em variáveis de ambiente ou cofre de segredos.
* Não exponha tokens em aplicações frontend.
* Revogue e gere um novo token quando houver suspeita de vazamento.
* Registre somente identificadores técnicos nos logs e evite armazenar payloads completos com dados pessoais.
# Conceitos (/conceitos)
O Smart TEF transforma uma Smart POS em um terminal de pagamento integrado ao ERP, PDV ou sistema de retaguarda, sem cabos ou equipamentos adicionais.
O sistema externo envia ordens pela API. O POS exibe cada ordem como um card operacional, processa a ação e devolve o resultado por consulta ativa ou webhook.
## Escopos de integração [#escopos-de-integração]
| Escopo | Quando usar |
| ---------- | -------------------------------------------------------------------------------------------------------------------------- |
| ERP Loja | Operações do dia a dia da loja: pagamentos, impressões, formulários, usuários, terminais, webhook e configurações da loja. |
| Integrador | Administração de lojas vinculadas: ativação, bloqueio, desbloqueio, geração de token e revogação de token. |
Use sempre o token compatível com o escopo da operação. Token de loja não substitui token de integrador, e token de integrador não substitui o token operacional da loja.
## Tipos de card [#tipos-de-card]
| Card | Objetivo |
| ----------------- | --------------------------------------------------------------------------------------- |
| Card de pagamento | Solicitar pagamento no POS, acompanhar status, cancelar pendência ou solicitar estorno. |
| Card de impressão | Enviar conteúdo para impressão no POS e acompanhar o processamento. |
| Formulário | Coletar dados estruturados no POS e consultar o preenchimento. |
## Casos de uso [#casos-de-uso]
| Segmento | Aplicação comum |
| ----------------------- | ------------------------------------------------------------- |
| Varejo e PDV | Enviar pagamento vinculado a venda e emissão fiscal. |
| Delivery e restaurantes | Direcionar pagamento para operador ou terminal específico. |
| Força de vendas | Registrar cobranças externas com acompanhamento centralizado. |
| Logística | Coletar dados ou confirmar operações no POS. |
| Posto de combustível | Integrar pagamento ao fluxo operacional da bomba ou caixa. |
## Ciclo de uma ordem [#ciclo-de-uma-ordem]
1. O sistema externo cria a ordem pela API.
2. O Smart TEF registra o card e controla o status.
3. O POS exibe a ordem para o operador.
4. O operador executa pagamento, impressão ou preenchimento.
5. O sistema externo recebe o resultado por polling ou webhook.
# Smart TEF (/)
O Smart TEF permite que ERPs, PDVs, sistemas de retaguarda e plataformas externas criem ordens de pagamento, impressão e coleta de dados por API. A aplicação cliente acompanha o processamento por consulta ativa ou por webhook.
Conectado via API ou pela criação manual de cards, o Smart TEF transforma a Smart POS em um terminal integrado ao seu sistema, sem cabos ou equipamentos adicionais.
## Escopos de integração [#escopos-de-integração]
A documentação está organizada por público de consumo:
| Escopo | Quando usar |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------- |
| ERP Loja | Integrações da própria loja: pagamentos, impressões, formulários, consultas, usuários, terminais, webhook e configuração da loja. |
| Integrador | Integrações que administram lojas vinculadas: ativação, bloqueio, geração ou revogação de token. |
Use o token compatível com o escopo da operação. Um token de loja não substitui um token de integrador, e um token de integrador não deve ser usado para operações operacionais da loja fora das rotas previstas.
## Objetivo [#objetivo]
Servir como guia de referência para integração via API do Smart TEF com sistemas ERP, retaguarda e operações externas.
## Público-alvo [#público-alvo]
Parceiros e clientes que precisam integrar sistemas externos ao Smart TEF.
## Pré-requisitos [#pré-requisitos]
* Loja criada e habilitada no Smart TEF.
* Bearer Token para acesso à API.
* Gateway Token para chamadas protegidas.
* Credenciais do portal com usuário administrador e operador.
* URL pública para webhook, quando desejar receber atualizações automáticas.
* Terminal ativado no ambiente, quando a operação exigir envio para POS.
Parceiros White Label devem solicitar esses pré-requisitos ao atendimento comercial antes do início da integração.
## O que você encontra nesta aba [#o-que-você-encontra-nesta-aba]
* [Autenticação](./autenticacao) com tokens, headers e boas práticas.
* [Referência](./referencia) com status, tipos e convenções.
* [Card de pagamento](./card-pagamento) com criação, consulta, cancelamento e estorno.
* [Card de impressão](./card-impressao) com criação, consulta e cancelamento.
* [Formulários](./formularios) para coleta de dados estruturados.
* [Webhook](./webhook) para callbacks de status e reprocessamento.
* [Lupa online](./lupa-online) para pesquisa e criação de cards sob demanda.
* [Anonimização](./anonimizacao) para remoção de dados pessoais.
## Fluxo recomendado [#fluxo-recomendado]
1. Configure loja, usuários, terminais e webhook quando necessário.
2. Crie uma ordem de pagamento, impressão ou formulário.
3. Guarde o identificador retornado pela API.
4. Consulte o status por polling ou receba atualizações via webhook.
5. Cancele ordens pendentes, solicite estorno de pagamentos concluídos ou anonimize dados pessoais quando aplicável.
## Respostas e erros [#respostas-e-erros]
As respostas de sucesso e erro seguem um envelope JSON com `status` e `data`. Em erros de validação ou regra de negócio, `data.message` pode retornar uma lista de mensagens ou objetos com o campo inválido.
| HTTP | Significado |
| ------------- | --------------------------------------------------------------------------------- |
| `200` / `201` | Requisição aceita e processada. |
| `400` | Erro de validação ou regra de negócio. |
| `401` | Token ausente, inválido, bloqueado ou incompatível com a operação. |
| `404` | Recurso não encontrado. |
| `409` | Conflito, como duplicidade funcional ou operação incompatível com o estado atual. |
| `500` | Erro inesperado no processamento. |
## Tabela de status de retorno [#tabela-de-status-de-retorno]
| Status | Descrição |
| ---------- | --------------------- |
| `PDT` | Pendente |
| `PROC_PAG` | Processando pagamento |
| `CNC` | Concluído |
| `CAN_ERP` | Cancelado pelo ERP |
| `REJ_PAG` | Pagamento rejeitado |
| `SOL_EST` | Solicitou estorno |
| `PROC_EST` | Processando estorno |
| `EST` | Estornado |
| `REJ_EST` | Estorno rejeitado |
| `IMP` | Impresso |
| `REJ` | Rejeitado |
| `PROC` | Processando |
## Tipos de pagamento [#tipos-de-pagamento]
| Tipo | Descrição |
| --------- | ----------------------------------------------------------------- |
| `CREDIT` | Crédito |
| `DEBIT` | Débito |
| `PIX` | Pix |
| `VOUCHER` | Voucher |
| `OTHERS` | Campo livre para o operador escolher a forma de pagamento no POS. |
## Operações exibidas no POS [#operações-exibidas-no-pos]
| Operação | Cor |
| ------------ | -------- |
| Pagamento | Cinza |
| Cancelamento | Vermelho |
| Impressão | Amarelo |
## Arquitetura [#arquitetura]
O ERP cria uma ordem no Smart TEF por API e passa a acompanhar o ciclo de vida dessa ordem por consulta ativa ou webhook. A API mantém o estado do card, entrega a solicitação ao Smart POS e recebe o resultado do processamento feito no terminal.
Sistema externo
ERP / PDV
Cria pagamento, impressão ou formulário via API.
→
Orquestração
API Smart TEF
Valida tokens, registra o card e controla status.
→
Operação
Smart POS
Exibe o card para o operador e inicia a execução.
→
Processamento
Adquirente
Processa pagamento ou confirma a ação solicitada.
Retorno do resultado
Smart POS → API Smart TEF → ERP
Status disponível por polling ou enviado por webhook configurado.
## Principais endpoints [#principais-endpoints]
| Operação | Endpoint |
| ----------------------------- | ----------------------------------------------------------------- |
| Criar pagamento | `POST https://api.smarttef.mobi/commands/order/create` |
| Consultar pagamento | `POST https://api.smarttef.mobi/pooling/order/get` |
| Listar pagamentos por período | `POST https://api.smarttef.mobi/pooling/order` |
| Cancelar pagamento pendente | `POST https://api.smarttef.mobi/commands/order/status/cancelar` |
| Solicitar estorno | `POST https://api.smarttef.mobi/commands/order/status/estornar` |
| Criar impressão | `POST https://api.smarttef.mobi/commands/print/create` |
| Consultar impressão | `POST https://api.smarttef.mobi/pooling/print/get` |
| Cancelar impressão pendente | `POST https://api.smarttef.mobi/commands/print/status/cancelar` |
| Criar formulário | `POST https://api.smarttef.mobi/commands/form/create` |
| Configurar webhook da loja | `POST https://api.smarttef.mobi/manager/store/update` |
| Anonimizar pagamentos | `POST https://api.smarttef.mobi/manager/store/payments/anonymize` |
# Quickstart (/quickstart)
Este guia mostra o caminho mínimo para criar um pagamento e acompanhar o resultado.
## 1. Configure os headers [#1-configure-os-headers]
```http
Authorization: Bearer
ocp-apim-subscription-key:
Content-Type: application/json
```
Use token de loja para operações de pagamento. Token de integrador é reservado para gestão de lojas vinculadas.
## 2. Crie um pagamento [#2-crie-um-pagamento]
```http
POST https://api.smarttef.mobi/commands/order/create
```
Envie os dados da cobrança e, quando necessário, direcione a ordem para um usuário ou terminal específico. Consulte os campos em [Card de pagamento](./card-pagamento).
## 3. Guarde o identificador [#3-guarde-o-identificador]
Armazene o identificador retornado pela API, como `payment_identifier`, para consultas futuras, conciliação e suporte.
## 4. Consulte o status [#4-consulte-o-status]
```http
POST https://api.smarttef.mobi/pooling/order/get
```
Consulte a ordem até que ela chegue a um status final, como `CNC`, `CAN_ERP`, `REJ_PAG`, `EST` ou `REJ_EST`.
## 5. Configure webhook quando necessário [#5-configure-webhook-quando-necessário]
Para reduzir polling, configure o webhook da loja e receba callbacks automáticos de mudança de status.
Veja [Webhook](./webhook) para payloads, reprocessamento e boas práticas.
## Próximos passos [#próximos-passos]
* Revise [Autenticação](./autenticacao) para entender tokens e escopos.
* Consulte [Referência](./referencia) para status, tipos de pagamento e convenções.
* Use [API Reference](/api) para ver endpoints e contratos detalhados.
# Card de impressão (/card-impressao)
Use ordens de impressão para enviar uma imagem ou conteúdo renderizado ao Smart TEF.
## Regras do arquivo [#regras-do-arquivo]
* Tamanho máximo de `56000` bytes, medido no arquivo da imagem antes da conversão para Base64. Acima disso a impressão é recusada.
* Largura máxima de `450px`. Imagens mais estreitas são centralizadas e completadas com barras brancas nas laterais até `450px`.
* Altura máxima de `2000px`.
* Formato `JPEG` ou `PNG`.
* Envie o conteúdo em Base64 no campo `file.data`, sem o prefixo `data:image/png;base64,`. Conteúdo fora do padrão Base64, incluindo esse prefixo, é recusado com `400`.
## Headers [#headers]
| Nome | Descrição | Valor |
| --------------------------- | ------------------------------------------ | -------------------- |
| `Authorization` | Token JWT da loja. | `Bearer {token}` |
| `ocp-apim-subscription-key` | Gateway Token recebido na criação da loja. | `{subscription-key}` |
| `Content-Type` | Formato do corpo da requisição. | `application/json` |
Mais detalhes sobre os tokens em [Autenticação](/autenticacao).
## Criar impressão [#criar-impressão]
```http
POST https://api.smarttef.mobi/commands/print/create
```
Os cards de impressão servem para enviar uma imagem ao terminal.
```json
{
"order_type": "CRD_UNICO",
"serial_pos": "6502T1",
"has_details": true,
"print_id": "12345",
"extras": {
"Nome": "Teste da Silva",
"CPF": "000.000.000-00"
},
"file": {
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR4AWP4DwQACfsD/c8LaHIAAAAASUVORK5CYII="
}
}
```
O exemplo direciona o card a um POS por `serial_pos`. Para direcionar a um operador, troque `serial_pos` por `user_id`.
| Campo | Tipo | Obrigatório | Descrição |
| -------------- | --------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `order_type` | `string` | Não | `CRD_UNICO` exibe imediatamente. `NRM` deixa o card em lista. Padrão `NRM`. |
| `user_id` | `number` | Condicional | Operador que receberá o card. Em `CRD_UNICO`, envie este campo ou `serial_pos`. Em `NRM`, é opcional e deixa o card só na lista desse operador. Não pode ser enviado junto com `serial_pos`. |
| `serial_pos` | `string` | Condicional | Serial do POS que receberá o card. Em `CRD_UNICO`, envie este campo ou `user_id`. Em `NRM`, é opcional e deixa o card só na lista desse POS. Não pode ser enviado junto com `user_id`. |
| `print_id` | `string` | Não | Identificador do card criado pelo ERP. Envie como texto: número sem aspas é recusado. |
| `has_details` | `boolean` | Não | Se `true`, exibe tela de detalhes ao clicar. Em card `CRD_UNICO` sem interação, use `false`. Padrão `false`. |
| `file` | `object` | Sim | Objeto com `data`, a imagem em Base64. `name` é opcional e só compõe o nome do arquivo armazenado: ele não aparece no POS. |
| `extras` | `object` | Não | Campos livres do ERP, como `Nome` e `CPF`, exibidos na tela de detalhes quando `has_details` for `true`. |
| `is_from_text` | `boolean` | Não | Indica que a imagem foi renderizada a partir de texto pelo ERP. |
### Regras de impressão [#regras-de-impressão]
| Tema | Regra |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Direcionamento | Em `CRD_UNICO`, envie exatamente um entre `user_id` e `serial_pos`. Em `NRM`, sem nenhum dos dois o card aparece na lista de todos os POS da loja. Nunca envie os dois juntos. |
| Destino | `serial_pos` precisa ser de um terminal ativo e não bloqueado da loja: terminal não encontrado retorna `404`, e terminal bloqueado ou desativado retorna `401`. `user_id` precisa ser de um operador ativo: operador não encontrado ou bloqueado retorna `404`. |
| Arquivo | A criação exige a imagem em Base64 em `file.data`. A API identifica o formato pelo conteúdo e define a extensão do arquivo armazenado. |
| Dados extras | `extras` é gravado como enviado: a API não remove a pontuação de CPF ou CNPJ nem limita o tamanho de `Nome`, ao contrário do card de pagamento. |
| Duplicidade | `print_id` não deve ser reutilizado enquanto existir impressão pendente ou processando para a mesma loja. |
| Cancelamento | Só é permitido cancelar impressões ainda pendentes. |
## Retorno da criação [#retorno-da-criação]
```json
{
"print_identifier": "019c9618-0d2f-7405-8e07-2a3e75b20172",
"print_status": "PDT",
"order_type": "CRD_UNICO",
"file": "https://storage.blob.com/smart-tef/68ab8366-29db-438e-9a39-8ca72691c0b7-SR4YK.png",
"print_id": "189"
}
```
| Campo | Descrição |
| ------------------ | ----------------------------------------------- |
| `print_identifier` | Identificador único gerado para cada impressão. |
| `print_status` | Status atual do card. |
| `order_type` | Tipo do card, único ou normal. |
| `file` | URL da imagem armazenada para download. |
| `print_id` | Identificador informado pelo ERP. |
Veja o contrato completo em [Criar impressão](/api-reference/impressoes/criar-impressao).
## Consultar impressão [#consultar-impressão]
```http
POST https://api.smarttef.mobi/pooling/print/get
```
```json
{
"print_identifier": "019c9618-0d2f-7405-8e07-2a3e75b20172"
}
```
| Campo | Tipo | Obrigatório | Descrição |
| ------------------ | -------- | ----------- | ----------------------------------------- |
| `print_identifier` | `string` | Sim | Identificador único da impressão em UUID. |
A resposta é um objeto único, não uma lista. Se a impressão não existir na loja, a API responde `404`.
## Exemplo de retorno de consulta [#exemplo-de-retorno-de-consulta]
```json
{
"print_identifier": "019c9618-0d2f-7405-8e07-2a3e75b20172",
"cnpj": "22140418000160",
"create_at": "2026-02-25T15:38:04.603Z",
"update_at": "2026-02-25T15:38:04.603Z",
"file": "https://storage.blob.com/smart-tef/68ab8366-29db-438e-9a39-8ca72691c0b7-SR4YK.png",
"order_type": "CRD_UNICO",
"print_status": "PDT",
"serial_pos": "",
"user_id": 24,
"type": "PRINT",
"has_details": true,
"print_id": "189",
"location": {
"lat": "",
"long": ""
},
"reason": null,
"extras": {
"Nome": "Teste da Silva",
"CPF": "000.000.000-00"
}
}
```
## Campos de retorno [#campos-de-retorno]
| Campo | Descrição |
| ------------------ | ----------------------------------------------- |
| `print_identifier` | Identificador único gerado para cada impressão. |
| `cnpj` | CNPJ da loja. |
| `create_at` | Data e hora da criação do card. |
| `update_at` | Data e hora da última atualização. |
| `file` | URL da imagem para download. |
| `order_type` | `CRD_UNICO` ou `NRM`. |
| `print_status` | Status atual do card. |
| `serial_pos` | Serial do POS. |
| `user_id` | ID do usuário que enviou a imagem. |
| `type` | Tipo do card. Para impressão, será `PRINT`. |
| `has_details` | Indica se há detalhes adicionais no card. |
| `print_id` | Identificador do card criado pelo ERP. |
| `location.lat` | Latitude do terminal. |
| `location.long` | Longitude do terminal. |
| `reason` | Motivo da rejeição, quando houver. |
| `extras` | Campos extras enviados pelo ERP. |
Veja o contrato completo em [Consultar impressão](/api-reference/impressoes/consultar-impressao).
## Cancelar impressão pendente [#cancelar-impressão-pendente]
```http
POST https://api.smarttef.mobi/commands/print/status/cancelar
```
```json
{
"print_identifier": "019c9618-0d2f-7405-8e07-2a3e75b20172"
}
```
O cancelamento só se aplica a impressões ainda pendentes. Se a impressão já estiver processando no POS, acompanhe o resultado pela consulta ou pelo webhook.
### Retorno do cancelamento [#retorno-do-cancelamento]
```json
{
"print_identifier": "019c9618-0d2f-7405-8e07-2a3e75b20172",
"print_status": "CAN_ERP",
"order_type": "CRD_UNICO"
}
```
| Campo | Descrição |
| ------------------ | ----------------------------------------------- |
| `print_identifier` | Identificador único gerado para cada impressão. |
| `print_status` | Status atual do card. |
| `order_type` | Tipo do card, único ou normal. |
Veja o contrato completo em [Cancelar impressão pendente](/api-reference/impressoes/cancelar-impressao-pendente).
# Card de pagamento (/card-pagamento)
Use ordens de pagamento para enviar uma cobrança ao Smart TEF e acompanhar seu ciclo até a conclusão, rejeição, cancelamento ou estorno.
## Headers [#headers]
| Nome | Descrição | Valor |
| --------------------------- | ------------------------------------------ | -------------------- |
| `Authorization` | Token JWT da loja. | `Bearer {token}` |
| `ocp-apim-subscription-key` | Gateway Token recebido na criação da loja. | `{subscription-key}` |
| `Content-Type` | Formato do corpo da requisição. | `application/json` |
Mais detalhes sobre os tokens em [Autenticação](/autenticacao).
## Criar pagamento [#criar-pagamento]
```http
POST https://api.smarttef.mobi/commands/order/create
```
Esses cards podem ser enviados para um ou mais POS com a finalidade de realizar um pagamento.
Exemplo de body para um card do tipo normal:
```json
{
"value": 1.0,
"payment_type": "DEBIT",
"installments": 1,
"charge_id": "Identificador único",
"order_type": "NRM",
"extras": {
"CPF": "000.000.000-00",
"Nome": "Teste da Silva"
},
"has_details": true
}
```
| Campo | Tipo | Obrigatório | Descrição |
| ------------------ | --------- | ----------- | ---------------------------------------------------------------------------------------------------------------- |
| `value` | `number` | Sim | Valor do pagamento, com separador decimal. |
| `payment_type` | `string` | Não | Tipo do pagamento. Veja [tipos de pagamento](./referencia#tipos-de-pagamento). |
| `fee_type` | `string` | Não | Em crédito, define quem paga os juros: `F_STORE` ou `F_CLIENT`. |
| `installments` | `number` | Não | Quantidade de parcelas. Padrão `1`. Acima de 1, só com `payment_type` igual a `CREDIT`. |
| `min_installments` | `number` | Não | Menor quantidade de parcelas permitida. |
| `charge_id` | `string` | Não | Identificador do card criado pelo ERP. |
| `order_type` | `string` | Não | `CRD_UNICO` para exibir imediatamente ou `NRM` para lista. |
| `user_id` | `number` | Condicional | Usuário que receberá o card quando `order_type` for `CRD_UNICO`. Não pode ser enviado junto com `serial_pos`. |
| `serial_pos` | `string` | Condicional | Serial do POS que receberá o card quando `order_type` for `CRD_UNICO`. Não pode ser enviado junto com `user_id`. |
| `extras` | `object` | Não | Campos extras como `CPF`, `CNPJ` e `Nome`. |
| `has_details` | `boolean` | Não | Define se os detalhes extras podem ser exibidos em tela auxiliar. |
| `form` | `object` | Não | Formulário associado ao pagamento, quando aplicável. |
### Regras de pagamento [#regras-de-pagamento]
| Tema | Regra |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Valor | `value` deve ser maior ou igual a `1` e aceitar no máximo duas casas decimais. |
| Parcelas | `installments` deve ser maior que zero. Parcelamento maior que uma parcela só deve ser usado com `payment_type: "CREDIT"`. |
| Parcela mínima | `min_installments` só se aplica a crédito e não pode ser maior que `installments`. |
| Juros | `fee_type` se aplica a crédito parcelado. Em crédito com mais de uma parcela e sem `fee_type`, a API assume `F_STORE`. |
| Dados extras | `extras.CPF` e `extras.CNPJ` podem ser enviados com ou sem pontuação. Use `Nome` com até 80 caracteres. |
| Duplicidade | `charge_id` deve ser único para ordens pendentes, processando ou em fluxo de estorno na mesma loja. |
| Formulário agregado | Quando `form` for enviado na criação do pagamento, o retorno inclui os dados do formulário vinculado ao pagamento. |
## Retorno da criação [#retorno-da-criação]
```json
{
"payment_identifier": "019c964f-5ecf-7889-97c2-1121e6f65f5c",
"payment_status": "PDT",
"order_type": "NRM",
"charge_id": "966",
"form": {
"form_identifier": "019c964f-5eca-7a15-a1b4-433e8ae004f8",
"form_status": "PDT",
"order_type": "NRM",
"form_url": "https://storage.example.com/smart-tef/form-818",
"form_name": "form-818",
"fill_out_type": "REQUEST_MANDATORY_FORM"
}
}
```
| Campo | Descrição |
| -------------------- | ------------------------------------------- |
| `payment_identifier` | Identificador único gerado para cada card. |
| `payment_status` | Status atual do card. |
| `order_type` | Tipo do card, único ou normal. |
| `charge_id` | Identificador informado pelo ERP. |
| `form` | Dados do formulário anexado, quando houver. |
Veja o contrato completo em [Criar pagamento](/api-reference/pagamentos/criar-pagamento).
## Consultar pagamento [#consultar-pagamento]
```http
POST https://api.smarttef.mobi/pooling/order/get
```
Envie ao menos um dos parâmetros abaixo. Enviando os dois, a API aplica os dois filtros ao mesmo tempo.
```json
{
"payment_identifier": "68ab8366-29db-438e-9a39-8ca72691c0b7"
}
```
Ou:
```json
{
"charge_id": "1"
}
```
| Campo | Tipo | Obrigatório | Descrição |
| -------------------- | -------- | ----------- | --------------------------------------------------------------------- |
| `charge_id` | `string` | Condicional | Identificador do ERP. Pode retornar vários cards relacionados. |
| `payment_identifier` | `string` | Condicional | Identificador do pagamento, em UUID. Retorna apenas o card informado. |
A resposta é sempre uma lista. Se nenhum card for encontrado, a API responde `400` com a mensagem `payment order not found`.
## Exemplo de retorno de consulta [#exemplo-de-retorno-de-consulta]
```json
[
{
"payment_identifier": "68ab8366-29db-438e-9a39-8ca72691c0b7",
"cnpj": "99999999999999",
"create_at": "2026-02-12T14:43:53.336Z",
"update_at": "2026-02-12T14:44:53.336Z",
"value": "10",
"payment_value": null,
"payment_date": null,
"autorization_code": null,
"order_type": "NRM",
"payment_type": "OTHERS",
"payment_status": "PDT",
"card_brand": null,
"installments": 1,
"nsu_host": null,
"nsu_sitef": null,
"acquirer": null,
"serial_pos": "",
"user_id": 0,
"payment_extras": null,
"extras": {
"CPF": "",
"Nome": ""
},
"has_details": true,
"type": "PAYMENT",
"charge_id": "313",
"controle_versao": null,
"conn_type": null,
"batt_level": null,
"charging": null,
"location": {
"lat": "",
"long": ""
},
"reason": null,
"refund_autorization_code": null,
"refund_serial_pos": null,
"refund_user_id": null,
"coupon": null,
"refound_coupon": null,
"fee_type": null,
"refund_date": null,
"acquirer_cnpj": null
}
]
```
> Campos preenchidos pela adquirente podem retornar null até a conclusão da transação.
## Campos de retorno [#campos-de-retorno]
| Campo | Descrição |
| -------------------------- | ----------------------------------------------------- |
| `payment_identifier` | Identificador único gerado para cada card. |
| `cnpj` | CNPJ da loja que receberá o pagamento. |
| `create_at` | Data da criação do card. |
| `update_at` | Data da última atualização. |
| `value` | Valor solicitado no pagamento. |
| `payment_value` | Valor efetivamente pago no Smart POS. |
| `payment_date` | Data do pagamento. |
| `autorization_code` | Código de autorização do pagamento. |
| `order_type` | `CRD_UNICO` ou `NRM`. |
| `payment_type` | Tipo do pagamento. |
| `payment_status` | Status atual do card. |
| `card_brand` | Nome da bandeira. |
| `installments` | Número de parcelas. |
| `nsu_host` | NSU atribuído pelo host da adquirente. |
| `nsu_sitef` | NSU atribuído pelo SiTef. |
| `acquirer` | Nome da adquirente. |
| `serial_pos` | Serial do POS que realizou a transação. |
| `user_id` | ID do usuário que realizou a transação. |
| `payment_extras` | Dados extras recebidos no processamento do pagamento. |
| `extras` | Campos extras enviados pelo ERP. |
| `has_details` | Indica se `extras` pode ser exibido no app. |
| `type` | Tipo do card. Para pagamento, será `PAYMENT`. |
| `charge_id` | Identificador do card criado pelo usuário. |
| `controle_versao` | Versão do app Smart TEF. |
| `conn_type` | Tipo de conexão do terminal. |
| `batt_level` | Percentual de bateria. |
| `charging` | Indica se o terminal está no carregador. |
| `location.lat` | Latitude do terminal. |
| `location.long` | Longitude do terminal. |
| `reason` | Motivo da rejeição, quando houver. |
| `refund_autorization_code` | Código de autorização do reembolso. |
| `refund_serial_pos` | Serial do POS que realizou o reembolso. |
| `refund_user_id` | ID do usuário que realizou o reembolso. |
| `coupon` | Links para comprovantes do pagamento. |
| `refound_coupon` | Links para comprovantes do estorno. |
| `fee_type` | Tipo de juros em crédito: `F_STORE` ou `F_CLIENT`. |
| `refund_date` | Data do reembolso. |
| `acquirer_cnpj` | CNPJ da adquirente. |
Veja o contrato completo em [Consultar pagamento](/api-reference/pagamentos/consultar-pagamento).
## Listar pagamentos [#listar-pagamentos]
```http
POST https://api.smarttef.mobi/pooling/order
```
Lista os cards da loja atualizados dentro de uma janela de 24 horas.
```json
{
"datetimeInitial": "2026-02-09 00:00:00",
"datetimeFinal": "2026-02-10 00:00:00"
}
```
| Campo | Tipo | Obrigatório | Descrição |
| ----------------- | -------- | ----------- | ------------------------------------------------------------------------------------------------------------- |
| `datetimeInitial` | `string` | Sim | Início da janela, no formato `YYYY-MM-DD HH:MM:SS`. |
| `datetimeFinal` | `string` | Sim | Fim da janela, no formato `YYYY-MM-DD HH:MM:SS`. Precisa ser exatamente 24 horas depois de `datetimeInitial`. |
* A janela precisa ter exatamente 24 horas, com tolerância de 1 segundo. Qualquer outro intervalo é recusado.
* O filtro é aplicado sobre `update_at`, não sobre a data de criação.
* A lista `pooling` traz pagamentos, impressões e formulários independentes. Use o campo `type` de cada item para distinguir `PAYMENT`, `PRINT` e `FORM`.
* `pooling_time` indica o intervalo recomendado, em segundos, entre uma listagem e a próxima.
Veja o contrato completo em [Listar pagamentos](/api-reference/pagamentos/listar-pagamentos).
## Cancelar pagamento pendente [#cancelar-pagamento-pendente]
```http
POST https://api.smarttef.mobi/commands/order/status/cancelar
```
O cancelamento só será possível enquanto o pagamento estiver pendente e o processamento no POS ainda não tiver sido iniciado.
```json
{
"payment_identifier": "68ab8366-29db-438e-9a39-8ca72691c0b7"
}
```
### Retorno do cancelamento [#retorno-do-cancelamento]
```json
{
"payment_identifier": "68ab8366-29db-438e-9a39-8ca72691c0b7",
"payment_status": "CAN_ERP",
"order_type": "NRM"
}
```
| Campo | Descrição |
| -------------------- | ------------------------------------------ |
| `payment_identifier` | Identificador único gerado para cada card. |
| `payment_status` | Status atual do card. |
| `order_type` | Tipo do card, único ou normal. |
Veja o contrato completo em [Cancelar pagamento pendente](/api-reference/pagamentos/cancelar-pagamento-pendente).
## Solicitar estorno [#solicitar-estorno]
```http
POST https://api.smarttef.mobi/commands/order/status/estornar
```
Use este endpoint para solicitar a reversão de uma transação já concluída. Depois da solicitação, acompanhe o status por consulta ou webhook até `EST` ou `REJ_EST`.
```json
{
"payment_identifier": "68ab8366-29db-438e-9a39-8ca72691c0b7"
}
```
> Pagamentos PIX processados pela PagSeguro, Getnet, Stone, Vero, SafraPay ou Sipag não podem ser estornados. Nesse caso, a API recusa a solicitação e o card não é enviado ao terminal. Os outros meios de pagamento dessas adquirentes continuam liberados.
### Retorno do estorno [#retorno-do-estorno]
```json
{
"payment_identifier": "68ab8366-29db-438e-9a39-8ca72691c0b7",
"payment_status": "SOL_EST",
"order_type": "NRM"
}
```
| Campo | Descrição |
| -------------------- | ------------------------------------------ |
| `payment_identifier` | Identificador único gerado para cada card. |
| `payment_status` | Status atual do card. |
| `order_type` | Tipo do card, único ou normal. |
### Estorno recusado [#estorno-recusado]
```json
{
"status": 400,
"data": {
"message": "Estorno indisponível para pagamentos PIX processados pela PagSeguro.",
"error_code": "PIX_REFUND_NOT_SUPPORTED",
"acquirer": "PAGSEGURO",
"payment_identifier": "68ab8366-29db-438e-9a39-8ca72691c0b7",
"timestamp": "2026-02-09T12:00:00.000Z",
"path": "/commands/order/status/estornar"
}
}
```
Trate a recusa pelo `error_code` `PIX_REFUND_NOT_SUPPORTED`, não pelo texto de `message`, que muda conforme a adquirente. `acquirer` traz o valor gravado no pagamento: `PAGSEGURO`, `GETNET`, `STONE`, `VERO`, `SAFRA` ou `SIPAG`.
Veja o contrato completo em [Solicitar estorno](/api-reference/pagamentos/solicitar-estorno).
# Formulários (/formularios)
Formulários permitem solicitar dados estruturados durante uma operação ou como uma ordem independente.
Para coletar dados junto de uma cobrança, envie o formulário no campo `form` de [Criar pagamento](./card-pagamento#criar-pagamento) em vez de usar esta rota.
## Headers [#headers]
| Nome | Descrição | Valor |
| --------------------------- | ------------------------------------------ | -------------------- |
| `Authorization` | Token JWT da loja. | `Bearer {token}` |
| `ocp-apim-subscription-key` | Gateway Token recebido na criação da loja. | `{subscription-key}` |
| `Content-Type` | Formato do corpo da requisição. | `application/json` |
Mais detalhes sobre os tokens em [Autenticação](/autenticacao).
## Criar formulário [#criar-formulário]
```http
POST https://api.smarttef.mobi/commands/form/create
```
```json
{
"order_type": "NRM",
"form_name": "cadastro-cliente",
"extras": {
"CNPJ": "12612554000131"
},
"form": [
{
"field": "Email",
"type": "EMAIL",
"needed": true
},
{
"field": "Observação",
"type": "TEXTO"
}
]
}
```
| Campo | Obrigatório | Descrição |
| --------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `cnpj` | Não | CNPJ da loja, somente dígitos. Quando omitido, a API usa o CNPJ do token. Quando enviado, precisa ser igual ao CNPJ do token. |
| `order_type` | Não | `NRM` deixa o card na lista geral e `CRD_UNICO` abre direto no destino. |
| `serial_pos` | Condicional | Serial do POS que receberá o formulário quando `order_type` for `CRD_UNICO`. Não pode ser enviado junto com `user_id`. |
| `user_id` | Condicional | Operador que receberá o formulário quando `order_type` for `CRD_UNICO`. Não pode ser enviado junto com `serial_pos`. |
| `form_name` | Não | Nome de referência do formulário. |
| `fill_out_type` | Não | `REQUEST_COMUM_FORM` ou `REQUEST_MANDATORY_FORM`. |
| `extras` | Não | Dados complementares enviados pelo ERP. |
| `has_details` | Não | Permite abrir a tela de detalhes do card. |
| `form[].field` | Sim | Nome do campo exibido ao operador. |
| `form[].value` | Não | Valor inicial do campo. O POS devolve o valor preenchido. |
| `form[].type` | Não | `TEXTO`, `NUMBER`, `DATA`, `CPF`, `CNPJ`, `CEP` ou `EMAIL`. Padrão `TEXTO`. |
| `form[].needed` | Não | Torna o preenchimento do campo obrigatório. Padrão `false`. |
## Regras de formulário [#regras-de-formulário]
| Tema | Regra |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Direcionamento | Para `CRD_UNICO`, envie exatamente um entre `user_id` e `serial_pos`. Os dois nunca podem ser enviados juntos. |
| Obrigatoriedade | Basta um campo com `needed: true` para a API definir `fill_out_type` como `REQUEST_MANDATORY_FORM`. Enviar `REQUEST_MANDATORY_FORM` sem nenhum campo obrigatório é recusado. |
| Duplicidade | `form_name` precisa ser único entre os formulários da loja que estejam em `PDT` ou `PROC`. |
| Conclusão | Campos obrigatórios devem retornar preenchidos como string não vazia. |
## Retorno da criação [#retorno-da-criação]
```json
{
"form_identifier": "01970d18-aac3-7ff4-ba76-78e785409d09",
"form_status": "PDT",
"order_type": "NRM",
"form_url": "https://storage.blob.com/smart-tef/cadastro-cliente",
"form_name": "cadastro-cliente",
"fill_out_type": "REQUEST_MANDATORY_FORM"
}
```
| Campo | Descrição |
| ----------------- | --------------------------------------------------- |
| `form_identifier` | Identificador único do formulário, gerado pela API. |
| `form_status` | Status atual do card. |
| `order_type` | Tipo do card, único ou normal. |
| `form_url` | URL do JSON do formulário armazenado. |
| `form_name` | Nome de referência informado na criação. |
| `fill_out_type` | `REQUEST_COMUM_FORM` ou `REQUEST_MANDATORY_FORM`. |
Veja o contrato completo em [Criar formulário](/api-reference/formularios/criar-formulario).
## Consultar formulário [#consultar-formulário]
```http
POST https://api.smarttef.mobi/pooling/form/get
```
```json
{
"form_identifier": "01970d18-aac3-7ff4-ba76-78e785409d09"
}
```
| Campo | Tipo | Obrigatório | Descrição |
| ----------------- | -------- | ----------- | ------------------------------------------------- |
| `form_identifier` | `string` | Sim | Identificador do formulário devolvido na criação. |
* A resposta é um objeto único, não uma lista. Se o formulário não existir na loja, a API responde `404`.
* As respostas preenchidas pelo operador ficam no JSON apontado por `form_url`. O corpo devolve o estado do card.
* A consulta funciona tanto para formulários independentes quanto para formulários vinculados a um pagamento.
## Exemplo de retorno de consulta [#exemplo-de-retorno-de-consulta]
```json
{
"form_identifier": "01970d18-aac3-7ff4-ba76-78e785409d09",
"cnpj": "22140418000160",
"create_at": "2026-02-25T15:38:04.603Z",
"update_at": "2026-02-25T15:41:12.117Z",
"order_type": "NRM",
"form_status": "CNC",
"serial_pos": "",
"user_id": 24,
"type": "FORM",
"controle_versao": "2.14.0",
"conn_type": "WIFI",
"batt_level": "87",
"charging": false,
"location": {
"lat": "",
"long": ""
},
"reason": null,
"form_name": "cadastro-cliente",
"order_target": "USR",
"package_name": "br.com.poscontrole.smarttef",
"store_id": 1,
"form_url": "https://storage.blob.com/smart-tef/cadastro-cliente",
"fill_out_type": "REQUEST_MANDATORY_FORM",
"agregate": "NONE",
"order_target_initial": "USR",
"serial_pos_initial": "",
"user_id_initial": 24,
"extras": {
"CNPJ": "12612554000131"
},
"has_details": false
}
```
## Campos de retorno [#campos-de-retorno]
| Campo | Descrição |
| ---------------------- | ------------------------------------------------------------------- |
| `form_identifier` | Identificador único do formulário. |
| `cnpj` | CNPJ da loja. |
| `create_at` | Data de criação, no fuso de São Paulo. |
| `update_at` | Data da última atualização, no fuso de São Paulo. |
| `order_type` | `CRD_UNICO` ou `NRM`. |
| `form_status` | Status atual do card. |
| `serial_pos` | Serial do POS de destino. |
| `user_id` | Operador de destino. |
| `type` | Tipo do card. Para formulário, será `FORM`. |
| `controle_versao` | Versão do app Smart TEF instalada no terminal que atendeu o card. |
| `conn_type` | Tipo de conexão do terminal no momento da atualização. |
| `batt_level` | Percentual de bateria do terminal. |
| `charging` | Indica se o terminal estava no carregador. |
| `location.lat` | Latitude do terminal. |
| `location.long` | Longitude do terminal. |
| `reason` | Motivo da rejeição informado pelo POS, quando houver. |
| `form_name` | Nome de referência do formulário. |
| `order_target` | Destino atual do card: `USR`, `POS` ou `NONE`. |
| `package_name` | Pacote do app que processou o formulário. |
| `store_id` | Identificador interno da loja. |
| `form_url` | URL do JSON com os campos e as respostas do formulário. |
| `fill_out_type` | `REQUEST_COMUM_FORM` ou `REQUEST_MANDATORY_FORM`. |
| `agregate` | Vínculo do formulário: `NONE` (independente), `PAYMENT` ou `PRINT`. |
| `order_target_initial` | Destino original do card: `USR`, `POS` ou `NONE`. |
| `serial_pos_initial` | Destino original em POS. |
| `user_id_initial` | Destino original em operador. |
| `extras` | Campos extras enviados pelo ERP. |
| `has_details` | Indica se a tela de detalhes pode ser aberta. |
Veja o contrato completo em [Consultar formulário](/api-reference/formularios/consultar-formulario).
## Cancelar formulário pendente [#cancelar-formulário-pendente]
```http
POST https://api.smarttef.mobi/commands/form/status/cancelar
```
```json
{
"form_identifier": "01970d18-aac3-7ff4-ba76-78e785409d09"
}
```
O cancelamento só se aplica a formulários ainda pendentes. Depois que o preenchimento estiver em processamento, acompanhe o resultado pela consulta.
### Retorno do cancelamento [#retorno-do-cancelamento]
```json
{
"form_identifier": "01970d18-aac3-7ff4-ba76-78e785409d09",
"form_status": "CAN_ERP",
"order_type": "NRM"
}
```
| Campo | Descrição |
| ----------------- | ---------------------------------- |
| `form_identifier` | Identificador único do formulário. |
| `form_status` | Status atual do card. |
| `order_type` | Tipo do card, único ou normal. |
Veja o contrato completo em [Cancelar formulário pendente](/api-reference/formularios/cancelar-formulario-pendente).
# Lupa online (/lupa-online)
O Smart TEF disponibiliza uma funcionalidade de pesquisa de cards acessível pela lupa no canto superior direito da interface do Smart POS.
A lupa online permite que o operador pesquise um card no Smart POS sem que ele tenha sido criado previamente na API do Smart TEF. Nessa modalidade, o Smart TEF consulta o ERP em tempo real, recebe os cards compatíveis com a busca e cria o card de pagamento para o terminal.
Operador
Busca no POS
Informa o termo de pesquisa na lupa do Smart TEF.
→
Smart TEF
Busca no ERP
Envia o termo pesquisado para o endpoint de busca da loja.
→
ERP
Devolve os cards
Retorna um array com os cards encontrados.
→
POS
Card criado e exibido
O card é gravado como pendente e o operador o processa no POS.
## Configurar busca online da loja [#configurar-busca-online-da-loja]
```http
POST https://api.smarttef.mobi/manager/store/update
```
Use o token da loja. Para configurar a busca online, basta enviar `payment_external_hook`; os demais dados cadastrais da loja não são necessários.
```json
{
"payment_external_hook": {
"url": "https://erp.example.com/smart-tef/busca",
"authorization_token": "Bearer token-do-erp"
}
}
```
| Campo | Obrigatório | Descrição |
| ------------------------------------------- | ----------- | -------------------------------------------------------------------------- |
| `payment_external_hook.url` | Sim | Endpoint do ERP que recebe a pesquisa e devolve os cards. |
| `payment_external_hook.authorization_token` | Não | Valor enviado, sem alteração, no header `Authorization` da chamada ao ERP. |
O mesmo campo pode ser enviado na criação da loja pelo integrador, em [Ativar loja](/api-reference/integrador/ativar-loja).
## Como a busca funciona [#como-a-busca-funciona]
* A lupa aparece no POS sempre que a loja tem `payment_external_hook` configurado.
* O Smart TEF chama o ERP no momento da pesquisa, e o operador aguarda a resposta no POS. Responda o mais rápido possível.
* Os cards devolvidos pelo ERP são **gravados** no Smart TEF como pendentes (`PDT`) e ficam disponíveis no POS que fez a pesquisa.
* A criação desses cards não dispara webhook. O [webhook](./webhook) de status é enviado normalmente quando o POS processa o card.
* Se o ERP responder com erro HTTP ou fora do contrato abaixo, a pesquisa falha e nenhum card é criado.
## Requisição enviada ao ERP [#requisição-enviada-ao-erp]
```bash
curl --request POST '' \
--header 'Content-Type: application/json' \
--header 'Authorization: ' \
--data '{
"search": "pedido 1234"
}'
```
| Campo | Descrição |
| -------- | -------------------------------------------- |
| `search` | Texto digitado pelo operador na lupa do POS. |
## Resposta esperada do ERP [#resposta-esperada-do-erp]
Responda com um **array** de cards, mesmo quando houver apenas um. Um array vazio indica que nada foi encontrado, e nenhum card é criado.
```json
[
{
"value": 10,
"payment_type": "PIX",
"installments": 1,
"charge_id": "019c967c-ff8e-7c83-94d1-df7eee6b5cbb",
"order_type": "NRM",
"extras": {
"Nome": "Cliente Exemplo"
},
"has_details": false
}
]
```
Cada item segue a estrutura de criação de [Card de pagamento](./card-pagamento#criar-pagamento), incluindo as [regras de pagamento](./card-pagamento#regras-de-pagamento). Apenas `value` é obrigatório.
Alguns campos são preenchidos pelo próprio Smart TEF e, se enviados, são substituídos:
| Campo | Valor usado |
| --------------- | ---------------------------------------------- |
| `cnpj` | CNPJ da loja que fez a pesquisa. |
| `store_id` | Loja que fez a pesquisa. |
| `serial_pos` | Serial do POS que fez a pesquisa. |
| `payment_value` | `0`. |
| `has_details` | `true`, salvo configuração específica da loja. |
# Webhook (/webhook)
Configure um webhook para receber atualizações de status sem depender apenas de consultas por polling.
O webhook é indicado para acompanhar eventos de pagamento e impressão. Para formulários, use a consulta do próprio formulário quando precisar confirmar preenchimento ou cancelamento.
## Configurar webhook da loja [#configurar-webhook-da-loja]
```http
POST https://api.smarttef.mobi/manager/store/update
```
Use o token da loja. Para configurar apenas o webhook, basta enviar `webhookUrl`; os demais dados cadastrais da loja não são necessários.
```json
{
"webhookUrl": {
"url": "https://erp.example.com/webhooks/smart-tef",
"authorization_token": "Bearer token-do-erp"
}
}
```
| Campo | Obrigatório | Descrição |
| -------------------------------- | ----------- | --------------------------------------------------------------------------------- |
| `webhookUrl.url` | Sim | URL que receberá os eventos de status. Com a URL vazia, nenhum webhook é enviado. |
| `webhookUrl.authorization_token` | Não | Valor enviado, sem alteração, no header `Authorization` do callback. |
## Quando o webhook é enviado [#quando-o-webhook-é-enviado]
O webhook é disparado quando o **POS** altera o status de um card. O payload traz o card completo com o status resultante.
**Pagamento**
| Ação no POS | `payment_status` enviado |
| ------------------------------------ | ------------------------------------------------- |
| Inicia o processamento do pagamento | `PROC_PAG` |
| Conclui o pagamento | `CNC` ou `PARTIAL_PAG`, conforme o status gravado |
| Rejeita o pagamento | `REJ_PAG` |
| Libera o card, que volta para a fila | `PDT` |
| Solicita estorno pelo POS | `SOL_EST` |
| Inicia o processamento do estorno | `PROC_EST` |
| Conclui o estorno | `EST` |
| Rejeita o estorno | `REJ_EST` |
**Impressão**
| Ação no POS | `print_status` enviado |
| ------------------- | ---------------------- |
| Inicia a impressão | `PROC` |
| Conclui a impressão | `IMP` |
| Rejeita a impressão | `REJ` |
Operações feitas pelo ERP (criação, cancelamento e solicitação de estorno) **não** disparam webhook, porque o próprio ERP já recebe o resultado na resposta da chamada. Cards criados pela [Lupa online](./lupa-online) também não geram webhook na criação, apenas quando o POS os processa.
O endpoint do parceiro deve responder com sucesso HTTP. Guarde o identificador do card recebido no payload para conciliar eventos duplicados ou reenviados.
## Exemplo de payload enviado para pagamento [#exemplo-de-payload-enviado-para-pagamento]
Quando um POS altera o estado de um card, o Smart TEF envia o JSON correspondente para o webhook configurado.
```json
{
"acquirer": null,
"acquirer_cnpj": null,
"autorization_code": null,
"batt_level": 58,
"card_brand": null,
"charge_id": "570",
"charging": false,
"cnpj": "22140418000160",
"conn_type": 1,
"controle_versao": "Versão 1.3.4",
"coupon": null,
"create_at": "2026-02-25T16:05:56.853Z",
"extras": {},
"fee_type": null,
"form_order": [],
"grouped_payments": [],
"has_details": false,
"installments": 1,
"location": {
"lat": "1231311",
"long": "1231313"
},
"min_installments": null,
"nsu_host": null,
"nsu_sitef": null,
"order_type": "NRM",
"package_name": null,
"payment_date": null,
"payment_extras": null,
"payment_identifier": "019c9631-91d1-72ca-9fdf-aed3a471b92b",
"payment_status": "PROC_PAG",
"payment_type": "OTHERS",
"payment_value": null,
"reason": null,
"refound_coupon": null,
"refund_autorization_code": null,
"refund_date": null,
"refund_serial_pos": null,
"refund_user_id": null,
"serial_pos": "6502T1",
"type": "PAYMENT",
"update_at": "2026-02-25T16:05:58.690Z",
"user_id": 24,
"value": "10"
}
```
> No card de pagamento, a propriedade type será sempre PAYMENT.
Os campos seguem a mesma estrutura descrita em [Card de pagamento](./card-pagamento#campos-de-retorno). Campos enviados pela adquirente podem permanecer `null` até a conclusão. O payload do webhook também inclui:
| Campo | Descrição |
| ------------------ | ----------------------------------------------------------------------------------------------------------- |
| `min_installments` | Menor quantidade de parcelas permitida, quando definida na criação. |
| `package_name` | Pacote do aplicativo Android que processou o card no POS. |
| `grouped_payments` | Cards originais que foram agrupados no POS para gerar este card. Lista vazia quando não houver agrupamento. |
| `form_order` | Formulário vinculado ao card. Lista vazia quando não houver. |
Lojas com [Múltiplos Pagamentos](https://doc.clickup.com/90171278926/d/h/2kza11je-2497/867432ab53765c8) habilitado também recebem `partial_payments` (lista dos pagamentos parciais) e `remaining_payment_amount` (valor que ainda falta pagar).
## Exemplo de payload enviado para impressão [#exemplo-de-payload-enviado-para-impressão]
```json
{
"cnpj": "22140418000160",
"create_at": "2026-02-25T16:13:46.286Z",
"file": "https://storage.example.com/smart-tef/019c9638-print.png",
"has_details": true,
"location": {
"lat": "12",
"long": "12"
},
"order_type": "CRD_UNICO",
"print_id": "460",
"print_identifier": "019c9638-bb85-7e8f-8a5a-6899ee9f6f9a",
"print_status": "PROC",
"reason": null,
"serial_pos": "6502T1",
"type": "PRINT",
"update_at": "2026-02-25T16:13:50.773Z",
"user_id": 24
}
```
> No card de impressão, a propriedade type será sempre PRINT.
Os campos seguem a mesma estrutura descrita em [Card de impressão](./card-impressao#campos-de-retorno).
## Reprocessar webhook [#reprocessar-webhook]
Para reenviar o webhook de um card, use o token da loja:
```http
POST https://api.smarttef.mobi/commands/webhook/send
```
```json
{
"identifier": "019c9631-91d1-72ca-9fdf-aed3a471b92b",
"type": "PAYMENT"
}
```
| Campo | Obrigatório | Descrição |
| ------------ | ----------- | --------------------------------------------------- |
| `identifier` | Sim | `payment_identifier` ou `print_identifier` do card. |
| `type` | Sim | `PAYMENT` ou `PRINT`. |
* O payload reenviado traz o **status atual** do card, não estados anteriores.
* A resposta de sucesso indica que o reenvio foi enfileirado, não que o seu endpoint recebeu o evento.
* Se a loja não tiver `webhookUrl.url` configurada, nada é enviado, mesmo com resposta de sucesso.
Use o reprocessamento quando o endpoint parceiro estiver indisponível, responder com erro ou precisar receber novamente o evento após correção operacional. Veja o contrato completo em [Reprocessar webhook da loja](/api-reference/webhooks/reprocessar-webhook-da-loja).
# API (/api-reference)
Esta área lista apenas endpoints voltados à integração externa.
Use os grupos do menu lateral para encontrar a operação pelo objetivo de negócio: pagamentos, impressões, formulários, consultas, loja, usuários, terminais, webhooks e integrador.
## Documentos públicos [#documentos-públicos]
| Documento | Público | Uso |
| ---------- | ------------------------------------ | ------------------------------------------------------------------------------------------ |
| ERP Loja | Loja, ERP ou sistema de retaguarda | Operações da loja: criar e consultar cards, gerenciar loja, usuários, terminais e webhook. |
| Integrador | Integradores e parceiros autorizados | Gestão de lojas vinculadas, emissão e revogação de token da loja. |
As rotas privadas de administração interna não fazem parte desta documentação.
## Convenções [#convenções]
* Envie `Authorization: Bearer ` nas rotas protegidas.
* Use o Gateway Token quando ele for exigido no ambiente de integração.
* Use os identificadores retornados pela API, como `payment_identifier`, `print_identifier` e `form_identifier`, para consultas e cancelamentos.
* Em erros de validação ou regra de negócio, confira `data.message` no corpo da resposta.
# Terminais (/api/terminais)
* [Listar terminais](/docs/api/terminais/listar-terminais)
* [Ativar terminal](/docs/api/terminais/ativar-terminal)
* [Desativar terminal](/docs/api/terminais/desativar-terminal)
* [Atualizar apelido do terminal](/docs/api/terminais/atualizar-apelido-do-terminal)
* [Bloquear terminal](/docs/api/terminais/bloquear-terminal)
* [Desbloquear terminal](/docs/api/terminais/desbloquear-terminal)
# Cancelar formulário pendente (/api-reference/formularios/cancelar-formulario-pendente)
# Consultar formulário (/api-reference/formularios/consultar-formulario)
# Criar formulário (/api-reference/formularios/criar-formulario)
# Formulários (/api-reference/formularios)
* [Criar formulário](/api-reference/formularios/criar-formulario)
* [Consultar formulário](/api-reference/formularios/consultar-formulario)
* [Cancelar formulário pendente](/api-reference/formularios/cancelar-formulario-pendente)
# Alterar configuração do integrador (/api-reference/integrador/alterar-configuracao-do-integrador)
# Ativar loja (/api-reference/integrador/ativar-loja)
# Bloquear loja (/api-reference/integrador/bloquear-loja)
# Desativar loja (/api-reference/integrador/desativar-loja)
# Desbloquear loja (/api-reference/integrador/desbloquear-loja)
# Consultar token da loja (/api-reference/integrador/gerar-token-da-loja)
# Integrador (/api-reference/integrador)
Use estes endpoints quando a integração atua como parceira responsável por lojas vinculadas. As operações abaixo exigem token de integrador e não devem ser chamadas com token operacional de loja.
## Operações disponíveis [#operações-disponíveis]
* [Ativar loja](/docs/api/integrador/ativar-loja)
* [Desativar loja](/docs/api/integrador/desativar-loja)
* [Reativar loja](/docs/api/integrador/reativar-loja)
* [Bloquear loja](/docs/api/integrador/bloquear-loja)
* [Desbloquear loja](/docs/api/integrador/desbloquear-loja)
* [Consultar token da loja](/docs/api/integrador/gerar-token-da-loja)
* [Revogar token da loja](/docs/api/integrador/revogar-token-da-loja)
* [Alterar configuração do integrador](/docs/api/integrador/alterar-configuracao-do-integrador)
* [Listar configurações do integrador](/docs/api/integrador/listar-configuracoes-do-integrador)
## Regras de uso [#regras-de-uso]
* O integrador precisa estar ativo para operar sobre lojas vinculadas.
* A consulta do token da loja deve ser tratada como operação sensível.
* Revogue o token da loja quando houver troca de credenciais, suspeita de vazamento ou encerramento da integração.
* Bloqueio, desbloqueio, desativação e reativação alteram a capacidade operacional da loja integrada.
# Listar configurações do integrador (/api-reference/integrador/listar-configuracoes-do-integrador)
# Reativar loja (/api-reference/integrador/reativar-loja)
# Revogar token da loja (/api-reference/integrador/revogar-token-da-loja)
# Alterar configuração da loja (/api-reference/loja/alterar-configuracao-da-loja)
# Atualizar loja (/api-reference/loja/atualizar-loja)
# Consultar loja (/api-reference/loja/consultar-loja)
# Loja (/api-reference/loja)
* [Consultar loja](/api-reference/loja/consultar-loja)
* [Atualizar loja](/api-reference/loja/atualizar-loja)
* [Alterar configuração da loja](/api-reference/loja/alterar-configuracao-da-loja)
* [Listar configurações da loja](/api-reference/loja/listar-configuracoes-da-loja)
# Listar configurações da loja (/api-reference/loja/listar-configuracoes-da-loja)
# Anonimizar pagamentos (/api-reference/pagamentos/anonimizar-pagamentos)
# Cancelar pagamento pendente (/api-reference/pagamentos/cancelar-pagamento-pendente)
# Consultar pagamento (/api-reference/pagamentos/consultar-pagamento)
# Criar pagamento (/api-reference/pagamentos/criar-pagamento)
# Pagamentos (/api-reference/pagamentos)
* [Criar pagamento](/api-reference/pagamentos/criar-pagamento)
* [Consultar pagamento](/api-reference/pagamentos/consultar-pagamento)
* [Listar pagamentos](/api-reference/pagamentos/listar-pagamentos)
* [Cancelar pagamento pendente](/api-reference/pagamentos/cancelar-pagamento-pendente)
* [Solicitar estorno](/api-reference/pagamentos/solicitar-estorno)
* [Anonimizar pagamentos](/api-reference/pagamentos/anonimizar-pagamentos)
# Listar pagamentos (/api-reference/pagamentos/listar-pagamentos)
# Solicitar estorno (/api-reference/pagamentos/solicitar-estorno)
# Ativar terminal (/api-reference/terminais/ativar-terminal)
# Atualizar apelido do terminal (/api-reference/terminais/atualizar-apelido-do-terminal)
# Bloquear terminal (/api-reference/terminais/bloquear-terminal)
# Desativar terminal (/api-reference/terminais/desativar-terminal)
# Desbloquear terminal (/api-reference/terminais/desbloquear-terminal)
# Terminais (/api-reference/terminais)
* [Listar terminais](/api-reference/terminais/listar-terminais)
* [Atualizar apelido do terminal](/api-reference/terminais/atualizar-apelido-do-terminal)
* [Bloquear terminal](/api-reference/terminais/bloquear-terminal)
* [Desbloquear terminal](/api-reference/terminais/desbloquear-terminal)
# Listar terminais (/api-reference/terminais/listar-terminais)
# Alterar senha de usuário (/api-reference/usuarios/alterar-senha-de-usuario)
# Alterar senha POS de usuário (/api-reference/usuarios/alterar-senha-pos-de-usuario)
# Atualizar usuário (/api-reference/usuarios/atualizar-usuario)
# Bloquear usuário (/api-reference/usuarios/bloquear-usuario)
# Configurar MFA (/api-reference/usuarios/configurar-mfa)
# Criar usuário (/api-reference/usuarios/criar-usuario)
# Usuários (/api-reference/usuarios)
* [Listar usuários](/api-reference/usuarios/listar-usuarios)
* [Criar usuário](/api-reference/usuarios/criar-usuario)
* [Atualizar usuário](/api-reference/usuarios/atualizar-usuario)
* [Bloquear usuário](/api-reference/usuarios/bloquear-usuario)
* [Alterar senha de usuário](/api-reference/usuarios/alterar-senha-de-usuario)
* [Alterar senha POS de usuário](/api-reference/usuarios/alterar-senha-pos-de-usuario)
* [Configurar MFA](/api-reference/usuarios/configurar-mfa)
* [Validar MFA](/api-reference/usuarios/validar-mfa)
# Listar usuários (/api-reference/usuarios/listar-usuarios)
# Validar MFA (/api-reference/usuarios/validar-mfa)
# Webhooks (/api-reference/webhooks)
* [Reprocessar webhook da loja](/api-reference/webhooks/reprocessar-webhook-da-loja)
# Reprocessar webhook da loja (/api-reference/webhooks/reprocessar-webhook-da-loja)
# Cancelar impressão pendente (/api-reference/impressoes/cancelar-impressao-pendente)
# Consultar impressão (/api-reference/impressoes/consultar-impressao)
# Criar impressão (/api-reference/impressoes/criar-impressao)
# Impressões (/api-reference/impressoes)
* [Criar impressão](/api-reference/impressoes/criar-impressao)
* [Consultar impressão](/api-reference/impressoes/consultar-impressao)
* [Cancelar impressão pendente](/api-reference/impressoes/cancelar-impressao-pendente)