Conciliar amb la metadata de sistema
Les claus de metadata que Factuarea escriu a les factures auto-emeses des d'un cicle de subscripció de Stripe, i com fer servir el filtre de metadata per treure totes les factures d'una subscripció o d'un període de facturació.
Tots els documents de Factuarea porten un objecte metadata de forma lliure on
pots escriure el que necessitis. A les factures que Factuarea emet
automàticament des d'un cicle de subscripció de Stripe, la plataforma escriu a
més un grapat de claus de sistema que lliguen la factura al cobrament del qual
va néixer: quina factura de Stripe, quina subscripció, quin període de facturació.
Aquestes claus són el que fa possible la conciliació sense mantenir la teva pròpia taula de correspondències. Fa temps que s'escriuen; aquesta pàgina és on queden documentades.
Abast: cicles de subscripció. Aquestes claus les escriu el flux que
auto-emet una factura per un cicle de subscripció cobrat (vegeu
cicles de subscripció). Els
cobraments solts auto-facturats des de charge.succeeded no les porten avui
— per a aquests, correlaciona a través del
llistat de cobraments auto-facturats,
que exposa els identificadors del costat del cobrament.
Les claus de sistema
| Clau | Què identifica | Format | Presència |
|---|---|---|---|
stripe_invoice_id | La factura de Stripe del cicle cobrat | Id de Stripe, in_… | Sempre |
billing_reason | Per què Stripe va facturar aquell cicle | El billing_reason cru de Stripe — a la pràctica subscription_create (primer cicle) o subscription_cycle (cada renovació), els dos únics que s'auto-facturen | Sempre |
stripe_subscription_id | La subscripció a la qual pertany el cicle | Id de Stripe, sub_… | Opcional — s'omet quan Stripe no envia id de subscripció |
period_start | Primer dia del període facturat | YYYY-MM-DD, UTC | Opcional — s'omet quan falta el timestamp del període |
period_end | Fi del període facturat, literal del period_end d'Stripe — és el límit exclusiu, així que en un cicle mensual és el primer dia del període següent, no l'últim dia d'aquest | YYYY-MM-DD, UTC | Opcional — s'omet quan falta el timestamp del període |
Les claus opcionals no es materialitzen com a nul·les ni buides: quan el valor no aplica, la clau no s'escriu. És deliberat — una clau present amb valor buit semblaria una correlació que existeix però està en blanc, i qualsevol codi que la llegís hauria de distingir «sense subscripció» de «subscripció desconeguda». Comprova la presència de la clau, no el seu valor.
Són claus de sistema. No les escriguis a mà. Són la correlació entre una
factura de Factuarea i un objecte de Stripe, i les receptes de conciliació de
més avall hi confien. Escriure tu mateix stripe_invoice_id a una factura que
no hi ve al cas fa que aquella factura aparegui en una conciliació a la qual no
pertany, i res no ho assenyalarà — metadata és de forma lliure per disseny.
Fes servir les teves pròpies claus (erp_ref, project_code, …) per a les
teves pròpies correlacions.
Les claus es llegeixen allà on sigui la factura: metadata forma part del recurs
de factura, i torna com un objecte JSON ({} quan és buit).
Filtrar per metadata
Vuit llistats v1 accepten un filtre metadata:
| Recurs | Endpoint |
|---|---|
| Factures | GET /v1/invoices |
| Pressupostos | GET /v1/quotes |
| Factures proforma | GET /v1/proformas |
| Albarans | GET /v1/delivery_notes |
| Factures de compra | GET /v1/purchase_invoices |
| Factures recurrents | GET /v1/recurring_invoices |
| Productes | GET /v1/products |
| Proveïdors | GET /v1/suppliers |
La sintaxi és deepObject: metadata[clau]=valor, un paràmetre de consulta per
parell.
- Els parells es combinen amb AND. Dos parells retornen els documents que compleixen tots dos.
- Coincidència exacta al valor; no hi ha coincidència parcial ni per prefix.
- Fins a 50 parells per petició; a partir d'aquí retorna
parameter_invalid_range. - Les claus han d'encaixar a
[A-Za-z0-9_.-]i mesurar entre 1 i 64 caràcters; qualsevol altra cosa retornaparameter_invalid_enum. - El filtre queda fora del contracte
{operator, value}dels filtres de columna, així que no existeix la formametadata[clau][eq].metadata[clau]=valorés tota la sintaxi.
Deixa que curl codifiqui els claudàtors. [ i ] són caràcters de glob per
a curl i caràcters reservats en una URL. Passa els parells amb
-G --data-urlencode, com a les receptes de més avall, i curl els codifica
correctament. Enganxar un ?metadata[clau]=valor cru en un shell és d'on surt
habitualment el «el filtre s'està ignorant».
Recepta: totes les factures d'una subscripció
La conciliació que necessites quan un client et demana totes les factures del seu pla, o quan tanques l'any d'un subscriptor:
curl -G https://api.factuarea.com/v1/invoices \
-H "Authorization: Bearer $FACTUAREA_API_KEY" \
--data-urlencode "metadata[stripe_subscription_id]=sub_1QRstuVWXYZabcde" \
--data-urlencode "limit=100"{
"data": [
{
"id": "0192f3a4-7b2c-7c1d-9e8f-1a2b3c4d5e6f",
"object": "invoice",
"number": "2026/0184",
"total": "49.90",
"currency": "EUR",
"metadata": {
"stripe_invoice_id": "in_1QRstuVWXYZabcde",
"billing_reason": "subscription_cycle",
"stripe_subscription_id": "sub_1QRstuVWXYZabcde",
"period_start": "2026-07-01",
"period_end": "2026-08-01"
}
}
],
"has_more": false,
"next_cursor": null
}El llistat es pagina per cursor com tots els altres: continua llegint mentre
has_more valgui true, tornant next_cursor a starting_after. Vegeu
Paginació.
Recepta: les factures d'un període de facturació
Dos parells, combinats amb AND: la subscripció i el primer dia del període. És la consulta que respon a «s'ha facturat el cicle de juliol?».
curl -G https://api.factuarea.com/v1/invoices \
-H "Authorization: Bearer $FACTUAREA_API_KEY" \
--data-urlencode "metadata[stripe_subscription_id]=sub_1QRstuVWXYZabcde" \
--data-urlencode "metadata[period_start]=2026-07-01"Com que period_start i period_end són dates exactes en UTC, filtra pel
límit del període en comptes de per un rang — el valor de la metadata és el dia
que Stripe reporta per al cicle, no un mes de calendari local. Per escombrar un
mes sencer de cicles de totes les subscripcions, treu el parell de la subscripció
i consulta metadata[period_start] tot sol.
Filtra per period_start, no per period_end. period_end és el límit
superior exclusiu d'Stripe: el cicle de juliol d'una subscripció mensual porta
period_start: 2026-07-01 i period_end: 2026-08-01. Consultar
metadata[period_end]=2026-07-31 no retorna res, i aquest resultat buit
s'assembla exactament a un cicle que no es va facturar mai.
Un array data buit per a un període que esperaves facturat és un senyal real, no
un error del filtre. És exactament el cas que explica la
safata d'esdeveniments d'integració: obre-la
filtrada per provider=stripe i status=skipped i el motiu de descart tipat et
dirà si el cicle es va saltar perquè l'auto-facturació estava apagada, perquè el
cicle no portava import, o per una altra cosa — i si el pots reprocessar.
Relacionat
- Auto-facturació amb Stripe — com s'emeten, per començar, les factures que aquestes claus descriuen.
- Safata d'esdeveniments d'integració — per què un cicle que esperaves no va produir mai factura.
- Etiquetes i camps personalitzats — escriure i consultar les teves pròpies claus de metadata.