Factuarea API

Facturació FACe (B2G)

Envia factures FacturaE 3.2.2 a FACe — codis DIR3, XML signat XAdES-EPES, estats de tramitació, anul·lació, simulació en sandbox i l'scope facturae:write.

Facturar a una administració pública espanyola (B2G) és obligatori a través de FACe, el punt general d'entrada de factures electròniques (Ley 25/2013). Factuarea genera l'XML FacturaE 3.2.2 de qualsevol factura emesa, el signa XAdES-EPES amb el certificat de la teva empresa i el presenta al web service de FACe — i després segueix rastrejant l'estat de tramitació que informa FACe fins que la factura es paga (o es rebutja).

El cicle de vida complet el cobreixen les cinc operacions del grup FacturaE de la Referència de l'API:

Les lectures usen l'scope facturae:read; enviar i anul·lar requereixen facturae:write. El mòdul FacturaE està inclòs als plans Empresario i Enterprise.

Abans d'enviar

Configura els tres codis DIR3 del client. Tot client administració pública porta tres codis del directori DIR3, cadascun amb el format ^[A-Z][A-Z0-9]{8,9}$ (p. ex. L01280796). Configura'ls en crear o actualitzar el client:

curl -X PUT https://api.factuarea.com/v1/clients/0197a2a8-4cf0-7a31-9a5e-3f2b8c1d6e42 \
  -H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW" \
  -H "Content-Type: application/json" \
  -d '{
    "dir3_accounting_office": "L01280796",
    "dir3_managing_body": "L01280796",
    "dir3_processing_unit": "L01280796"
  }'
CampRol DIR3
dir3_accounting_officeOficina contable (01)
dir3_managing_bodyÓrgano gestor (02)
dir3_processing_unitUnidad tramitadora (03)

L'administració t'indica els tres codis (sovint coincideixen); també pots consultar-los al directori públic DIR3.

Puja un certificat de signatura actiu. FACe només accepta factures signades, així que l'enviament requereix el certificat FNMT (PKCS#12) que la teva empresa ja usa per a VeriFactu (POST /v1/verifactu/certificates). Sense certificat actiu l'enviament falla amb signing_certificate_required.

Emet la factura. Les factures en esborrany no poden viatjar a FACe — enviar o emetre abans la factura és el que congela el seu contingut legal. Els esborranys responen invoice_not_emittable_for_facturae.

Descarregar l'XML FacturaE

Pots descarregar l'XML en qualsevol moment — per a presentació manual, arxiu o validació — sense involucrar FACe:

curl -OJ https://api.factuarea.com/v1/invoices/0197b1c2-89ab-7def-8123-456789abcdef/facturae \
  -H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW"

Amb un certificat actiu el cos va signat XAdES-EPES (política de signatura Facturae v3.1) i el fitxer es diu .xsig; sense, l'XML torna sense signar com a .xml. El header de resposta X-Facturae-Signed: true|false distingeix ambdós casos. Consulta la referència de l'endpoint.

La descàrrega tolera l'absència de certificat (obtens l'XML sense signar); l'enviament a FACe no — FACe exigeix la signatura.

Enviar a FACe

L'operació d'enviament no porta cos de petició: la factura viatja a la ruta i els codis DIR3 es llegeixen del client en el moment de l'enviament (i es capturen a la submission):

curl -X POST https://api.factuarea.com/v1/invoices/0197b1c2-89ab-7def-8123-456789abcdef/face-submissions \
  -H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW" \
  -H "Idempotency-Key: $(uuidgen)"

Resposta (201):

{
  "data": {
    "id": "0197c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
    "object": "face_submission",
    "invoice_id": "0197b1c2-89ab-7def-8123-456789abcdef",
    "status": "submitted",
    "registry_number": "202612345678",
    "dir3_accounting_office": "L01280796",
    "dir3_managing_body": "L01280796",
    "dir3_processing_unit": "L01280796",
    "error_code": null,
    "error_message": null,
    "status_updated_at": "2026-06-12T10:15:00Z",
    "last_polled_at": null,
    "created_at": "2026-06-12T10:15:00Z"
  }
}

registry_number és l'assentament registral de FACe que acredita la presentació — conserva'l per a qualsevol disputa amb l'administració.

Seguir l'estat de tramitació

FACe informa de com l'administració tramita la factura. Factuarea consulta FACe periòdicament i actualitza cada enviament — recuperar el detall de l'enviament (o l'historial d'enviaments de la factura) és la manera de seguir el progrés; no hi ha endpoint de refresc a v1:

curl https://api.factuarea.com/v1/face-submissions/0197c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d \
  -H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW"
statusSignificat
submittedPresentada a FACe; número de registre assignat.
registered_rcfRegistrada al RCF (el registre comptable de factures de l'administració).
accountedReconeguda com a obligació comptable per l'administració.
paidL'administració informa de la factura com a pagada.
rejectedRebutjada per l'administració — consulta el motiu a FACe i emet una factura corregida.
cancellation_requestedHas sol·licitat l'anul·lació; pendent de confirmació de FACe.
cancelledAnul·lació confirmada per FACe.
errorError local de transmissió — error_code i error_message porten el detall.

Prefereixes push a polling? Subscriu-te als esdeveniments de webhook facturae.face_submitted, facturae.face_status_changed i facturae.face_cancellation_requested.

Sol·licitar l'anul·lació

Mentre la factura no s'hagi pagat ni rebutjat pots sol·licitar-ne l'anul·lació (anul·lació 4200). El reason és obligatori i viatja a FACe:

curl -X POST https://api.factuarea.com/v1/face-submissions/0197c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d/cancel \
  -H "Authorization: Bearer fact_live_3pXnR2VbY7TcA9eFmN5z8KqW" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Factura emitida por error al organismo equivocado." }'

L'anul·lació només es permet en un estat anul·lable (submitted, registered_rcf, accounted); en cas contrari la crida respon face_submission_not_cancellable. L'enviament passa a cancellation_requested fins que FACe confirma l'estat final cancelled.

Mode de prova

Amb una clau de prova (fact_test_) tot el flux es simula: cap crida SOAP arriba a FACe i l'enviament rep un número de registre sintètic amb prefix FACE-SANDBOX-*. Les validacions de signatura i DIR3 segueixen aplicant, així que el sandbox exercita els mateixos camins d'error que producció. Consulta el mode de prova.

Errors

HTTPcode / subcodeQuan
404resource_not_foundLa factura o l'enviament no existeix o pertany a una altra empresa.
422business_rule_violation / invoice_not_emittable_for_facturaeLa factura està en esborrany — emet-la primer.
422business_rule_violation / client_missing_dir3_codesAl client li falta un o més codis DIR3.
422business_rule_violation / signing_certificate_requiredSense certificat de signatura actiu — puja'n un via POST /v1/verifactu/certificates.
422business_rule_violation / face_submission_not_cancellableL'enviament no està en un estat anul·lable.
409resource_already_exists / face_submission_already_existsJa existeix un enviament actiu per a la factura.
403insufficient_scopeLa clau no té l'scope facturae:write.
502face_transmission_failedEl web service de FACe està caigut — no es persisteix res; reintenta més tard.

En aquesta pàgina