Documentação da API

Testar sem dinheiro real

O sandbox usa a mesma URL e as mesmas rotas da produção. O que muda é a chave: com uw_test_ as cobranças são de teste, não chamam o provedor de pagamento e nunca movimentam saldo.

  • Criar: as rotas POST /payments/{metodo} devolvem uma cobrança de teste pendente.
  • Simular: POST /developer/payments/{ref}/simulate muda para paid, failed, expired ou cancelled e dispara os webhooks com "livemode": false.
  • Saldo: GET /developer/balance devolve zeros no sandbox.
  • Estornos pela API só existem em produção (422 sandbox_refund_unsupported).
  • A conta precisa estar aprovada também para o sandbox.
  • Webhooks de sandbox vão para a URL de sandbox cadastrada (ou para a de produção, se não houver).

POST /developer/payments/{ref}/simulate

Simular status (sandbox)

escopo payments:write aceita Idempotency-Key

Muda um pagamento de teste pendente para paid, failed, expired ou cancelled e dispara os webhooks correspondentes. Só funciona com chave uw_test_.

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, order_id ou pt_...
CampoTipoDescrição
status obrigatóriostringpaid, failed, expired ou cancelled.
curl -X POST https://api.uneway.pro/api/v1/developer/payments/pedido-2001/simulate \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"status": "paid"}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "payment",
    "id": 1842,
    "order_id": "pedido-2001",
    "status": "paid",
    "method": "europix",
    "amount": "49.90",
    "fee_amount": "1.50",
    "net_amount": "48.40",
    "currency": "EUR",
    "description": "Pedido 2001",
    "customer": {
      "name": "Ana Souza",
      "email": "ana@exemplo.com"
    },
    "refunded": false,
    "refund_amount": null,
    "paid_at": "2026-10-02T14:03:11+00:00",
    "expired_at": null,
    "refunded_at": null,
    "created_at": "2026-10-02T14:01:52+00:00",
    "metadata": {},
    "livemode": false,
    "public_token": "pt_8bZ2mQ..."
  }
}

Erros específicos: live_simulation_forbidden, invalid_status, payment_not_found