SuportePainel
Recursos da API (ERP Loja)

Formulários

Criação, consulta e cancelamento de formulários de coleta.

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 em vez de usar esta rota.

Headers

NomeDescriçãoValor
AuthorizationToken JWT da loja.Bearer {token}
ocp-apim-subscription-keyGateway Token recebido na criação da loja.{subscription-key}
Content-TypeFormato do corpo da requisição.application/json

Mais detalhes sobre os tokens em Autenticação.

Criar formulário

POST https://api.smarttef.mobi/commands/form/create
{
  "order_type": "NRM",
  "form_name": "cadastro-cliente",
  "extras": {
    "CNPJ": "12612554000131"
  },
  "form": [
    {
      "field": "Email",
      "type": "EMAIL",
      "needed": true
    },
    {
      "field": "Observação",
      "type": "TEXTO"
    }
  ]
}
CampoObrigatórioDescrição
cnpjNãoCNPJ da loja, somente dígitos. Quando omitido, a API usa o CNPJ do token. Quando enviado, precisa ser igual ao CNPJ do token.
order_typeNãoNRM deixa o card na lista geral e CRD_UNICO abre direto no destino.
serial_posCondicionalSerial do POS que receberá o formulário quando order_type for CRD_UNICO. Não pode ser enviado junto com user_id.
user_idCondicionalOperador que receberá o formulário quando order_type for CRD_UNICO. Não pode ser enviado junto com serial_pos.
form_nameNãoNome de referência do formulário.
fill_out_typeNãoREQUEST_COMUM_FORM ou REQUEST_MANDATORY_FORM.
extrasNãoDados complementares enviados pelo ERP.
has_detailsNãoPermite abrir a tela de detalhes do card.
form[].fieldSimNome do campo exibido ao operador.
form[].valueNãoValor inicial do campo. O POS devolve o valor preenchido.
form[].typeNãoTEXTO, NUMBER, DATA, CPF, CNPJ, CEP ou EMAIL. Padrão TEXTO.
form[].neededNãoTorna o preenchimento do campo obrigatório. Padrão false.

Regras de formulário

TemaRegra
DirecionamentoPara CRD_UNICO, envie exatamente um entre user_id e serial_pos. Os dois nunca podem ser enviados juntos.
ObrigatoriedadeBasta 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.
Duplicidadeform_name precisa ser único entre os formulários da loja que estejam em PDT ou PROC.
ConclusãoCampos obrigatórios devem retornar preenchidos como string não vazia.

Retorno da criação

{
  "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"
}
CampoDescrição
form_identifierIdentificador único do formulário, gerado pela API.
form_statusStatus atual do card.
order_typeTipo do card, único ou normal.
form_urlURL do JSON do formulário armazenado.
form_nameNome de referência informado na criação.
fill_out_typeREQUEST_COMUM_FORM ou REQUEST_MANDATORY_FORM.

Veja o contrato completo em Criar formulário.

Consultar formulário

POST https://api.smarttef.mobi/pooling/form/get
{
  "form_identifier": "01970d18-aac3-7ff4-ba76-78e785409d09"
}
CampoTipoObrigatórioDescrição
form_identifierstringSimIdentificador 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

{
  "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

CampoDescrição
form_identifierIdentificador único do formulário.
cnpjCNPJ da loja.
create_atData de criação, no fuso de São Paulo.
update_atData da última atualização, no fuso de São Paulo.
order_typeCRD_UNICO ou NRM.
form_statusStatus atual do card.
serial_posSerial do POS de destino.
user_idOperador de destino.
typeTipo do card. Para formulário, será FORM.
controle_versaoVersão do app Smart TEF instalada no terminal que atendeu o card.
conn_typeTipo de conexão do terminal no momento da atualização.
batt_levelPercentual de bateria do terminal.
chargingIndica se o terminal estava no carregador.
location.latLatitude do terminal.
location.longLongitude do terminal.
reasonMotivo da rejeição informado pelo POS, quando houver.
form_nameNome de referência do formulário.
order_targetDestino atual do card: USR, POS ou NONE.
package_namePacote do app que processou o formulário.
store_idIdentificador interno da loja.
form_urlURL do JSON com os campos e as respostas do formulário.
fill_out_typeREQUEST_COMUM_FORM ou REQUEST_MANDATORY_FORM.
agregateVínculo do formulário: NONE (independente), PAYMENT ou PRINT.
order_target_initialDestino original do card: USR, POS ou NONE.
serial_pos_initialDestino original em POS.
user_id_initialDestino original em operador.
extrasCampos extras enviados pelo ERP.
has_detailsIndica se a tela de detalhes pode ser aberta.

Veja o contrato completo em Consultar formulário.

Cancelar formulário pendente

POST https://api.smarttef.mobi/commands/form/status/cancelar
{
  "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

{
  "form_identifier": "01970d18-aac3-7ff4-ba76-78e785409d09",
  "form_status": "CAN_ERP",
  "order_type": "NRM"
}
CampoDescrição
form_identifierIdentificador único do formulário.
form_statusStatus atual do card.
order_typeTipo do card, único ou normal.

Veja o contrato completo em Cancelar formulário pendente.