Documentação da API

Todas as rotas

Todas as rotas disponíveis para chaves de API, lidas diretamente do código da API. Base: https://api.uneway.pro/api/v1. Especificação: openapi.yaml (OpenAPI 3.1).

Conta

GET /developer/me

Chave em uso

Devolve a conta, o ambiente (livemode) e os escopos da chave enviada. Use para testar a autenticação.

curl -X GET https://api.uneway.pro/api/v1/developer/me \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "api_key",
    "id": 7,
    "name": "Loja virtual",
    "masked_key": "uw_test_••••••••a1B2",
    "expires_at": null,
    "client_id": 42,
    "account_name": "Minha Loja",
    "livemode": false,
    "scopes": [
      "payments:read",
      "payments:write"
    ],
    "rate_limit_per_minute": 120
  }
}

Webhooks

GET /developer/events

Catálogo de eventos

Lista os tipos de evento que podem chegar no seu webhook.

curl -X GET https://api.uneway.pro/api/v1/developer/events \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": [
    {
      "type": "payment.paid"
    },
    {
      "type": "payment.refunded"
    }
  ]
}

Pagamentos

GET /developer/payments

Listar pagamentos

escopo payments:read

Pagamentos do ambiente da chave (a chave de sandbox só vê pagamentos de teste), do mais novo para o mais antigo.

ParâmetroOndeTipoDescrição
statusquerystringpending, paid, failed, expired, cancelled, refunded...
methodquerystringeuropix (Pix), mbway, multibanco.
order_idquerystringFiltra pelo seu order_id.
created_fromquerystring (data)Criados a partir de.
created_toquerystring (data)Criados até.
per_pagequeryintegerItens por página (1 a 100, padrão 25).
pagequeryintegerPágina (a partir de 1).
curl -X GET https://api.uneway.pro/api/v1/developer/payments \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

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..."
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "last_page": 1
  }
}

GET /developer/payments/{ref}

Consultar pagamento

escopo payments:read

Busca pelo id numérico, pelo seu order_id ou pelo token público (pt_...).

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, order_id ou pt_...
curl -X GET https://api.uneway.pro/api/v1/developer/payments/pedido-2001 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

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..."
  }
}

POST /payments/multibanco

Criar referência Multibanco

escopo payments:write aceita Idempotency-Key

Gera entidade e referência Multibanco (EUR) para pagamento no multibanco ou home banking.

CampoTipoDescrição
amount obrigatórionumberValor em EUR (mínimo 0,50).
order_idstringSeu identificador do pedido (letras, números, _ e -). Gerado se omitido; precisa ser único na sua conta.
customer_emailstringE-mail do pagador (o domínio precisa existir).
descriptionstringDescrição (até 1.000 caracteres).
currencystringEUR.
customer_namestringNome do pagador.
curl -X POST https://api.uneway.pro/api/v1/payments/multibanco \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"order_id": "pedido-2003", "amount": 120.0}'

Resposta (exemplo)

{
  "success": true,
  "entidade": "12345",
  "referencia": "123 456 789",
  "valor": 120.0,
  "payment": {
    "id": 1844,
    "order_id": "pedido-2003",
    "status": "pending"
  }
}

POST /payments/mbway

Criar cobrança MB WAY

escopo payments:write aceita Idempotency-Key

Envia o pedido para a app MB WAY do telefone informado (EUR). O cliente aprova na app; o resultado chega por webhook.

CampoTipoDescrição
amount obrigatórionumberValor em EUR (mínimo 0,51).
phone obrigatóriostringTelefone com 9 a 15 dígitos (ex.: 351912345678).
order_idstringSeu identificador do pedido (letras, números, _ e -). Gerado se omitido; precisa ser único na sua conta.
customer_emailstringE-mail do pagador (o domínio precisa existir).
descriptionstringDescrição (até 1.000 caracteres).
currencystringEUR.
merchant_namestringNome exibido na app (até 30 caracteres).
curl -X POST https://api.uneway.pro/api/v1/payments/mbway \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"order_id": "pedido-2002", "amount": 25.0, "phone": "351912345678"}'

Resposta (exemplo)

{
  "success": true,
  "status": "pending",
  "payment": {
    "id": 1843,
    "order_id": "pedido-2002",
    "status": "pending"
  }
}

POST /payments/europix

Criar cobrança Pix

escopo payments:write aceita Idempotency-Key

Cobrança Pix liquidada em euro: o cliente paga com Pix no app do banco e o valor entra no seu saldo em EUR. A resposta traz o QR Code (qr_code, imagem em base64) e o Pix copia e cola (string_pix). O método se chama europix na API. No sandbox vem só um string_pix de teste (sem QR Code).

CampoTipoDescrição
amount obrigatórionumberValor em EUR (1,00 a 100.000,00; até 2 casas).
order_idstringSeu identificador do pedido (letras, números, _ e -). Gerado se omitido; precisa ser único na sua conta.
customer_emailstringE-mail do pagador (o domínio precisa existir).
descriptionstringDescrição (até 1.000 caracteres).
customer_namestringNome do pagador.
customer_documentstringCPF ou CNPJ.
curl -X POST https://api.uneway.pro/api/v1/payments/europix \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"order_id": "pedido-2004", "amount": 80.0, "customer_email": "ana@exemplo.com"}'

Resposta (exemplo)

{
  "success": true,
  "status": "pending",
  "qr_code": "iVBORw0KG...",
  "string_pix": "00020126...",
  "payment": {
    "id": 1845,
    "order_id": "pedido-2004",
    "status": "pending"
  }
}

Estornos

POST /developer/payments/{ref}/refund

Estornar pagamento

escopo refunds:write aceita Idempotency-Key

Estorno total (sem amount) ou parcial. Só com chave de produção; o valor sai do seu saldo. Envie Idempotency-Key. Confira provider_refund.automatic: com a Eupago (MB WAY, Multibanco e Pix) é false, ou seja, a devolução ao pagador não é automática.

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, order_id ou pt_...
CampoTipoDescrição
amountnumberValor a estornar (omitido = total restante).
reasonstringMotivo (até 500 caracteres).
curl -X POST https://api.uneway.pro/api/v1/developer/payments/pedido-2001/refund \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"amount": 10.0, "reason": "Item fora de estoque"}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "payment",
    "id": 1842,
    "order_id": "pedido-2001",
    "status": "paid",
    "method": "mbway",
    "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": "10.00",
    "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": true,
    "public_token": "pt_8bZ2mQ..."
  },
  "provider_refund": {
    "automatic": false,
    "provider": "eupago",
    "message": "Estorno registrado e debitado do seu saldo. Este provedor não devolve o valor ao pagador pela API: a devolução não é automática, combine com o suporte da Uneway."
  }
}

Erros específicos: sandbox_refund_unsupported, refund_not_allowed, insufficient_balance_for_refund, payment_not_found

Sandbox

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

Saldo e saques

GET /developer/balance

Saldo

escopo balance:read

Saldo disponível para saque, a liberar (D+N), bloqueado e em reserva. Com chave de sandbox devolve zeros (pagamentos de teste não movimentam saldo).

ParâmetroOndeTipoDescrição
currencyquerystringMoeda ISO (padrão EUR).
curl -X GET https://api.uneway.pro/api/v1/developer/balance \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "balance",
    "livemode": true,
    "currency": "EUR",
    "available": "1250.40",
    "pending": "310.00",
    "blocked": "0.00",
    "reserve": "50.00",
    "pending_withdrawal": "0.00",
    "total": "1610.40",
    "next_maturity_date": "2026-10-06T12:00:00+00:00",
    "frozen": false
  }
}

GET /developer/withdrawals

Listar repasses

escopo withdrawals:read

Repasses (saques) da conta. Os saques são solicitados no painel; pela API você acompanha o status.

ParâmetroOndeTipoDescrição
statusquerystringpending, approved, processing, completed, failed, rejected, cancelled.
per_pagequeryintegerItens por página (1 a 100, padrão 25).
pagequeryintegerPágina (a partir de 1).
curl -X GET https://api.uneway.pro/api/v1/developer/withdrawals \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": [
    {
      "object": "withdrawal",
      "id": 311,
      "status": "completed",
      "amount": "500.00",
      "fee": "2.00",
      "net_amount": "498.00",
      "currency": "EUR",
      "failure_reason": null,
      "completed_at": "2026-10-01T10:20:00+00:00",
      "failed_at": null,
      "created_at": "2026-09-30T09:00:00+00:00"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "last_page": 1
  }
}

GET /developer/withdrawals/{id}

Consultar repasse

escopo withdrawals:read

ParâmetroOndeTipoDescrição
id obrigatóriocaminhointegerId do repasse.
curl -X GET https://api.uneway.pro/api/v1/developer/withdrawals/311 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "withdrawal",
    "id": 311,
    "status": "completed",
    "amount": "500.00",
    "fee": "2.00",
    "net_amount": "498.00",
    "currency": "EUR",
    "failure_reason": null,
    "completed_at": "2026-10-01T10:20:00+00:00",
    "failed_at": null,
    "created_at": "2026-09-30T09:00:00+00:00"
  }
}

Produtos

GET /developer/products

Listar produtos

escopo products:read

ParâmetroOndeTipoDescrição
searchquerystringBusca por nome, SKU ou código.
statusquerystringactive, inactive, archived ou all.
per_pagequeryintegerItens por página (1 a 100, padrão 25).
pagequeryintegerPágina (a partir de 1).
currencyquerystringEUR ou BRL.
curl -X GET https://api.uneway.pro/api/v1/developer/products \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": [
    {
      "id": 12,
      "object": "product",
      "name": "Camiseta preta",
      "description": null,
      "price": 89.9,
      "currency": "BRL",
      "image_url": null,
      "sku": "CAM-PRETA-M",
      "external_id": null,
      "active": true,
      "status": "active",
      "archived_at": null,
      "metadata": null,
      "created_at": "2026-10-02T12:00:00+00:00",
      "updated_at": "2026-10-02T12:00:00+00:00"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "last_page": 1
  }
}

GET /developer/products/{ref}

Consultar produto

escopo products:read

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, sku ou external_id.
curl -X GET https://api.uneway.pro/api/v1/developer/products/pedido-2001 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 12,
    "object": "product",
    "name": "Camiseta preta",
    "description": null,
    "price": 89.9,
    "currency": "BRL",
    "image_url": null,
    "sku": "CAM-PRETA-M",
    "external_id": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "metadata": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

POST /developer/products

Criar produto

escopo products:write aceita Idempotency-Key

CampoTipoDescrição
name obrigatóriostringNome (até 160 caracteres).
price obrigatórionumberPreço (0,50 a 999.999,99).
currency obrigatóriostringEUR ou BRL.
descriptionstringDescrição (até 2.000).
image_urlstringURL https da imagem.
skustringSKU único na sua conta.
external_idstringSeu identificador (único na conta).
activebooleanDisponível para venda.
metadataobjectAté 20 pares chave/valor.
curl -X POST https://api.uneway.pro/api/v1/developer/products \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"name": "Camiseta preta", "price": 89.9, "currency": "BRL", "sku": "CAM-PRETA-M"}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 12,
    "object": "product",
    "name": "Camiseta preta",
    "description": null,
    "price": 89.9,
    "currency": "BRL",
    "image_url": null,
    "sku": "CAM-PRETA-M",
    "external_id": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "metadata": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

PUT /developer/products/{ref}

Atualizar produto

escopo products:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, sku ou external_id.
CampoTipoDescrição
namestringNome (até 160 caracteres).
pricenumberPreço (0,50 a 999.999,99).
currencystringEUR ou BRL.
descriptionstringDescrição (até 2.000).
image_urlstringURL https da imagem.
skustringSKU único na sua conta.
external_idstringSeu identificador (único na conta).
activebooleanDisponível para venda.
metadataobjectAté 20 pares chave/valor.
curl -X PUT https://api.uneway.pro/api/v1/developer/products/pedido-2001 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"price": 79.9}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 12,
    "object": "product",
    "name": "Camiseta preta",
    "description": null,
    "price": 89.9,
    "currency": "BRL",
    "image_url": null,
    "sku": "CAM-PRETA-M",
    "external_id": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "metadata": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

PATCH /developer/products/{ref}

Atualizar produto (parcial)

escopo products:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, sku ou external_id.
CampoTipoDescrição
namestringNome (até 160 caracteres).
pricenumberPreço (0,50 a 999.999,99).
currencystringEUR ou BRL.
descriptionstringDescrição (até 2.000).
image_urlstringURL https da imagem.
skustringSKU único na sua conta.
external_idstringSeu identificador (único na conta).
activebooleanDisponível para venda.
metadataobjectAté 20 pares chave/valor.
curl -X PATCH https://api.uneway.pro/api/v1/developer/products/pedido-2001 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"active": false}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 12,
    "object": "product",
    "name": "Camiseta preta",
    "description": null,
    "price": 89.9,
    "currency": "BRL",
    "image_url": null,
    "sku": "CAM-PRETA-M",
    "external_id": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "metadata": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

POST /developer/products/{ref}/archive

Arquivar produto

escopo products:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, sku ou external_id.
curl -X POST https://api.uneway.pro/api/v1/developer/products/pedido-2001/archive \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 12,
    "object": "product",
    "name": "Camiseta preta",
    "description": null,
    "price": 89.9,
    "currency": "BRL",
    "image_url": null,
    "sku": "CAM-PRETA-M",
    "external_id": null,
    "active": false,
    "status": "archived",
    "archived_at": "2026-10-02T13:00:00+00:00",
    "metadata": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

POST /developer/products/{ref}/restore

Restaurar produto

escopo products:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid, sku ou external_id.
curl -X POST https://api.uneway.pro/api/v1/developer/products/pedido-2001/restore \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 12,
    "object": "product",
    "name": "Camiseta preta",
    "description": null,
    "price": 89.9,
    "currency": "BRL",
    "image_url": null,
    "sku": "CAM-PRETA-M",
    "external_id": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "metadata": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

Cupons

GET /developer/coupons

Listar cupons

escopo coupons:read

ParâmetroOndeTipoDescrição
searchquerystringBusca por nome, SKU ou código.
statusquerystringactive, inactive, archived ou all.
per_pagequeryintegerItens por página (1 a 100, padrão 25).
pagequeryintegerPágina (a partir de 1).
curl -X GET https://api.uneway.pro/api/v1/developer/coupons \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": [
    {
      "id": 5,
      "object": "coupon",
      "code": "BEMVINDO10",
      "description": "10% na primeira compra",
      "discount_type": "percentage",
      "discount_value": 10.0,
      "currency": null,
      "min_amount": null,
      "starts_at": null,
      "expires_at": "2026-12-31T23:59:59+00:00",
      "max_uses": 500,
      "uses_count": 42,
      "applies_to_methods": null,
      "applies_to_products": null,
      "active": true,
      "status": "active",
      "archived_at": null,
      "created_at": "2026-10-02T12:00:00+00:00",
      "updated_at": "2026-10-02T12:00:00+00:00"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "last_page": 1
  }
}

GET /developer/coupons/{ref}

Consultar cupom

escopo coupons:read

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid ou código.
curl -X GET https://api.uneway.pro/api/v1/developer/coupons/pedido-2001 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 5,
    "object": "coupon",
    "code": "BEMVINDO10",
    "description": "10% na primeira compra",
    "discount_type": "percentage",
    "discount_value": 10.0,
    "currency": null,
    "min_amount": null,
    "starts_at": null,
    "expires_at": "2026-12-31T23:59:59+00:00",
    "max_uses": 500,
    "uses_count": 42,
    "applies_to_methods": null,
    "applies_to_products": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

POST /developer/coupons

Criar cupom

escopo coupons:write aceita Idempotency-Key

CampoTipoDescrição
code obrigatóriostring3 a 40 letras, números, hífen ou sublinhado.
discount_type obrigatóriostringpercentage ou fixed.
discount_value obrigatórionumberPercentual ou valor fixo do desconto.
currencystringEUR ou BRL (obrigatório na prática para desconto fixo).
min_amountnumberValor mínimo do pedido.
starts_atstring (data)Início da validade.
expires_atstring (data)Fim da validade.
max_usesintegerLimite total de usos.
applies_to_methodsstring[]Restringe a métodos (europix, mbway...).
applies_to_productsinteger[]Restringe a produtos (ids).
descriptionstringDescrição interna.
activebooleanAtivo.
curl -X POST https://api.uneway.pro/api/v1/developer/coupons \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"code": "BEMVINDO10", "discount_type": "percentage", "discount_value": 10, "max_uses": 500}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 5,
    "object": "coupon",
    "code": "BEMVINDO10",
    "description": "10% na primeira compra",
    "discount_type": "percentage",
    "discount_value": 10.0,
    "currency": null,
    "min_amount": null,
    "starts_at": null,
    "expires_at": "2026-12-31T23:59:59+00:00",
    "max_uses": 500,
    "uses_count": 42,
    "applies_to_methods": null,
    "applies_to_products": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

PUT /developer/coupons/{ref}

Atualizar cupom

escopo coupons:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid ou código.
CampoTipoDescrição
codestring3 a 40 letras, números, hífen ou sublinhado.
discount_typestringpercentage ou fixed.
discount_valuenumberPercentual ou valor fixo do desconto.
currencystringEUR ou BRL (obrigatório na prática para desconto fixo).
min_amountnumberValor mínimo do pedido.
starts_atstring (data)Início da validade.
expires_atstring (data)Fim da validade.
max_usesintegerLimite total de usos.
applies_to_methodsstring[]Restringe a métodos (europix, mbway...).
applies_to_productsinteger[]Restringe a produtos (ids).
descriptionstringDescrição interna.
activebooleanAtivo.
curl -X PUT https://api.uneway.pro/api/v1/developer/coupons/pedido-2001 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"max_uses": 1000}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 5,
    "object": "coupon",
    "code": "BEMVINDO10",
    "description": "10% na primeira compra",
    "discount_type": "percentage",
    "discount_value": 10.0,
    "currency": null,
    "min_amount": null,
    "starts_at": null,
    "expires_at": "2026-12-31T23:59:59+00:00",
    "max_uses": 500,
    "uses_count": 42,
    "applies_to_methods": null,
    "applies_to_products": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

PATCH /developer/coupons/{ref}

Atualizar cupom (parcial)

escopo coupons:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid ou código.
CampoTipoDescrição
codestring3 a 40 letras, números, hífen ou sublinhado.
discount_typestringpercentage ou fixed.
discount_valuenumberPercentual ou valor fixo do desconto.
currencystringEUR ou BRL (obrigatório na prática para desconto fixo).
min_amountnumberValor mínimo do pedido.
starts_atstring (data)Início da validade.
expires_atstring (data)Fim da validade.
max_usesintegerLimite total de usos.
applies_to_methodsstring[]Restringe a métodos (europix, mbway...).
applies_to_productsinteger[]Restringe a produtos (ids).
descriptionstringDescrição interna.
activebooleanAtivo.
curl -X PATCH https://api.uneway.pro/api/v1/developer/coupons/pedido-2001 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"active": false}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 5,
    "object": "coupon",
    "code": "BEMVINDO10",
    "description": "10% na primeira compra",
    "discount_type": "percentage",
    "discount_value": 10.0,
    "currency": null,
    "min_amount": null,
    "starts_at": null,
    "expires_at": "2026-12-31T23:59:59+00:00",
    "max_uses": 500,
    "uses_count": 42,
    "applies_to_methods": null,
    "applies_to_products": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

POST /developer/coupons/{ref}/archive

Arquivar cupom

escopo coupons:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid ou código.
curl -X POST https://api.uneway.pro/api/v1/developer/coupons/pedido-2001/archive \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 5,
    "object": "coupon",
    "code": "BEMVINDO10",
    "description": "10% na primeira compra",
    "discount_type": "percentage",
    "discount_value": 10.0,
    "currency": null,
    "min_amount": null,
    "starts_at": null,
    "expires_at": "2026-12-31T23:59:59+00:00",
    "max_uses": 500,
    "uses_count": 42,
    "applies_to_methods": null,
    "applies_to_products": null,
    "active": false,
    "status": "archived",
    "archived_at": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

POST /developer/coupons/{ref}/restore

Restaurar cupom

escopo coupons:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
ref obrigatóriocaminhostringid ou código.
curl -X POST https://api.uneway.pro/api/v1/developer/coupons/pedido-2001/restore \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "id": 5,
    "object": "coupon",
    "code": "BEMVINDO10",
    "description": "10% na primeira compra",
    "discount_type": "percentage",
    "discount_value": 10.0,
    "currency": null,
    "min_amount": null,
    "starts_at": null,
    "expires_at": "2026-12-31T23:59:59+00:00",
    "max_uses": 500,
    "uses_count": 42,
    "applies_to_methods": null,
    "applies_to_products": null,
    "active": true,
    "status": "active",
    "archived_at": null,
    "created_at": "2026-10-02T12:00:00+00:00",
    "updated_at": "2026-10-02T12:00:00+00:00"
  }
}

Assinaturas

GET /developer/subscription-plans

Listar planos

escopo subscriptions:read

Planos criados no painel (intervalo semanal, mensal ou anual).

ParâmetroOndeTipoDescrição
activequerybooleanSó planos ativos.
curl -X GET https://api.uneway.pro/api/v1/developer/subscription-plans \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": [
    {
      "object": "subscription_plan",
      "id": "plan_mensal",
      "name": "Mensal",
      "description": null,
      "amount": "29.90",
      "currency": "EUR",
      "interval": "monthly",
      "interval_count": 1,
      "trial_days": 0,
      "payment_methods": [
        "mbway",
        "multibanco"
      ],
      "active": true,
      "subscribe_url": null
    }
  ]
}

GET /developer/subscriptions

Listar assinaturas

escopo subscriptions:read

ParâmetroOndeTipoDescrição
statusquerystringincomplete, trialing, active, past_due, paused ou canceled.
customer_emailquerystringE-mail do assinante.
planquerystringId do plano (plan_...).
per_pagequeryintegerItens por página (1 a 100, padrão 25).
pagequeryintegerPágina (a partir de 1).
curl -X GET https://api.uneway.pro/api/v1/developer/subscriptions \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": [
    {
      "object": "subscription",
      "id": "sub_9f2c1a",
      "status": "active",
      "livemode": false,
      "plan": {
        "id": "plan_mensal",
        "name": "Mensal"
      },
      "customer": {
        "name": "Ana Souza",
        "email": "ana@exemplo.com",
        "phone": "351912345678"
      },
      "amount": "29.90",
      "currency": "EUR",
      "interval": "monthly",
      "interval_count": 1,
      "interval_label": "por mês",
      "monthly_amount": "29.90",
      "payment_method": "mbway",
      "trial_ends_at": null,
      "current_period_start": "2026-10-02T00:00:00+00:00",
      "current_period_end": "2026-11-02T00:00:00+00:00",
      "next_billing_at": "2026-11-02T00:00:00+00:00",
      "cancel_at_period_end": false,
      "canceled_at": null,
      "cancel_reason": null,
      "paused_at": null,
      "past_due_at": null,
      "renewals_count": 0,
      "source": "api",
      "created_at": "2026-10-02T12:00:00+00:00"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 25,
    "total": 1,
    "last_page": 1
  }
}

GET /developer/subscriptions/{id}

Consultar assinatura

escopo subscriptions:read

Id público da assinatura (sub_...). A resposta inclui as cobranças.

ParâmetroOndeTipoDescrição
id obrigatóriocaminhostringsub_...
curl -X GET https://api.uneway.pro/api/v1/developer/subscriptions/sub_9f2 \
  -H "Authorization: Bearer uw_test_SUA_CHAVE"

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "subscription",
    "id": "sub_9f2c1a",
    "status": "active",
    "livemode": false,
    "plan": {
      "id": "plan_mensal",
      "name": "Mensal"
    },
    "customer": {
      "name": "Ana Souza",
      "email": "ana@exemplo.com",
      "phone": "351912345678"
    },
    "amount": "29.90",
    "currency": "EUR",
    "interval": "monthly",
    "interval_count": 1,
    "interval_label": "por mês",
    "monthly_amount": "29.90",
    "payment_method": "mbway",
    "trial_ends_at": null,
    "current_period_start": "2026-10-02T00:00:00+00:00",
    "current_period_end": "2026-11-02T00:00:00+00:00",
    "next_billing_at": "2026-11-02T00:00:00+00:00",
    "cancel_at_period_end": false,
    "canceled_at": null,
    "cancel_reason": null,
    "paused_at": null,
    "past_due_at": null,
    "renewals_count": 0,
    "source": "api",
    "created_at": "2026-10-02T12:00:00+00:00"
  }
}

POST /developer/subscriptions

Criar assinatura

escopo subscriptions:write aceita Idempotency-Key

Assina um cliente num plano. A primeira cobrança é gerada no método escolhido (ou após o período de teste). Envie Idempotency-Key.

CampoTipoDescrição
plan obrigatóriostringId do plano.
customer.email obrigatóriostringE-mail do assinante.
customer.namestringNome.
customer.phonestringTelefone (obrigatório para MB WAY).
payment_method obrigatóriostringmbway, multibanco, europix (Pix) ou link.
trial_daysintegerDias de teste (0 a 365).
metadataobjectAté 20 pares chave/valor.
curl -X POST https://api.uneway.pro/api/v1/developer/subscriptions \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"plan": "plan_mensal", "customer": {"email": "ana@exemplo.com", "phone": "351912345678"}, "payment_method": "mbway"}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "subscription",
    "id": "sub_9f2c1a",
    "status": "incomplete",
    "livemode": false,
    "plan": {
      "id": "plan_mensal",
      "name": "Mensal"
    },
    "customer": {
      "name": "Ana Souza",
      "email": "ana@exemplo.com",
      "phone": "351912345678"
    },
    "amount": "29.90",
    "currency": "EUR",
    "interval": "monthly",
    "interval_count": 1,
    "interval_label": "por mês",
    "monthly_amount": "29.90",
    "payment_method": "mbway",
    "trial_ends_at": null,
    "current_period_start": "2026-10-02T00:00:00+00:00",
    "current_period_end": "2026-11-02T00:00:00+00:00",
    "next_billing_at": "2026-11-02T00:00:00+00:00",
    "cancel_at_period_end": false,
    "canceled_at": null,
    "cancel_reason": null,
    "paused_at": null,
    "past_due_at": null,
    "renewals_count": 0,
    "source": "api",
    "created_at": "2026-10-02T12:00:00+00:00"
  }
}

Erros específicos: resource_missing, kyc_required

POST /developer/subscriptions/{id}/cancel

Cancelar assinatura

escopo subscriptions:write aceita Idempotency-Key

ParâmetroOndeTipoDescrição
id obrigatóriocaminhostringsub_...
CampoTipoDescrição
at_period_endbooleanCancela no fim do período já pago.
reasonstringMotivo.
curl -X POST https://api.uneway.pro/api/v1/developer/subscriptions/sub_9f2/cancel \
  -H "Authorization: Bearer uw_test_SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"at_period_end": true}'

Resposta (exemplo)

{
  "success": true,
  "data": {
    "object": "subscription",
    "id": "sub_9f2c1a",
    "status": "active",
    "livemode": false,
    "plan": {
      "id": "plan_mensal",
      "name": "Mensal"
    },
    "customer": {
      "name": "Ana Souza",
      "email": "ana@exemplo.com",
      "phone": "351912345678"
    },
    "amount": "29.90",
    "currency": "EUR",
    "interval": "monthly",
    "interval_count": 1,
    "interval_label": "por mês",
    "monthly_amount": "29.90",
    "payment_method": "mbway",
    "trial_ends_at": null,
    "current_period_start": "2026-10-02T00:00:00+00:00",
    "current_period_end": "2026-11-02T00:00:00+00:00",
    "next_billing_at": "2026-11-02T00:00:00+00:00",
    "cancel_at_period_end": true,
    "canceled_at": null,
    "cancel_reason": null,
    "paused_at": null,
    "past_due_at": null,
    "renewals_count": 0,
    "source": "api",
    "created_at": "2026-10-02T12:00:00+00:00"
  }
}