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).
- GET
/developer/me - GET
/developer/events - GET
/developer/payments - GET
/developer/payments/{ref} - POST
/developer/payments/{ref}/refund - POST
/developer/payments/{ref}/simulate - GET
/developer/balance - GET
/developer/withdrawals - GET
/developer/withdrawals/{id} - GET
/developer/products - GET
/developer/products/{ref} - POST
/developer/products - PUT
/developer/products/{ref} - PATCH
/developer/products/{ref} - POST
/developer/products/{ref}/archive - POST
/developer/products/{ref}/restore - GET
/developer/coupons - GET
/developer/coupons/{ref} - POST
/developer/coupons - PUT
/developer/coupons/{ref} - PATCH
/developer/coupons/{ref} - POST
/developer/coupons/{ref}/archive - POST
/developer/coupons/{ref}/restore - GET
/developer/subscription-plans - GET
/developer/subscriptions - GET
/developer/subscriptions/{id} - POST
/developer/subscriptions - POST
/developer/subscriptions/{id}/cancel - POST
/payments/multibanco - POST
/payments/mbway - POST
/payments/europix
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
Pagamentos do ambiente da chave (a chave de sandbox só vê pagamentos de teste), do mais novo para o mais antigo.
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
status | query | string | pending, paid, failed, expired, cancelled, refunded... |
method | query | string | europix (Pix), mbway, multibanco. |
order_id | query | string | Filtra pelo seu order_id. |
created_from | query | string (data) | Criados a partir de. |
created_to | query | string (data) | Criados até. |
per_page | query | integer | Itens por página (1 a 100, padrão 25). |
page | query | integer | Pá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
Busca pelo id numérico, pelo seu order_id ou pelo token público (pt_...).
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, 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
Gera entidade e referência Multibanco (EUR) para pagamento no multibanco ou home banking.
| Campo | Tipo | Descrição |
|---|---|---|
amount obrigatório | number | Valor em EUR (mínimo 0,50). |
order_id | string | Seu identificador do pedido (letras, números, _ e -). Gerado se omitido; precisa ser único na sua conta. |
customer_email | string | E-mail do pagador (o domínio precisa existir). |
description | string | Descrição (até 1.000 caracteres). |
currency | string | EUR. |
customer_name | string | Nome 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
Envia o pedido para a app MB WAY do telefone informado (EUR). O cliente aprova na app; o resultado chega por webhook.
| Campo | Tipo | Descrição |
|---|---|---|
amount obrigatório | number | Valor em EUR (mínimo 0,51). |
phone obrigatório | string | Telefone com 9 a 15 dígitos (ex.: 351912345678). |
order_id | string | Seu identificador do pedido (letras, números, _ e -). Gerado se omitido; precisa ser único na sua conta. |
customer_email | string | E-mail do pagador (o domínio precisa existir). |
description | string | Descrição (até 1.000 caracteres). |
currency | string | EUR. |
merchant_name | string | Nome 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
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).
| Campo | Tipo | Descrição |
|---|---|---|
amount obrigatório | number | Valor em EUR (1,00 a 100.000,00; até 2 casas). |
order_id | string | Seu identificador do pedido (letras, números, _ e -). Gerado se omitido; precisa ser único na sua conta. |
customer_email | string | E-mail do pagador (o domínio precisa existir). |
description | string | Descrição (até 1.000 caracteres). |
customer_name | string | Nome do pagador. |
customer_document | string | CPF 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
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âmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, order_id ou pt_... |
| Campo | Tipo | Descrição |
|---|---|---|
amount | number | Valor a estornar (omitido = total restante). |
reason | string | Motivo (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)
Muda um pagamento de teste pendente para paid, failed, expired ou cancelled e dispara os webhooks correspondentes. Só funciona com chave uw_test_.
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, order_id ou pt_... |
| Campo | Tipo | Descrição |
|---|---|---|
status obrigatório | string | paid, 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
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âmetro | Onde | Tipo | Descrição |
|---|---|---|---|
currency | query | string | Moeda 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
Repasses (saques) da conta. Os saques são solicitados no painel; pela API você acompanha o status.
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
status | query | string | pending, approved, processing, completed, failed, rejected, cancelled. |
per_page | query | integer | Itens por página (1 a 100, padrão 25). |
page | query | integer | Pá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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id obrigatório | caminho | integer | Id 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
search | query | string | Busca por nome, SKU ou código. |
status | query | string | active, inactive, archived ou all. |
per_page | query | integer | Itens por página (1 a 100, padrão 25). |
page | query | integer | Página (a partir de 1). |
currency | query | string | EUR 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, 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
| Campo | Tipo | Descrição |
|---|---|---|
name obrigatório | string | Nome (até 160 caracteres). |
price obrigatório | number | Preço (0,50 a 999.999,99). |
currency obrigatório | string | EUR ou BRL. |
description | string | Descrição (até 2.000). |
image_url | string | URL https da imagem. |
sku | string | SKU único na sua conta. |
external_id | string | Seu identificador (único na conta). |
active | boolean | Disponível para venda. |
metadata | object | Até 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, sku ou external_id. |
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome (até 160 caracteres). |
price | number | Preço (0,50 a 999.999,99). |
currency | string | EUR ou BRL. |
description | string | Descrição (até 2.000). |
image_url | string | URL https da imagem. |
sku | string | SKU único na sua conta. |
external_id | string | Seu identificador (único na conta). |
active | boolean | Disponível para venda. |
metadata | object | Até 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)
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, sku ou external_id. |
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome (até 160 caracteres). |
price | number | Preço (0,50 a 999.999,99). |
currency | string | EUR ou BRL. |
description | string | Descrição (até 2.000). |
image_url | string | URL https da imagem. |
sku | string | SKU único na sua conta. |
external_id | string | Seu identificador (único na conta). |
active | boolean | Disponível para venda. |
metadata | object | Até 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id, 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
search | query | string | Busca por nome, SKU ou código. |
status | query | string | active, inactive, archived ou all. |
per_page | query | integer | Itens por página (1 a 100, padrão 25). |
page | query | integer | Pá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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id 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
| Campo | Tipo | Descrição |
|---|---|---|
code obrigatório | string | 3 a 40 letras, números, hífen ou sublinhado. |
discount_type obrigatório | string | percentage ou fixed. |
discount_value obrigatório | number | Percentual ou valor fixo do desconto. |
currency | string | EUR ou BRL (obrigatório na prática para desconto fixo). |
min_amount | number | Valor mínimo do pedido. |
starts_at | string (data) | Início da validade. |
expires_at | string (data) | Fim da validade. |
max_uses | integer | Limite total de usos. |
applies_to_methods | string[] | Restringe a métodos (europix, mbway...). |
applies_to_products | integer[] | Restringe a produtos (ids). |
description | string | Descrição interna. |
active | boolean | Ativo. |
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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id ou código. |
| Campo | Tipo | Descrição |
|---|---|---|
code | string | 3 a 40 letras, números, hífen ou sublinhado. |
discount_type | string | percentage ou fixed. |
discount_value | number | Percentual ou valor fixo do desconto. |
currency | string | EUR ou BRL (obrigatório na prática para desconto fixo). |
min_amount | number | Valor mínimo do pedido. |
starts_at | string (data) | Início da validade. |
expires_at | string (data) | Fim da validade. |
max_uses | integer | Limite total de usos. |
applies_to_methods | string[] | Restringe a métodos (europix, mbway...). |
applies_to_products | integer[] | Restringe a produtos (ids). |
description | string | Descrição interna. |
active | boolean | Ativo. |
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)
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id ou código. |
| Campo | Tipo | Descrição |
|---|---|---|
code | string | 3 a 40 letras, números, hífen ou sublinhado. |
discount_type | string | percentage ou fixed. |
discount_value | number | Percentual ou valor fixo do desconto. |
currency | string | EUR ou BRL (obrigatório na prática para desconto fixo). |
min_amount | number | Valor mínimo do pedido. |
starts_at | string (data) | Início da validade. |
expires_at | string (data) | Fim da validade. |
max_uses | integer | Limite total de usos. |
applies_to_methods | string[] | Restringe a métodos (europix, mbway...). |
applies_to_products | integer[] | Restringe a produtos (ids). |
description | string | Descrição interna. |
active | boolean | Ativo. |
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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
ref obrigatório | caminho | string | id 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
Planos criados no painel (intervalo semanal, mensal ou anual).
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
active | query | boolean | Só 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
status | query | string | incomplete, trialing, active, past_due, paused ou canceled. |
customer_email | query | string | E-mail do assinante. |
plan | query | string | Id do plano (plan_...). |
per_page | query | integer | Itens por página (1 a 100, padrão 25). |
page | query | integer | Pá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
Id público da assinatura (sub_...). A resposta inclui as cobranças.
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id obrigatório | caminho | string | sub_... |
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
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.
| Campo | Tipo | Descrição |
|---|---|---|
plan obrigatório | string | Id do plano. |
customer.email obrigatório | string | E-mail do assinante. |
customer.name | string | Nome. |
customer.phone | string | Telefone (obrigatório para MB WAY). |
payment_method obrigatório | string | mbway, multibanco, europix (Pix) ou link. |
trial_days | integer | Dias de teste (0 a 365). |
metadata | object | Até 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
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id obrigatório | caminho | string | sub_... |
| Campo | Tipo | Descrição |
|---|---|---|
at_period_end | boolean | Cancela no fim do período já pago. |
reason | string | Motivo. |
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"
}
}