Xpend
Começar

Quickstart

Do registo ao primeiro pagamento em 5 passos. Integração server-side: os dados do cliente são recolhidos no teu site e enviados a partir do teu servidor pelo SDK oficial.

Usa sempre o SDK oficial. A API assina cada chamada com HMAC (X-VP-Trace); chamadas diretas por curl/fetch devolvem 403. Preferes que a IA faça tudo? Vê Integrar com IA.

1. Cria conta e obtém as chaves

Regista-te em /auth/register. Depois, em Backoffice → API Keys, tens a chave pública, a secret key (só backend) e o webhook secret.

2. Instala o SDK

Em Backoffice → Integrações, descarrega o ZIP Node.js ou PHP — traz o cliente da API, o handler de webhook e um .env já preenchido com as tuas chaves. Coloca-o na raiz do projeto.

# extrai o ZIP para o teu projeto e instala as dependências
npm install dotenv

3. Cria uma transacção

Cria sempre primeiro uma transacção pending. Devolve um transactionId.

const xpend = require('./xpend')

const payment = await xpend.createPayment('ORDER-123', 49.90, {
  name: 'João Silva',
  email: 'joao@email.com',
  phone: '912345678',
  address: 'Rua das Flores 12',
  city: 'Lisboa',
  postalCode: '1000-001',
  country: 'Portugal',
}, [
  { id: 'sku-1', name: 'Ténis Running', quantity: 1, priceInCents: 4990 },
])
console.log(payment.transactionId) // → "txn_42"

Resposta:

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

4. Cobra o cliente

MB WAY — notificação push, 4 minutos para confirmar.

await xpend.triggerMbway(payment.transactionId, '912345678')
// O cliente recebe uma notificação MB WAY no telemóvel (4 min para confirmar).

Multibanco — referência (entidade + referência) válida 3 dias.

const mb = await xpend.generateMultibanco(payment.transactionId)
console.log(mb.entity, mb.reference) // entrega ao cliente: entidade + referência + valor
{ "entity": "24000", "reference": "123456789", "amount": 49.90, "expiresAt": "2026-05-13T14:32:00Z" }

5. Recebe a confirmação

Quando o cliente paga, a Xpend envia um webhook assinado para o URL que configurares em Backoffice → Webhook. É esta a confirmação oficial — vê a documentação de webhooks.

Próximos passos