Esdeveniments
Objectes event de només lectura amb un id opac. Consulta històrica via l'API i entrega per webhook.
Cada esdeveniment publicat a Factuarea es persisteix com un objecte
event de només lectura amb un id opac (un UUID v7, p. ex.
01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0d), coherent amb l'id de
qualsevol altre recurs v1. Això et permet:
- Consultar-lo via API:
GET /v1/events/{id}iGET /v1/events?type=invoice.paid. - Entregar-lo als webhook endpoints subscrits (el mateix objecte s'envia al body de l'entrega — vegeu Webhooks).
- Reenviar una entrega des del dashboard
(
Developers > Webhooks > Deliveries).
Forma del payload
Cada esdeveniment comparteix aquesta estructura:
{
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0d",
"object": "event",
"type": "invoice.paid",
"aggregate_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a03",
"api_version": "2026-05-22",
"livemode": true,
"data": {
"invoice": { "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a03" }
},
"created": "2026-05-15T10:23:18Z"
}Camps:
id— identificador opac de l'esdeveniment (UUID v7). Fes-lo servir com a idempotency key al teu costat.object— sempreevent.type— nom de l'esdeveniment com a<category>.<action>(p. ex.invoice.paid,quote.approved).aggregate_id— UUID v7 del recurs que va produir l'esdeveniment (p. ex. la factura per ainvoice.paid).nullper a esdeveniments sense agregat reomplert. Diferent d'id, que identifica el propi esdeveniment.api_version— versió per data sota la qual es va serialitzar el payload, segellada en l'emissió. Sempre present en els esdeveniments emesos avui;nullnomés per a esdeveniments antics emesos abans de segellar les versions.livemode—trueper a esdeveniments generats en producció (clau live,fact_live_);falseper a esdeveniments generats en mode de prova (empresa sandbox, claufact_test_). Els esdeveniments de mode de prova es registren i es poden consultar viaGET /v1/events, però no s'entreguen als webhook endpoints (vegeu Mode de prova i sandbox), de manera que qualsevol esdeveniment que el teu endpoint rebi realment és semprelivemode: true.data— una referència lleugera al recurs afectat, indexada pel seu tipus — p. ex.{ "invoice": { "id": "..." } }. Obtén el recurs des del seu propi endpoint per aconseguir la representació completa i actual.created— timestamp ISO 8601 UTC de quan es va crear l'esdeveniment.
Idempotència
Cada esdeveniment té un id únic. Els webhooks reentreguen el mateix id al
mateix endpoint a cada reintent. Al teu handler:
event_id = event['id']
if seen_in_db(event_id):
return '', 200
process(event)
mark_seen_in_db(event_id)Catàleg d'esdeveniments
El catàleg complet i autoritatiu de tipus d'esdeveniment subscribibles el retorna
GET /v1/event-catalog. Cada entrada porta un name, una category, una
description llegible i un status (available o
coming_soon):
curl https://api.factuarea.com/v1/event-catalog \
-H "Authorization: Bearer $FACTUAREA_API_KEY"{
"data": [
{
"name": "invoice.paid",
"category": "invoice",
"description": "Factura pagada",
"status": "available"
}
],
"has_more": false,
"next_cursor": null
}Tipus d'esdeveniment representatius per categoria (consulta el catàleg per a la llista completa i actualitzada):
Factures
invoice.created, invoice.updated, invoice.sent, invoice.paid,
invoice.cancelled, invoice.annulled, invoice.overdue,
invoice.deleted, invoice.number_assigned, invoice.rectified,
invoice.email_sent, invoice.payment_reminder_sent,
invoice.simplified_created, invoice.verifactu_submitted,
invoice.metadata_changed.
Pressupostos
quote.created, quote.updated, quote.deleted, quote.approved,
quote.rejected, quote.converted, quote.expired,
quote.number_assigned, quote.metadata_changed.
Factures proforma
proforma.created, proforma.updated, proforma.deleted,
proforma.accepted, proforma.rejected, proforma.cancelled,
proforma.expired, proforma.converted_to_invoice,
proforma.number_assigned, proforma.metadata_changed.
Albarans
delivery_note.created, delivery_note.updated,
delivery_note.status_changed, delivery_note.signed,
delivery_note.converted.
Factures de compra
purchase_invoice.created, purchase_invoice.updated,
purchase_invoice.paid, purchase_invoice.payment_registered,
purchase_invoice.cancelled, purchase_invoice.metadata_changed.
Factures recurrents
recurring_invoice.created, recurring_invoice.activated,
recurring_invoice.paused, recurring_invoice.updated,
recurring_invoice.deleted, recurring_invoice.completed,
recurring_invoice.executed, recurring_invoice.failed,
recurring_invoice.cancelled, recurring_invoice.metadata_changed.
Clients i productes
client.created, client.updated, client.deleted,
client.metadata_changed, product.created, product.updated.
Sèries i impostos
series.created, series.updated, series.deleted,
series.archived, series.unarchived, series.marked_as_default,
series.number_consumed, tax.metadata_changed,
tax.validity_changed, payment.received.
FacturaE (FACe)
facturae.face_submitted, facturae.face_status_changed,
facturae.face_cancellation_requested.
Exemples de payload
invoice.paid
{
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0d",
"object": "event",
"type": "invoice.paid",
"aggregate_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a03",
"api_version": "2026-05-22",
"livemode": true,
"data": {
"invoice": { "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a03" }
},
"created": "2026-05-15T11:42:08Z"
}client.updated
{
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a1a",
"object": "event",
"type": "client.updated",
"aggregate_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a2b",
"api_version": "2026-05-22",
"livemode": true,
"data": {
"client": { "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a2b" }
},
"created": "2026-05-15T11:50:12Z"
}quote.converted
{
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a3c",
"object": "event",
"type": "quote.converted",
"aggregate_id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a4d",
"api_version": "2026-05-22",
"livemode": true,
"data": {
"quote": { "id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a4d" }
},
"created": "2026-05-15T12:01:55Z"
}L'esdeveniment només porta una referència lleugera al recurs afectat. Obtén
el recurs des del seu propi endpoint (p. ex. GET /v1/quotes/{id}) per llegir
la factura convertida a la qual enllaça.
Subscriure's a esdeveniments
Via API:
curl -X POST https://api.factuarea.com/v1/webhook_endpoints \
-H "Authorization: Bearer $FACTUAREA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://app.mycompany.com/factuarea/webhook",
"enabled_events": ["invoice.paid", "quote.approved"]
}'Per subscriure't a tots els esdeveniments (no recomanat en producció excepte per a dashboards interns):
{ "enabled_events": ["*"] }Per subscriure't a famílies senceres (tots els invoice.*):
{ "enabled_events": ["invoice.*", "quote.*"] }Llistar esdeveniments via API
GET /v1/events?type=invoice.paid&limit=50Filtres disponibles: type, type[in], created[gte], created[lte],
created[gt], created[lt]. Paginació per cursor estàndard
(limit, starting_after, ending_before) — vegeu
Paginació.