Pular para o conteúdo principal

Transações

Use esta referência para conciliação, extrato, estorno e baixa. Uma transação é identificada de forma estável pelo par uid + createdAt; o campo idTransaction é uma identificação derivada desse par, conveniente para o parceiro.

Resumo

MétodoEndpointFinalidade
GET/places/{idPlace}/transactions?startAt={date}&finishAt={date}Consultar um período
GET/places/{idPlace}/transactions/users?...Consultar por consumidor
GET/places/{idPlace}/transactions/users/{uid}/date/{createdAt}Consultar uma transação
DELETE/places/{idPlace}/transactions/users/{uid}/date/{createdAt}Estornar uma transação
GET/places/{idPlace}/transactions/unacknowledgedListar transações não confirmadas
PUT/places/{idPlace}/transactions/users/{uid}/date/{createdAt}/acknowledgeConfirmar processamento

Erros comuns

StatusMensagemQuando acontece
403Not authorized to interact with this place (idPlace)A chave não tem acesso a esse estabelecimento

Modelo de transação

É o objeto devolvido por todos os endpoints de consulta desta página e também pelo webhook de consumo.

CampoTipoDescrição
idTransactionstringIdentificador único. Use para não lançar duas vezes
uidstringConsumidor na Enjoy.it. Com createdAt, identifica a transação
createdAtstringData e hora, em ISO 8601
totalnumberValor a lançar, em reais. Já vem calculado
productstringDescrição do item
skustringCódigo do produto. Pode carregar o código do seu catálogo
mlServednumberVolume servido. Ausente em produtos e recargas
sellingPricenumberPreço por mililitro no consumo de chope
quantitynumberQuantidade, em produtos lançados pelo parceiro
typestringD consumo, C recarga, P produto do parceiro
reversedbooleanSe true, foi estornada e não deve ser cobrada
bonusnumberParte do valor paga com crédito de cortesia
paymentMethodstringMeio de pagamento, em recargas
billingstringInformação de faturamento
acknowledgedbooleanSe você já deu baixa nesta transação
acknowledgedAtstringData da baixa, em ISO 8601
acknowledgeReferencestringReferência do lançamento no seu sistema, enviada na baixa
idTapstringTorneira onde o consumo aconteceu
idTabstringNúmero da comanda
rfidstringChip da credencial
idPlacestringEstabelecimento
consumerReferencestringCódigo do consumidor no seu sistema
transactionReferencestringReferência enviada por você ao registrar
planstringprepaid ou postpaid
documentstringDocumento do consumidor
categorystringCategoria, em produtos do parceiro
{
"product": "IPA da Casa",
"total": 12.8,
"sellingPrice": 0.04,
"idTap": "T-01",
"consumerReference": "cliente-123",
"idTab": "006",
"rfid": "4623227593",
"mlServed": 320,
"idPlace": "P-EXEMPLO",
"sku": "IPA-001",
"plan": "postpaid",
"createdAt": "2026-08-02T19:43:29.416Z",
"uid": "5FS6DS0BDERIWG9QL6ojfuLedg23",
"idTransaction": "980a69f4-d629-5571-8a9f-99aa0293e4d6",
"type": "D",
"reversed": false,
"acknowledged": false
}

Consultar por período

Retorna todos os consumos do estabelecimento em um intervalo, agrupados por consumidor. É o endpoint usado em fechamento de caixa e emissão de cupons em lote.

GET /places/{idPlace}/transactions?startAt=2026-08-02T00:00:00.000Z&finishAt=2026-08-02T23:59:59.999Z

Query string

ParâmetroTipoObrigatórioDescrição
startAtstringSimInício do período em ISO 8601, inclusivo
finishAtstringSimFim do período em ISO 8601, inclusivo

Resposta 200

Uma lista de extratos, um por consumidor. Cada extrato tem três partes:

CampoTipoDescrição
customerobjetoDados do consumidor: uid, name, document, cellphone, email, gender, birthdate, region, consumerReference e marketing
tabobjetoEstado da credencial: balance, plan, hasConsumptionLimit, idTab, rfid, idPlace
transactionslistaTransações no modelo acima, ordenadas por createdAt

O objeto marketing dentro de customer traz acceptMessages e acceptEmails (boolean), que indicam os canais autorizados pelo consumidor.

[
{
"customer": {
"uid": "5FS6DS0BDERIWG9QL6ojfuLedg23",
"name": "Maria Silva",
"consumerReference": "cliente-123",
"marketing": { "acceptMessages": true, "acceptEmails": false }
},
"tab": {
"balance": 42.5,
"plan": "prepaid",
"hasConsumptionLimit": true,
"idTab": "006",
"rfid": "4623227593",
"idPlace": "P-PDV"
},
"transactions": []
}
]

Erros

StatusMensagemQuando acontece
400Missing search params (startAt | finishAt)Faltou um dos dois, ou a data não é válida

Consultar por consumidor

Retorna o extrato de um consumidor, localizado por comanda, telefone, referência ou RFID.

GET /places/{idPlace}/transactions/users?method=tab&idTab=006
GET /places/{idPlace}/transactions/users?method=phone&phone=%2B5511999999999
GET /places/{idPlace}/transactions/users?method=reference&reference=cliente-123
GET /places/{idPlace}/transactions/users?rfid=4623227593

Query string

ParâmetroTipoObrigatórioDescrição
methodstringCondicionaltab, phone ou reference. Omita para buscar por rfid
idTabstringCondicionalNúmero da comanda, quando method=tab
phonestringCondicionalTelefone, quando method=phone. Codifique o + como %2B
referencestringCondicionalReferência do consumidor, quando method=reference
rfidstringCondicionalChip, quando nenhum method for informado
startAtstringNãoInício do período em ISO 8601
finishAtstringNãoFim do período em ISO 8601

startAt e finishAt só têm efeito quando enviados juntos.

Resposta 200

Um extrato, no mesmo formato de Consultar por período — com customer, tab e transactions.

O formato aqui é diferente dos endpoints por credencial

GET .../tabs/{idTab}/transactions, .../rfid/{rfid}/transactions e .../customers/{reference}/transactions devolvem apenas a lista de transações.

Este endpoint devolve o objeto de extrato, com a lista dentro de transactions. Se você trocar um pelo outro, o parser quebra.

Só os erros comuns.

Consultar uma transação

Retorna um consumo específico.

GET /places/{idPlace}/transactions/users/{uid}/date/{createdAt}

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
uidstringSimConsumidor na Enjoy.it
createdAtstringSimData da transação em ISO 8601. Codifique na URL

Resposta 200

Uma transação no modelo acima.

Erros

StatusMensagemQuando acontece
404Transaction not found!Não existe, é de outro estabelecimento, ou não é um consumo de chope
informação

Este endpoint devolve apenas transações de consumo (type: "D"). Recargas e produtos do parceiro respondem 404 mesmo existindo — para vê-los, use os endpoints de extrato.

Estornar uma transação

Cancela um lançamento, devolvendo o valor ao saldo do consumidor.

DELETE /places/{idPlace}/transactions/users/{uid}/date/{createdAt}

Parâmetros de caminho

ParâmetroTipoObrigatórioDescrição
uidstringSimConsumidor na Enjoy.it
createdAtstringSimData da transação em ISO 8601. Codifique na URL

Não possui corpo.

Resposta 200

Corpo vazio.

{}
aviso

O estorno é uma operação financeira. Depois de receber sucesso, não repita a chamada; em caso de timeout, consulte a transação e confira o campo reversed antes de tentar de novo.

Só os erros comuns.

Listar transações não confirmadas

Retorna o que ainda não recebeu baixa. É o caminho para recuperar o que não foi processado, e também uma forma de importar por varredura em vez de consultar cliente a cliente.

GET /places/{idPlace}/transactions/unacknowledged?startAt=2026-08-02T00:00:00.000Z&finishAt=2026-08-02T23:59:59.999Z&type=D&limit=100

Query string

ParâmetroTipoObrigatórioDescrição
startAtstringNãoInício do período em ISO 8601. Padrão: três dias atrás
finishAtstringNãoFim do período em ISO 8601. Padrão: agora
typestringNãoFiltra o tipo: D, C ou P
limitnumberNãoAtiva a paginação e define o tamanho da página
cursorstringNãoCursor devolvido pela página anterior

Resposta 200

O formato muda conforme você use limit
ChamadaResposta
Sem limitUma lista de transações, direto
Com limitUm objeto com items, cursor, hasMore e count

Se o seu código sempre espera uma lista, adicionar limit depois vai quebrá-lo.

Campos da resposta paginada:

CampoTipoDescrição
itemslistaTransações no modelo acima
countnumberQuantidade nesta página
hasMorebooleanSe há mais páginas
cursorstringCursor da próxima página. Ausente quando hasMore é false
{
"items": [],
"count": 0,
"hasMore": false
}

Erros

StatusMensagemQuando acontece
400Invalid startAt datestartAt não é uma data válida
400Invalid finishAt datefinishAt não é uma data válida

Confirmar processamento

Dá baixa em uma transação já lançada no seu sistema, tirando-a da lista de não confirmadas.

PUT /places/{idPlace}/transactions/users/{uid}/date/{createdAt}/acknowledge

Corpo da requisição

CampoTipoObrigatórioDescrição
uidstringSimConsumidor na Enjoy.it
createdAtstringSimData da transação em ISO 8601
acknowledgeReferencestringNãoReferência do registro criado no seu sistema. Volta nas consultas seguintes
{
"uid": "5FS6DS0BDERIWG9QL6ojfuLedg23",
"createdAt": "2026-08-02T19:43:29.416Z",
"acknowledgeReference": "lancamento-pdv-55421"
}
O que vale é o corpo, não o caminho

uid e createdAt aparecem também na URL, mas a operação usa os valores do corpo. Se os dois divergirem, a baixa é aplicada no que veio no JSON — mantenha-os iguais para não dar baixa na transação errada.

Resposta 200

Corpo vazio.

{}

Erros

StatusMensagemQuando acontece
400Missing uiduid ausente no corpo
400Invalid createdAt datecreatedAt ausente ou não é uma data válida
aviso

Só confirme depois que a transação estiver persistida com sucesso no seu sistema. A confirmação a remove das próximas consultas de pendências, e uma baixa dada cedo demais esconde um consumo que nunca foi lançado.

Quem recebe por webhook não precisa chamar este endpoint: responder com sucesso à notificação já dá a baixa. Ver Receber os consumos.