Referência da API

Endpoints, parâmetros, respostas e códigos de erro.

Base URL

https://vorkpay.com/api/v1

Autenticação

Todas as chamadas requerem o header Authorization com a tua chave secreta.

Authorization: Bearer vps_live_...

A chave secreta é visível em /dashboard/settings/api-keys. Nunca a uses em código frontend.

Códigos de erro

CódigoSignificado
400Body inválido ou parâmetros em falta
401Header Authorization em falta ou chave inválida
403Conta não está activa (pendente, suspensa ou recusada)
404Recurso não encontrado (ex: transactionId inexistente)
429Rate limit excedido
500Erro interno do VorkPay
502Erro a comunicar com a rede bancária

Formato dos erros:

{
  "error": "phoneNumber must be a Portuguese 9-digit mobile (9XXXXXXXX)"
}

Rate limits

A API /api/v1/* tem rate-limit de 30 pedidos por minuto por IP. Acima deste limite recebes 429 Too Many Requests com o headerRetry-After em segundos. Faz backoff exponencial e tenta de novo.


POST /payments/init

Cria uma transacção pending. Devolve um transactionId para usar nos passos seguintes.

Request body

ParâmetroTipoObrigatórioDescrição
orderIdstringSimO teu identificador interno do pedido
amountnumberSimValor em EUR (positivo)
currencystringNãoDefault EUR (única suportada)

Response

{
  "transactionId": "txn_abc123",
  "amount": 49.90,
  "currency": "EUR"
}

POST /payments/mbway

Dispara uma notificação push MB WAY para o cliente.

Request body

ParâmetroTipoObrigatórioDescrição
transactionIdstringSimID devolvido por /init
phoneNumberstringSim9 dígitos, formato 9XXXXXXXX

Response

{
  "success": true,
  "message": "Notificação enviada. O cliente tem 4 minutos para confirmar."
}

POST /payments/multibanco

Gera uma referência multibanco (entidade + referência).

Request body

ParâmetroTipoObrigatórioDescrição
transactionIdstringSimID devolvido por /init

Response

{
  "entity": "24000",
  "reference": "123456789",
  "amount": 49.90,
  "expiresAt": "2026-05-13T14:32:00Z"
}

GET /payments/status

Consulta o estado actual de uma transacção.

Query params

ParâmetroTipoObrigatório
transactionIdstringSim

Response — MB WAY pago

{
  "transactionId": "txn_abc123",
  "externalOrderId": "ORDER-123",
  "status": "paid",
  "paymentMethod": "MBWAY",
  "amount": 49.90,
  "currency": "EUR",
  "paidAt": "2026-05-10T14:32:00Z"
}

Response — Multibanco pendente (com referência)

{
  "transactionId": "txn_abc123",
  "externalOrderId": "ORDER-123",
  "status": "pending",
  "paymentMethod": "REFERENCE",
  "amount": 49.90,
  "currency": "EUR",
  "paidAt": null,
  "mb": {
    "entity": "24000",
    "reference": "123456789",
    "expiresAt": "2026-05-13T14:32:00Z"
  }
}

O objecto mb só está presente quando paymentMethod = "REFERENCE" e a referência já foi gerada.

Estados possíveis: pending · paid · failed · cancelled