Factuarea API

Abast i limitacions

El que l'API de Factuarea no fa a propòsit, el que encara no fa, i la manera equivalent de resoldre cada cas — més quatre capacitats que pots donar per absents i no ho estan.

Tota plataforma té fronteres. Una frontera que pots llegir abans d'integrar és una decisió de disseny; una que descobreixes en producció és un defecte. Aquesta pàgina és l'única llista canònica — cap altra guia no manté la seva.

Cada fila declara l'escenari, el seu estat i el workaround: l'alternativa disponible avui, o una declaració explícita que no n'hi ha. Hi ha exactament dos estats, perquè una tercera categoria difusa és el que converteix pàgines com aquesta en mer ornament:

  • Per disseny — no ho construirem. L'alternativa és aquí.
  • En full de ruta — ajornat, no descartat.

Verificat el 31 de juliol de 2026 contra la v1 de l'API. Una fila amb un escenari que passi a estar suportat es retira en el mateix canvi que l'implementa, en lloc de quedar-s'hi com a limitació obsoleta.

Limitacions verificades contra el codi

EscenariEstatWorkaround
Autofactura — el destinatari expedeix la factura en nom del proveïdorPer dissenyNo està modelada. El proveïdor expedeix la seva pròpia factura. Si operes totes dues parts, emet-la des del compte del proveïdor.
Factura expedida per un tercerPer dissenyEl camp AEAT d'expedició per tercer no s'emet. Una assessoria que opera el compte d'un client emet des d'aquell compte amb X-Active-Profile; la factura es declara com a expedida per la mateixa empresa.
MultidivisaPer dissenyEl contracte v1 exposa l'euro, fix: currency és sempre EUR i no hi ha cap columna de divisa. Filtrar un llistat per qualsevol altra divisa retorna una pàgina buida, no un error. Factura en euros i converteix fora de Factuarea.
TicketBAI / Batuz (País Basc)Per dissenyCap alternativa dins de Factuarea. Els sistemes forals bascos fan servir esquemes, certificats i endpoints diferents, i requereixen el seu propi programari certificat. Les empreses amb domicili fiscal basc reben l'avís durant l'onboarding.
Inversió del subjecte passiu, i qualsevol règim d'operació de capçalera, declarats per l'APIPer dissenyL'operation_regime de capçalera és de només lectura a la v1 —ni la creació ni l'actualització no l'accepten—, així que tota factura creada per l'API neix en règim general i es qualifica S1. L'exempció i la no subjecció es declaren per línia amb lines[].exemption_reason, però la inversió del subjecte passiu és la qualificació S2 i no té equivalent de línia: emet aquestes factures des del tauler. Vegeu Clients internacionals.
Suplerts fora de la factura emesa — pressupostos, proformes, albarans, factures de compra, plantilles de recurrentsPer dissenyNomés la factura emesa modela els suplerts. Inclou l'import com a línia ordinària al document previ, i fixa line_type a la factura resultant mentre encara és un esborrany — l'operació d'actualització l'accepta.
Suplerts a l'XML de Facturae i UBL — l'import a pagar de l'XML és el total fiscal, no l'import degutEn full de rutaLa base imposable i les quotes surten correctes —el suplert queda ben exclòs—, però l'import a pagar es queda curt per aquell import i cap element de l'XML no transporta la diferència. No remetis per FACe una factura amb línies de suplert mentre no es mapegi el bloc natiu de Facturae 3.2.2: factura el suplert fora d'aquell canal.
Suplerts a les xifres agregades de cartera — el pending_amount de GET /v1/invoices/stats, l'informe d'aging i el de deutors principalsPer dissenyAquests agregats mesuren volum facturat, la mateixa magnitud que declara la declaració anual d'operacions amb tercers, i tampoc no han restat mai els cobraments parcials. Per a l'import realment degut, llegeix el pending_amount de cada factura, que sí que mesura contra l'import a pagar.

Diferències deliberades respecte d'altres plataformes

Són decisions de producte conscients, no buits. Cadascuna existeix perquè l'alternativa que hem triat és millor per a qui integra que el patró que se'ns demana.

EscenariEstatWorkaround
Paginació per desplaçament amb recompte de pàgines i salt a la pàgina NPer dissenyPaginació per cursor a l'estil de Stripe: limit amb límits validats, més starting_after o ending_before (mútuament excloents). Les respostes porten has_more i next_cursor, i next_cursor val null quan has_more és fals. Vegeu Paginació.
Envelope d'error dual permanent — el nostre envelope i l'RFC 9457 al mateix cos, semprePer dissenyNegociació de contingut. Accept: application/problem+json retorna RFC 9457 pur; qualsevol altra cosa —application/json, */*, sense capçalera Accept— retorna el nostre envelope. Vegeu Errors.
Atomicitat total en la creació massiva — una fila dolenta rebutja el lot sencerPer dissenyÈxit parcial. La resposta porta {dry_run, total, successful, failed, results, failures}, on cada fallada identifica la seva fila per l'index que comença a zero amb el seu propi codi d'error. Importa'n 480 de 500 i arregla les 20. Vegeu Operacions massives.
Totals de línia obligatoris a la petició (line_total, taxable_base)Per dissenyline_total és una suma de control opcional verificada: es compara amb el total calculat amb una tolerància d'un cèntim i després es descarta — mai no es persisteix ni es retorna. No has de replicar el nostre motor de càlcul. Vegeu Suplerts.
Representació o apoderament per tercers — endpoints de representació, documents d'autorització signatsPer dissenyCada empresa puja el seu propi certificat, que ha de coincidir amb el seu propi NIF, es valida per estructura i mida, i té la contrasenya desada xifrada.
Substitució de factures simplificades en dos passos — una rectificativa més una factura completa novaPer dissenyUn sol pas natiu: POST /v1/invoices/substitute-simplified emet la factura substitutiva agregant diverses simplificades. Vegeu Factures simplificades o completes.
SDK de PythonEn full de rutaGenera un client des del document OpenAPI publicat, o fes servir els SDK de TypeScript o PHP, el CLI o el servidor MCP.

Capacitats que pots donar per absents

Quatre coses que Factuarea fa i que qui arriba d'altres plataformes espera rutinàriament no trobar-hi:

CapacitatOn
Factura substitutiva de simplificades, en una sola crida — agregar diversos tiquets en una factura completa sense una rectificativa prèviaFactures simplificades o completes · POST /v1/invoices/substitute-simplified
Esmena de registres VeriFactu rebutjats, exposada a l'API pública — reparar una declaració refusada sense anul·lar la facturaEsmena de registres VeriFactu · POST /v1/verifactu/records/{id}/subsanar
Rectificativa per diferències amb base imposable negativa — la manera fiscalment correcta d'expressar un abonamentFactures rectificatives
Catàleg fiscal de l'AEAT consultable per l'API — règims indirectes, règims d'operació, causes d'exempció amb el seu article de la LIVA, tipus de retenció i els parells legals d'IVA i recàrrec, en tres idiomesClaus de règim · GET /v1/tax-catalog

Cap d'aquestes no s'anuncia ni està en desenvolupament: totes quatre són operacions vives avui.

On viu el raonament fiscal

Aquesta pàgina llista fronteres. Les guies que expliquen les regles que hi ha darrere:

Traçabilitat

Aquesta pàgina documenta l'absència de comportament, cosa que cap regla de negoci no pot afirmar. Les seves files, per tant, s'ancoren de manera diferent de les de les altres guies fiscals: a un punt verificat del codi, a la decisió registrada per a la plataforma, o —quan sí que existeix una regla de negoci— a aquella regla.

Limitacions verificades contra el codi:

FilaAncoratge
AutofacturaNo hi ha aquesta capacitat al domini. Les úniques ocurrències del concepte són la factura que Factuarea emet als seus propis subscriptors i la comprovació de l'empresa del sistema — cap de les dues no és una capacitat de l'API.
Factura expedida per un tercerEl camp AEAT d'expedició per tercer no s'emet mai; cap ocurrència al codi de l'aplicació.
MultidivisaInvoiceV1Resource retorna el literal 'EUR', i el repositori de lectura de la v1 documenta que qualsevol altra divisa dona una pàgina buida.
TicketBAI / BatuzBR-VFC-019 — deliberadament fora de l'abast del context VeriFactu.
Inversió del subjecte passiu per l'APICap petició de la v1 no accepta operation_regime; el recurs de factura el retorna de només lectura. BR-VFC-029 deriva la qualificació d'aquell règim de capçalera, i BR-INV-032 acota el catàleg de línia a causes d'exempció i no subjecció, sense codis S.
Suplerts fora de la factura emesaBR-INV-037 i l'objecte de valor de tipus de línia, que declara que només la factura emesa modela els suplerts; BR-INV-040 per a la restricció de la factura simplificada.
Suplerts a l'XML de Facturae i UBLL'edge case d'avís de BR-INV-042, que deixa registrat que l'import a pagar de tots dos documents és el total fiscal i que el bloc natiu de Facturae 3.2.2 encara no està mapejat.
Suplerts a les xifres agregades de carteraL'edge case de BR-INV-045, que deixa registrat que els agregats mesuren volum facturat i que es deixen mesurant això a propòsit.

Diferències deliberades: ancorades als components HTTP compartits que implementen l'alternativa —la paginació per cursor, el negociador de contingut d'error, el recurs d'èxit parcial de les operacions massives—, a BR-INV-044 per a la suma de control de línia opcional, a BR-VFC-003, BR-VFC-004, BR-VFC-022 i BR-VFC-024 per als certificats propis de l'empresa, i a BR-INV-015 i BR-INV-016 per a la substitució en un sol pas. La fila de l'SDK de Python reflecteix una decisió registrada de planificar-lo per separat quan l'especificació s'estabilitzi: és ajornat, no descartat, que és per què el seu estat és En full de ruta i no Per disseny.

Capacitats: cadascuna s'ancora a la ruta viva que la materialitza — public-api.v1.invoices.substitute_simplified, public-api.v1.verifactu.records.subsanar i public-api.v1.tax-catalog.show — més BR-VFC-033 per a la base imposable negativa i BR-TAX-028 per al catàleg fiscal.

En aquesta pàgina