Blueprint
E-commerce (Checkout)
Emite uma Factura-Recibo (FR) automaticamente após cada compra confirmada. O cliente recebe o PDF certificado por email sem sair da tua loja.
01 · Garantir cliente
customers.ensure() cria ou actualiza pelo externalId - nunca duplica.
02 · Registar produto
products.create() regista o item no catálogo e devolve o ID para referenciar na factura.
03 · Emitir FR
invoices.create() com documentType FR - Factura-Recibo para pagamentos à vista.
Sandbox · Usa a chave
vero_test_sk_... durante o desenvolvimento - as facturas são geradas mas não chegam à AGT. Troca para vero_live_sk_... quando fores para produção.TypeScript
import { createVeroClient } from '@veroao/node'
const vero = createVeroClient() // lê VERO_API_KEY do ambiente
const ORG_ID = process.env.VERO_ORG_ID!
// Express handler - chamado após pagamento confirmado
app.post('/checkout/complete', async (req, res) => {
const { user, cart } = req.body
// 1. Garantir cliente (cria ou actualiza pelo externalId)
const customer = await vero.customers.ensure(ORG_ID, {
externalId: user.id,
name: user.name,
taxId: user.nif,
phone: user.phone,
email: user.email,
addressLine1: user.address,
city: user.city,
})
// 2. Garantir produto no catálogo (ou reutilizar o ID se já existe)
const product = await vero.products.create(ORG_ID, {
code: cart.productCode,
name: cart.productName,
description: cart.productDescription,
unitPrice: cart.unitPrice, // kwanzas × 100 - ex: 5000000 = 50 000,00 AOA
taxRate: 14,
unitOfMeasure: 'UN',
})
// 3. Emitir Factura/Recibo (FR = pagamento à vista)
const invoice = await vero.invoices.create(ORG_ID, {
customerId: customer.id,
documentType: 'FR',
items: [{
description: product.name,
quantity: cart.quantity,
unitPrice: product.unitPrice,
taxRate: product.taxRate,
productId: product.id,
}],
idempotencyKey: `checkout_${req.body.orderId}`,
})
res.json({ pdfUrl: invoice.pdfUrl, number: invoice.number })
})Resposta (201 Created)
JSON
{
"id": "a1b2c3d4-...",
"number": "FR FR6326S47071N/1",
"documentType": "FR",
"status": "paid",
"subtotal": 4385965,
"taxAmount": 614035,
"total": 5000000,
"currency": "AOA",
"atcud": "ABCD1234-1",
"pdfUrl": "https://storage.vero.ao/invoices/a1b2c3d4.pdf",
"issuedAt": "2026-05-19T10:30:00.000Z"
}Valores monetários · Todos os preços em kwanzas × 100 (inteiros, sem vírgula flutuante). 50 000,00 AOA →
unitPrice: 5000000.