Transações e estornos
Consulta as transações de pagamento da loja e devolve o dinheiro ao cliente, no todo ou em parte.
Toda tentativa de cobrança de um pedido vira uma transação de pagamento: ela guarda o valor, a forma de pagamento (PIX, boleto, cartão...), o estado e o identificador no gateway (a empresa que processa o pagamento). As rotas abaixo listam essas transações e permitem estornar.
Listar transações
Lista as transações de pagamento: cada tentativa de cobrança de um pedido (PIX, boleto, cartão...) e também cada estorno, que entra como uma linha própria. É o livro de caixa da loja com os gateways.
/api/v1/admin/paymentsAdminLista as transações de pagamento da loja
Autenticação: Authorization: Bearer <token> de um administrador com view_payments ou manage_payments (as escritas exigem manage_payments).
Parâmetros de consulta
order_iduuidstatusstringC, A, P, F, R, I). Palavras passam por um mapa genérico: completed, failed, pending, cancelled funcionam; paid vira A, não C.methodstringpix.pageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
curl "$BASE_URL/api/v1/admin/payments?order_id=a8a3c7a3-5f15-45a8-a385-4f20fbf8b722" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"transactions": [
{
"id": "baf48a29-9120-4729-93ef-3adc1738a6cc",
"tenant_id": "",
"order_id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
"payment_method_id": "343b4677-1d2f-4b70-83c0-34ce9416b31e",
"status": "C",
"amount": 22500,
"currency": "BRL",
"transaction_id": "pilot-75dee873b55ba257",
"gateway_response": {},
"created_at": "2026-10-11T02:56:38.031867Z",
"updated_at": "2026-10-11T02:56:38.031867Z",
"log_id": "baf48a29-9120-4729-93ef-3adc1738a6cc",
"amount_str": "225.00",
"timestamp": 1791687398
}
],
"total": 31,
"page": 1,
"per_page": 20,
"total_pages": 2
}Campos da resposta
transactionsarraytransactions[].iduuid{id} da rota de estorno.transactions[].tenant_idstringtransactions[].order_iduuidtransactions[].payment_method_iduuidtransactions[].statusstringCAPFRIC concluída, A aprovada/paga pelo gateway, P pendente, F falhou, R estornada, I cancelada.transactions[].amountintegertransactions[].currencystringBRL).transactions[].transaction_idstringtransactions[].gateway_responseobjecttransactions[].pix_codestringtransactions[].pix_qr_codestringtransactions[].boleto_urlstringtransactions[].boleto_barcodestringtransactions[].created_atstringtransactions[].updated_atstringcreated_at.transactions[].log_idstringid, repetida por conveniência.transactions[].amount_strstringamount como texto decimal ("225.00").transactions[].timestampintegercreated_at em segundos Unix.totalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido | {"error":"insufficient privileges","required":"view_payments"} |
| 500 | order_id que não é UUID ou falha na consulta | {"error":"failed to list transactions","detail":"..."} |
Estornar um pagamento
Pede ao gateway da forma de pagamento que devolva o dinheiro ao cliente e registra o estorno. O {id} é o da transação de pagamento (da lista acima), não o do pedido. Só transações concluídas ou aprovadas podem ser estornadas.
/api/v1/admin/payments/{id}/refundAdminEstorna, total ou parcialmente, uma transação de pagamento
Autenticação: Authorization: Bearer <token> de um administrador com view_payments ou manage_payments (as escritas exigem manage_payments).
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
amountintegerpadrão: 00 ou omitido devolve o que ainda pode ser devolvido da transação inteira. Maior que o saldo estornável é recusado.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/payments/d5ccd9e1-dd21-458c-90a5-4a7f3c2b9e10/refund" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"amount": 5000
}'Resposta
{
"message": "payment refunded"
}Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido | {"error":"insufficient privileges","required":"manage_payments"} |
| 400 | Corpo que não é JSON válido | {"error":"invalid request body","detail":"..."} |
| 500 | Qualquer recusa de regra de negócio, e falha do gateway (a causa está em detail) | {"error":"failed to refund payment","detail":"refund not sent to the gateway: refund amount 30000 exceeds transaction amount 22500"} |