REST API Imagina: apresentação e âmbito
V1V2

API REST ImaCash: guia de integração

Um contrato comum para qualquer POS, ERP ou programa de gestão. Mantenha V1 e utilize V2 opcionalmente para distinguir um pedido de cancelamento da sua confirmação.

A API num relance

Escolha a operação, consulte o resultado e abra o exemplo. O guia completo continua abaixo.

Guia detalhado ↓
https://restapi.imaginaits.com/x-auth-token: YOUR_TOKEN
MétodoEndpoint e exemploFinalidadeO que verificar
POST/puttransaction.php
Ver exemplo cURL
curl --request POST 'https://restapi.imaginaits.com/puttransaction.php' \
 --header 'x-auth-token: YOUR_TOKEN' \
 --header 'Content-Type: application/json' \
 --data '{"transaction_id":"TX-DEMO-20261029-001","amount":2100,"user":"OPERATOR-01","terminal":"DESK-01","method":1}'
Criar um pagamento ou reembolsoVer detalhes →status=ok regista a transação; consulte depois o estado.
GET/statustransaction.php
Ver exemplo cURL
curl 'https://restapi.imaginaits.com/statustransaction.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'
Consultar uma transaçãoVer detalhes →PENDING, PAID, CANCELLED ou ERROR no Cloud.
GET/listtransactions.php
Ver exemplo cURL
curl 'https://restapi.imaginaits.com/listtransactions.php?status=PENDING' --header 'x-auth-token: YOUR_TOKEN'
Listar transaçõesVer detalhes →Filtre por estado e continue com o cursor devolvido.
GET/transactioncashflow.php
Ver exemplo cURL
curl 'https://restapi.imaginaits.com/transactioncashflow.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'
Consultar entradas, saídas e discriminaçãoVer detalhes →Montantes e denominações comunicados para a transação.
GET/inventory.php
Ver exemplo cURL
curl 'https://restapi.imaginaits.com/inventory.php' --header 'x-auth-token: YOUR_TOKEN'
Consultar o inventário recebidoVer detalhes →currency, recyclable, stacker e updated_at, quando disponíveis.
POST/canceltransaction.php
Ver exemplo cURL
curl --request POST 'https://restapi.imaginaits.com/canceltransaction.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'
Cancelamento anterior compatívelVer detalhes →ok ou CANCELLED não confirma, por si só, o cancelamento na máquina.
GET/v2.php?action=capabilities
Ver exemplo cURL
curl 'https://restapi.imaginaits.com/v2.php?action=capabilities' --header 'x-auth-token: YOUR_TOKEN'
Consultar as funções disponíveisVer detalhes →cancellation_tracking indica se o acompanhamento está ativo.
GET/v2.php?action=transaction
Ver exemplo cURL
curl 'https://restapi.imaginaits.com/v2.php?action=transaction&transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'
Consultar transação e acompanhamentoVer detalhes →Separa cloud_status de execution_confirmation.
GET/v2.php?action=operation
Ver exemplo cURL
curl 'https://restapi.imaginaits.com/v2.php?action=operation&operation_id=OPERATION_ID_FROM_RESPONSE' --header 'x-auth-token: YOUR_TOKEN'
Consultar o pedido de cancelamentoVer detalhes →confirmed, execution_state, cash_flow e requires_review.

Fluxo básico

  1. Criar o pagamentoamount: 2100 = 21,00 EUR. Guarde transaction_id.
  2. Consultar o resultadoConsulte a mesma referência; HTTP 200 não basta.
  3. Cancelar se ainda estiver pendenteCancelTransactionV2 devolve operation_id; consulte até confirmed=true.

202 = pedido registado. CANCELLED em V1 = estado Cloud. confirmed=true com CONFIRMED_BY_IMACASH = relatório final completo do ImaCash.

Compatibilidade

POST /v2.php?action=cancel continua disponível com o mesmo contrato. Nas novas integrações utilize CancelTransactionV2: /canceltransactionv2.php. As integrações anteriores mantêm a compatibilidade.

Antes de começar

Selecione REST API Imagina em Configuração > Integração do ImaCash. Cloud tem de autorizar a licença para REST e aceitar a manutenção ou o período de teste. Copie o token dessa licença, nunca a palavra-passe do administrador nem o segredo interno do conector. Se não aparecer, anote a versão e a referência numérica da licença e contacte o suporte; não crie outra venda ou demo para diagnosticar.

Ligação, token e âmbito

A URL base é https://restapi.imaginaits.com/. Envie x-auth-token em cada pedido HTTPS. Cada token limita as operações à sua licença. Não o inclua em URLs, capturas, registos, repositórios ou correio. Os exemplos usam YOUR_TOKEN e referências fictícias. A documentação não executa operações.

Referências e valores

transaction_id identifica de forma estável uma operação do seu programa e licença: reutilize exatamente o mesmo valor após um timeout. user e terminal são referências comerciais do operador e posto, não credenciais nem permissões ImaCash. amount usa unidades menores: 2100 representa 21,00 EUR e -2100 uma devolução de 21,00 EUR. method=1 significa numerário e method=0 cartão; registar cartão não confirma pagamento bancário.

Criar e consultar uma cobrança

Envie JSON com transaction_id, amount, user, terminal e method. status=ok confirma o registo em Cloud, não a cobrança concluída. Consulte a mesma referência e verifique HTTP e JSON. Um 409 ao criar pode indicar referência existente: consulte-a e compare os dados, sem enviar outro ID.

Exemplo · POST /puttransaction.php
curl --request POST 'https://restapi.imaginaits.com/puttransaction.php' \
 --header 'x-auth-token: YOUR_TOKEN' \
 --header 'Content-Type: application/json' \
 --data '{"transaction_id":"TX-DEMO-20261029-001","amount":2100,"user":"OPERATOR-01","terminal":"DESK-01","method":1}'
Exemplo · GET /statustransaction.php
curl 'https://restapi.imaginaits.com/statustransaction.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'
Exemplo · GET /transactioncashflow.php
curl 'https://restapi.imaginaits.com/transactioncashflow.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'

Cancelamento compatível V1

V1 conserva POST /canceltransaction.php com transaction_id na query ou formulário, não em JSON. A resposta ok e o estado CANCELLED descrevem Cloud, sem confirmar a máquina. Algumas rejeições devolvem HTTP 200 com status=error. Consultar statustransaction ou transactioncashflow não transforma essa marca em prova física. Se já entrou dinheiro, ImaCash pode adiar o cancelamento e exigir a autorização local configurada.

Exemplo · POST /canceltransaction.php
curl --request POST 'https://restapi.imaginaits.com/canceltransaction.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'

Acompanhamento V2

Verifique cancellation_tracking nas capacidades. Envie JSON com Idempotency-Key, guarde operation_id e consulte a cada dois segundos, respeitando Retry-After. HTTP 202 e REQUESTED apenas confirmam o registo. Só confirmed=true com CONFIRMED_BY_IMACASH indica um relatório final autenticado de ImaCash com conclusão, moeda e entradas/saídas completas e iguais. Não é certificação independente do equipamento. Um token de integrador, progresso ou estado Cloud não bastam.

Estados do acompanhamento
execution_stateSignificado e ação
REQUESTEDPedido registado em Cloud; falta relatório ImaCash.
CONFIRMED_BY_IMACASHImaCash comunica cancelamento com conclusão e fluxos completos coerentes.
REJECTED_ALREADY_PAIDImaCash comunica venda paga; cancelamento não confirmado.
REPORTED_UNVERIFIEDRelatório incompleto; não considerar confirmado.
REVIEW_REQUIREDResultado contraditório ou erro; requer revisão local e suporte.
Exemplo · GET /v2.php?action=capabilities
curl 'https://restapi.imaginaits.com/v2.php?action=capabilities' --header 'x-auth-token: YOUR_TOKEN'
Exemplo · POST /canceltransactionv2.php
curl --request POST 'https://restapi.imaginaits.com/canceltransactionv2.php' \
 --header 'x-auth-token: YOUR_TOKEN' \
 --header 'Content-Type: application/json' \
 --header 'Idempotency-Key: cancel-DEMO-20261029-001' \
 --header 'X-Request-ID: request-DEMO-001' \
 --data '{"transaction_id":"TX-DEMO-20261029-001"}'
Exemplo · HTTP 202
{
 "status": "ok",
 "api_version": "2.0",
 "request_id": "request-DEMO-001",
 "data": {
 "operation_id": "0123456789abcdef0123456789abcdef",
 "transaction_id": "TX-DEMO-20261029-001",
 "execution_state": "REQUESTED",
 "confirmed": false,
 "confirmation_source": null,
 "reported_state": null,
 "requested_at_utc": "2026-10-29 09:00:00.000000",
 "reported_at_utc": null,
 "cash_flow": {
 "received_minor": null,
 "returned_minor": null,
 "currency": null
 },
 "requires_review": false
 }
}
Exemplo · GET /v2.php?action=operation
curl 'https://restapi.imaginaits.com/v2.php?action=operation&operation_id=OPERATION_ID_FROM_RESPONSE' --header 'x-auth-token: YOUR_TOKEN'
Exemplo · HTTP 200
{
 "status": "ok",
 "api_version": "2.0",
 "request_id": "request-DEMO-002",
 "data": {
 "operation_id": "0123456789abcdef0123456789abcdef",
 "transaction_id": "TX-DEMO-20261029-001",
 "execution_state": "CONFIRMED_BY_IMACASH",
 "confirmed": true,
 "confirmation_source": "imacash_report",
 "reported_state": "CANCELLED",
 "requested_at_utc": "2026-10-29 09:00:00.000000",
 "reported_at_utc": "2026-10-29 09:00:02.000000",
 "cash_flow": {
 "received_minor": 100,
 "returned_minor": 100,
 "currency": "EUR"
 },
 "requires_review": false
 }
}
Exemplo · GET /v2.php?action=transaction
curl 'https://restapi.imaginaits.com/v2.php?action=transaction&transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'

Reenvios, falhas de ligação e autorizações

Mantenha a mesma chave e referência ao reenviar V2 para recuperar o acompanhamento. A mesma chave para outra referência é rejeitada. Outra chave para uma venda com pedido existente também é rejeitada; consulte a venda para recuperar operation_id. Se ImaCash estiver fechado, não enviar relatório ou faltarem detalhes, fica sem confirmação. Após uma espera razoável, mostre revisão pendente e conserve a referência; não repita cobranças, devoluções ou reinícios. V2 conserva palavras-passe, permissões e proteções locais.

Devolver uma venda paga

Uma venda PAID não pode ser cancelada por este circuito. Crie uma devolução com referência própria e valor negativo, conservando a relação com a venda original no seu programa. O registo não confirma dinheiro entregue: aguarde ImaCash e verifique os valores. Não reutilize o ID da venda.

Exemplo · POST /puttransaction.php
curl --request POST 'https://restapi.imaginaits.com/puttransaction.php' \
 --header 'x-auth-token: YOUR_TOKEN' --header 'Content-Type: application/json' \
 --data '{"transaction_id":"REFUND-DEMO-20261029-001","amount":-2100,"user":"OPERATOR-01","terminal":"DESK-01","method":1}'

Erros e suporte

401: falta token. 403: token ou licença não autorizados, possivelmente REST ou manutenção. 404 V2: recurso ausente ou fora do âmbito. 409: conflito de chave, referência ou estado; leia error.code. 400: parâmetros ou JSON inválidos. 405: método incorreto. 413: corpo excessivo. 503: serviço ou acompanhamento indisponíveis, sem provar avaria da máquina. Timeout ou 5xx não provam que o pedido não chegou. Envie ao suporte request_id, operation_id, referência, hora e HTTP, sem credenciais.

Compatibilidade e limites publicados

Rotas, autenticação, campos e estados V1 mantêm-se. V2 adiciona uma rota sem migração obrigatória ou novos estados em transaction_status V1. *_at_utc usa UTC; created_at conserva o formato anterior. device_state=not_observed não significa máquina desligada. Não há comandos diretos ao dispositivo nem webhooks genéricos de saída: consulte capacidades. Valores ausentes são null, não zeros confirmados. Alguns clientes anteriores omitem valores zero no relatório: mesmo após a conclusão local, V2 mantém REPORTED_UNVERIFIED se faltar esse valor explícito.

Testar antes de produção

Num ambiente autorizado, teste criação, consulta, referência repetida, cancelamento antes/depois de inserir dinheiro, autorização local recusada, ImaCash sem ligação e perda de resposta. Não conclua cancelamento apenas por 200/202. Valide cada modelo e versão com o fornecedor; um exemplo HTTP não substitui o ensaio físico.

Exemplos para descarregar