Estabelecimentos API
Lojas, filiais ou escritórios da mesma empresa (mesmo NIF). Cada estabelecimento tem as suas séries na AGT (o establishmentNumber da DS-120), e as facturas ficam separadas por estabelecimento. Sem estabelecimentos, tudo sai na sede, como sempre.
Criar, pagar e terminar: no dashboard
Um estabelecimento além da sede custa 3 000 Kz por mês e paga-se no dashboard (Definições → Estabelecimentos). Essas rotas exigem sessão: com uma chave de API a resposta é 403 session_required, porque uma chave é para emitir. Pela API listas os estabelecimentos e emites neles.
Listar
/v1/organisations/:orgId/establishmentsA sede vem à parte, em sede (sem id). Em establishments, só emite um com status: 'active', ou 'ending' até endsAt. pending_payment ainda não foi pago; ended já não emite facturas novas (as notas de crédito, de débito e os recibos das facturas dele continuam a sair na série dele).
const { sede, establishments } = await vero.establishments.list(ORG_ID)
const loja = establishments.find((e) => e.name === 'Loja Benguela' && e.status === 'active')Emitir num estabelecimento
Passa establishmentId em POST /invoices ou POST /proformas. Sem ele, a sede. A factura da conversão de uma pro-forma sai no estabelecimento da pro-forma; as notas de crédito, de débito e os recibos saem sempre no da factura de origem. Um estabelecimento por pagar dá 402 establishment_unpaid; terminado, 400 establishment_inactive.
const invoice = await vero.invoices.create(ORG_ID, {
customerId: customer.id,
items: [{ description: 'Cartucho Canon 545', quantity: 2, unitPrice: 380000 }],
establishmentId: loja.id,
})
invoice.establishmentId // o da lojaSó as facturas de um estabelecimento: GET /invoices?establishmentId=<id> (ou sede).
Chave presa a um estabelecimento
Ao criar a chave no dashboard (Definições → Chaves de API), escolhe o estabelecimento. A chave emite sempre lá (facturas, pro-formas e o widget), mesmo sem establishmentId; outro dá 403 establishment_not_allowed. A lista de facturas com essa chave só traz as de lá. Útil para a loja online ou a caixa de uma loja. No widget, o atributo establishment-id="…" do <vero-button> escolhe o estabelecimento quando a chave não está presa a nenhum.