Cartera de NIF
Dona d'alta, segueix i gestiona els NIF del teu compte per l'API v1 — la plaça contractada que ocupa un NIF addicional, l'aprovisionament, l'estat actiu, inactiu i arxivat, les estadístiques i l'aptitud d'emissió.
La cartera de NIF és la llista de NIF que opera el teu compte. Reuneix l'empresa titular amb la qual es va obrir el compte i cada NIF addicional que dones d'alta o reps per un traspàs. Aquestes operacions donen d'alta un NIF, segueixen com es prepara, el desactiven, el reactiven i l'arxiven, i llegeixen les seves estadístiques i si pot emetre.
Són operacions del compte, així que pengen de /v1/accounts/{account}/companies. {account} és l'account.id que retorna GET /v1/me, i {company} és l'id d'un NIF, un UUID v7 opac, no el seu tax_id. Treballar dins d'un NIF (les seves factures, contactes i sèries) passa per l'eix d'empresa, /v1/companies/{company}/…: arribar a un NIF ho explica. Els NIF d'un altre compte als quals arribes per un accés cedit o per un compte gestionat no formen part de la teva cartera, i el llistat mai no els mostra.
| Operació | Endpoint | Scope |
|---|---|---|
| Llistar NIF | GET /v1/accounts/{account}/companies | companies:read |
| Donar d'alta un NIF | POST /v1/accounts/{account}/companies | companies:write |
| Consultar un NIF | GET /v1/accounts/{account}/companies/{company} | companies:read |
| Actualitzar un NIF | PATCH /v1/accounts/{account}/companies/{company} | companies:write |
| Arxivar un NIF | DELETE /v1/accounts/{account}/companies/{company} | companies:delete |
| Consultar l'estat de creació | GET /v1/accounts/{account}/companies/{company}/creation-status | companies:read |
| Verificar la creació | POST /v1/accounts/{account}/companies/{company}/verify-creation | companies:write |
| Desactivar un NIF | POST /v1/accounts/{account}/companies/{company}/deactivate | companies:write |
| Reactivar un NIF | POST /v1/accounts/{account}/companies/{company}/activate | companies:write |
| Reactivar NIF en lot | POST /v1/accounts/{account}/companies/activate | companies:write |
| Previsualitzar el càrrec | GET /v1/accounts/{account}/companies/seat-charge-preview | companies:read |
| Estadístiques per NIF | GET /v1/accounts/{account}/companies/stats | companies:read |
| Aptitud d'emissió | GET /v1/accounts/{account}/companies/{company}/issuing-readiness | companies:read |
Donar d'alta un NIF
POST /v1/accounts/{account}/companies dona d'alta un NIF al teu compte. name i tax_id són els únics camps obligatoris: la resta del perfil fiscal és opcional i pot anar a la mateixa petició. El tax_id (NIF / CIF / NIE) ha de passar la validació fiscal i ser únic dins del teu compte. Requereix el scope companies:write i una Idempotency-Key: sense ella la resposta és 422 idempotency_key_required, abans que s'executi res.
Tot NIF posterior al primer és un NIF addicional. L'alta passa pel seu gate abans de crear res. Ocupa una plaça contractada lliure del compte i no cobra. Sense plaça lliure, l'aplicació web respon 422 contracted_seats_exhausted i et demana comprar places, mentre que l'API v1 i el MCP compren les que falten en la mateixa crida. Si falla qualsevol comprovació, no es crea res i no es cobra res.
curl -X POST https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies \
-H "Authorization: Bearer $FACTUAREA_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"name": "Talleres García",
"business_name": "Talleres García, Sociedad Limitada",
"tax_id": "B12345674"
}'Resposta (201), amb una capçalera Location que porta la URL canònica del NIF nou:
{
"data": {
"object": "company",
"id": "01931b3e-7c4a-7f2e-9a8b-4d6e7f8a9b0c",
"name": "Talleres García",
"business_name": "Talleres García, Sociedad Limitada",
"tax_id": "B12345674",
"status": "active",
"address": "Calle Mayor 1",
"city": "Madrid",
"postal_code": "28013",
"province": "Madrid",
"country_aeat_zone": "peninsula",
"email": "contacto@talleresgarcia.es",
"phone": "+34911234567",
"logo_url": null,
"paid_until": "2026-07-15T10:00:00+00:00",
"suspension_reason": null,
"created_at": "2026-01-15T09:30:00+00:00",
"updated_at": null
}
}Cos de la petició
| Camp | Obligatori | Notes |
|---|---|---|
name | sí | Nom amb què es coneix l'empresa (1–100 caràcters): el seu nom comercial o, sense business_name, la seva raó social. |
tax_id | sí | Identificador fiscal espanyol (NIF / CIF / NIE), fins a 20 caràcters. Immutable després de l'alta. |
business_name | no | Raó social quan és diferent de name, fins a 100 caràcters. Si no s'envia, name és la raó social. |
address | no | Domicili fiscal, fins a 255 caràcters. |
city | no | Localitat del domicili fiscal, fins a 100 caràcters. |
postal_code | no | Codi postal, fins a 10 caràcters. D'ell es deriva la zona AEAT (country_aeat_zone a les respostes). |
province | no | Província, fins a 100 caràcters. |
country | no | País, fins a 100 caràcters. |
email | no | Email de contacte. |
phone | no | Telèfon de contacte, fins a 20 caràcters. |
L'status de la resposta és l'estat del NIF, un eix diferent del provisioning_status que segueix la seva preparació. paid_until és una dada informativa: el final del període pel qual el NIF es va pagar per darrer cop. No decideix cap càrrec, i val null quan no es va cobrar, en un trial per exemple. No existeix un camp d'entrada country_aeat_zone: envies un country de text lliure, i la zona es deriva del postal_code.
L'alta valida la forma del perfil i el format fiscal del tax_id, res més. Que el NIF pugui després emetre depèn d'altres condicions, com la seva identificació censal, la seva sèrie per defecte i el seu certificat de VeriFactu. L'aptitud d'emissió les llegeix.
El NIF nou entra a l'àmbit de la clau que el va donar d'alta, així que hi pots treballar de seguida. Quan aquesta clau no el pot admetre, l'alta es fa igualment i la clau conserva exactament l'àmbit que tenia. Passa quan la clau està publicada en un navegador, quan un dels seus scopes no està disponible al NIF nou o quan la persona que va emetre la clau no arriba al NIF nou amb el nivell que la clau necessita. GET /v1/me llista a scope el que arriba a tocar una clau: per arribar al NIF nou, emet una clau que el nomeni.
Què pot respondre el gate
El gate és el dels NIF addicionals, i jutja en aquest ordre: qui paga, el pla, el topall i les places. Aquestes són les respostes que pots trobar, totes abans de cap càrrec:
| Resposta | Per què |
|---|---|
403 forbidden_action | La clau no arriba a l'empresa titular del compte, que és la que paga, o la persona que la va emetre no és titular ni administradora del compte amb la secció user_management disponible. |
403 billing_managed_by_provider | Un altre compte paga la facturació d'aquest, així que no pot afegir NIF per si sol: consulta els comptes que paga el seu proveïdor. |
402 additional_nif_plan_required | El compte no té un pla vigent. |
403 additional_nif_not_in_plan | El pla no admet NIF addicionals: només empresario i enterprise els admeten, trial inclòs. |
422 business_rule_violation amb el subcodi additional_nif_limit_reached | El compte superaria el seu topall de NIF addicionals actius. |
402 payment_method_required | Mode de producció amb subscripció de pagament i sense mètode de pagament. error.details.payment_setup_url porta a on configurar-lo. |
402 additional_nif_charge_failed | S'ha rebutjat la compra de les places que falten (l'API v1 i el MCP les compren). |
NIF duplicat
Un tax_id que ja és al teu compte, actiu o inactiu, respon 409 amb resource_already_exists, i error.details.existing_resource_id apunta al NIF que el té:
{
"error": {
"type": "conflict_error",
"code": "resource_already_exists",
"subcode": "managed_company_tax_id_already_exists",
"message": "Ya existe una empresa con ese NIF/CIF/NIE en la cuenta.",
"param": "tax_id",
"details": {
"existing_resource_id": "01931b3e-7c4a-7f2e-9a8b-4d6e7f8a9b0c"
},
"doc_url": "https://docs.factuarea.com/guides/errors#resource_already_exists",
"request_id": "req_01J8Y3M2Q4CF0000000000MCT1"
}
}El subcodi conserva el nom que sempre ha tingut. Un NIF arxivat ja no reté el seu identificador fiscal: pots donar d'alta el mateix tax_id una altra vegada, com un NIF nou amb un id nou que no hereta cap paid_until.
Un NIF que pertany a un altre compte
Un tax_id que ja pertany a un altre compte no es dona d'alta dues vegades. La resposta és 422 business_rule_violation amb el subcodi nif_already_claimed_by_another_account i param tax_id, i no anomena l'altre compte ni res seu. El compte que té el NIF el cedeix amb un traspàs de NIF, i tu l'acceptes.
{
"error": {
"type": "invalid_request_error",
"code": "business_rule_violation",
"subcode": "nif_already_claimed_by_another_account",
"message": "Este NIF ya pertenece a otra cuenta. Para traerlo a la tuya, pide a la cuenta que lo tiene un traspaso de NIF y acéptalo; un NIF no puede estar en dos cuentas a la vez.",
"param": "tax_id",
"doc_url": "https://docs.factuarea.com/guides/errors#business_rule_violation",
"request_id": "req_01J8Y3M2Q4CF0000000000NAC1"
}
}Aprovisionament
L'alta és atòmica: si no es pot ocupar ni comprar la seva plaça no crea res, així que mai no queda un NIF mig obert. El 201 ja descriu un NIF active. Just després, en segon pla, creem la seva sèrie de documents per defecte i la seva configuració fiscal mínima, i has_default_series de l'aptitud d'emissió passa a true quan acaba. Dos endpoints exposen l'estat d'aprovisionament: un per consultar-lo i un altre per reconciliar-lo.
| Operació | Endpoint | Scope |
|---|---|---|
| Consultar l'estat de creació | GET /v1/accounts/{account}/companies/{company}/creation-status | companies:read |
| Verificar (reconciliar) la creació | POST /v1/accounts/{account}/companies/{company}/verify-creation | companies:write |
Estats d'aprovisionament
provisioning_status recorre un cicle curt i en un sol sentit:
| Estat | Significat |
|---|---|
pending | El NIF es va donar d'alta i el seu aprovisionament no ha començat. |
awaiting_payment | El NIF addicional espera que se li cobri. payment_setup_url apunta a on el titular del compte afegeix un mètode de pagament. |
provisioning | El cobrament està resolt, o no calia, i el NIF s'està preparant. |
active | L'aprovisionament ha acabat. El NIF és operatiu. |
failed | L'aprovisionament no s'ha pogut completar, i failed_reason diu per què. És terminal. |
Un NIF sense estat d'aprovisionament desat es llegeix com a active. Cap alta nova deixa un NIF a awaiting_payment: només el pot mostrar un que ja estava esperant el seu pagament, i verificar la creació el resol.
Les claus de proves duen el NIF directament a active, i no hi intervé cap pagament.
Què costa afegir un NIF
Un NIF addicional ocupa una plaça contractada del compte, i donar-lo d'alta o reactivar-lo no cobra: pren una plaça lliure. Només comprar places cobra, prorratejat pel que resta del període, a la subscripció additional-nifs del compte. Quan no queda cap plaça lliure, l'aplicació web respon 422 contracted_seats_exhausted, i l'API v1 i el MCP compren les que falten en la mateixa crida (compra automàtica). Desactivar un NIF n'allibera la plaça sense abaixar la factura: per pagar menys redueixes les places. L'API no guarda l'import: consulta la previsualització o llegeix unit_amount a gestoria_seats en comptes de fixar-lo a mà. NIF addicionals explica el preu i els plans, i la completen la regla del trial i què passa amb els NIF extra quan canvia el teu pla.
Consultar l'estat de creació
GET /v1/accounts/{account}/companies/{company}/creation-status retorna el provisioning_status actual i les seves marques de temps. Requereix el scope companies:read.
curl https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/$COMPANY_ID/creation-status \
-H "Authorization: Bearer $FACTUAREA_KEY"Resposta (200):
{
"data": {
"object": "company_creation_status",
"id": "01931b3e-7c4a-7f2e-9a8b-4d6e7f8a9b0c",
"provisioning_status": "active",
"payment_setup_url": null,
"failed_reason": null,
"started_at": "2026-01-15T09:30:00+00:00",
"completed_at": "2026-01-15T09:31:00+00:00"
}
}payment_setup_url hi és present només mentre l'estat és awaiting_payment i per a una clau de producció que arriba a l'empresa titular, i val null en els altres casos. failed_reason hi és present només quan l'estat és failed.
Verificar la creació
POST /v1/accounts/{account}/companies/{company}/verify-creation reconcilia un NIF amb la subscripció del titular del compte i el fa avançar quan pot. No porta cos i és idempotent. Requereix el scope companies:write.
curl -X POST \
https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/$COMPANY_ID/verify-creation \
-H "Authorization: Bearer $FACTUAREA_KEY"Només actua sobre un NIF a awaiting_payment:
- Quan el titular ja té mètode de pagament, el NIF es cobra com a NIF addicional i passa a
active. - Mentre el titular encara no en té cap, la crida no fa res i respon sense error: el NIF continua a
awaiting_payment. - En qualsevol altre estat la crida no fa res, així que és segura de repetir.
Mai no respon 402: un càrrec que falla deixa l'aprovisionament a failed, amb el seu motiu. Retorna el mateix recurs que la consulta, així que llegeixes el provisioning_status resultant a la mateixa resposta. Cobra al titular del compte, així que la clau ha d'arribar a l'empresa titular (403 forbidden_action en cas contrari).
L'estat d'un NIF
A part de l'aprovisionament, cada NIF té un status al compte. És el camp status del NIF i recorre tres estats:
| Estat | Significat |
|---|---|
active | El NIF és operatiu. |
inactive | El NIF està desactivat: no opera, però les seves dades són intactes i es pot reactivar. |
archived | El NIF ja no accepta operacions. És terminal, tot i que l'empresa i el seu historial es conserven. |
Les transicions són active ↔ inactive (desactivar i reactivar), i active → archived o inactive → archived (arxivar). Dos camps més descriuen l'estat:
paid_until. Dada informativa del NIF: el final del període pel qual es va pagar per darrer cop. No decideix cap càrrec, perquè reactivar pren una plaça lliure o en compra una, sigui quina sigui la data. Valnullquan el NIF no té cap període pagat que informar.suspension_reason. Per què el sistema va suspendre un NIFinactive:payer_blockedquan el compte que paga un compte gestionat té el cobrament bloquejat, imanagement_endedquan la gestió va acabar abans que ningú assumís el pagament. Valnullquan el sistema no l'ha suspès, per exemple perquè l'ha desactivat el mateix compte.
El compte en conserva un. Un compte té sempre almenys un NIF active. Desactivar o arxivar l'empresa titular, o l'últim NIF actiu, necessita un successor: un altre NIF actiu del compte passa a titular en la mateixa operació. Si no n'hi ha cap, la resposta és 422 business_rule_violation amb el subcodi account_must_keep_one_nif i no canvia res.
Desactivar un NIF
POST /v1/accounts/{account}/companies/{company}/deactivate passa un NIF active a inactive. Deixa d'operar i conserva totes les seves dades, de manera reversible. No cobra mai i no respon 402: el NIF addicional allibera la seva plaça, i les places contractades i la factura continuen igual, així que el pots reactivar en aquesta plaça lliure. Per pagar menys, redueix les places. Requereix el scope companies:write.
curl -X POST \
https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/$COMPANY_ID/deactivate \
-H "Authorization: Bearer $FACTUAREA_KEY"Retorna el NIF actualitzat amb status: "inactive".
Reactivar un NIF
POST /v1/accounts/{account}/companies/{company}/activate retorna un NIF inactive a active, i exigeix una Idempotency-Key. El NIF reactivat torna a ser un NIF addicional, així que passa pel mateix gate que una alta i ocupa una plaça contractada lliure sense cobrament. Sense plaça lliure, l'aplicació web respon 422 contracted_seats_exhausted, i l'API v1 i el MCP compren la plaça que falta primer: només si la compra es completa el NIF passa a active. Un en trial, un d'un compte enterprise facturat per contracte i un d'un compte de proves no es cobren. Requereix el scope companies:write.
curl -X POST \
https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/$COMPANY_ID/activate \
-H "Authorization: Bearer $FACTUAREA_KEY" \
-H "Idempotency-Key: $(uuidgen)"Retorna el NIF actualitzat amb status: "active".
Reactivar NIF en lot
POST /v1/accounts/{account}/companies/activate reactiva diversos NIF en una sola crida. Ocupen les places lliures i, a l'API v1 i al MCP, les places que encara falten per a tot el lot es compren en una única compra conjunta: una factura per al lot. El cos porta company_ids, una llista de valors id (1–1000), i la crida exigeix una Idempotency-Key. Requereix el scope companies:write.
curl -X POST https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/activate \
-H "Authorization: Bearer $FACTUAREA_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"company_ids": [
"01931b3e-7c4a-7f2e-9a8b-4d6e7f8a9b0c",
"01931b3e-8d5b-7a1f-9c2d-5e6f7a8b9c0d"
]
}'El lot és tot o res. Cada NIF es valida abans de comprar res: un que no forma part del teu compte respon 404 per a tot el lot, i un que no és inactive respon 422 business_rule_violation. El gate i el topall jutgen el lot sencer. La resposta és la llista de NIF reactivats ({ "data": [ … ] }).
Previsualitzar el càrrec
GET /v1/accounts/{account}/companies/seat-charge-preview retorna les places que afegir o reactivar NIF addicionals ocuparia o compraria i el que costaria, calculat a partir de la propera factura del titular del compte i sense cobrar res. Primer es fan servir les places contractades lliures avui. Fes-lo servir per mostrar l'import prorratejat abans d'una alta o d'una reactivació. Requereix el scope companies:read. La ruta conserva el seu nom original.
Té dos modes:
count(1–1000, per defecte 1) previsualitza el prorrateig conjunt d'afegir aquesta quantitat de NIF.company_ids[]porta valorsidconcrets i dimensiona l'operació per a aquests NIF exactes. Quan és present, té prioritat sobrecount.
curl -G https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/seat-charge-preview \
-H "Authorization: Bearer $FACTUAREA_KEY" \
--data-urlencode "count=3"Resposta (200):
{
"data": {
"object": "seat_charge_preview",
"amount": "7.50",
"tax_amount": "1.58",
"total": "9.08",
"tax_rate": 21,
"currency": "EUR",
"next_invoice_date": "2026-04-01T00:00:00Z",
"requires_payment_method": false,
"requires_active_plan": false,
"included_in_trial": false,
"already_covered": false,
"is_first_seat": false,
"recurring_quantity": 3,
"recurring_base_cents": 4500,
"recurring_total_cents": 5445
}
}amount és la base imposable del prorrateig, tax_amount l'IVA i total (amount + tax_amount) el que realment es cobra, tot en euros com a cadenes amb dos decimals. tax_rate és el percentatge d'IVA, o null quan no s'ha pogut resoldre. Els camps recurring_* projecten la quota mensual després de l'operació: quants NIF addicionals es facturen, la seva base i el mateix amb IVA. Els dos camps _cents continuen en cèntims, com diuen els seus noms, i recurring_total_cents val null quan l'IVA no es pot calcular.
Quatre banderes mútuament excloents expliquen un import de 0, per ordre de prioritat (already_covered continua a la resposta i val sempre false: paid_until ja no cobreix res):
| Bandera | amount és 0 perquè… |
|---|---|
included_in_seats | Les places contractades lliures cobreixen tota l'operació, així que no es cobra res i no cal mètode de pagament. |
requires_active_plan | El compte no té un pla vigent, o el seu pla no admet NIF addicionals. |
included_in_trial | El compte és al seu trial, i l'operació no es cobra durant aquest. |
requires_payment_method | El compte té un pla de pagament i no té mètode de pagament, i n'ha d'afegir un primer. |
is_first_seat és true quan l'operació crea la primera subscripció de NIF addicionals del compte: el càrrec és llavors un mes complet, i avui passa a ser el dia de facturació mensual.
free_seats_used indica quantes places contractades lliures ocuparia l'operació i seats_to_buy quantes hauria de comprar. included_in_seats val true quan les places lliures ho cobreixen tot, i aleshores zero_reason val included_in_seats. seats és el bloc de places contractades després de l'operació, i cancels_pending_reduction val true quan l'operació cancel·laria una reducció pendent. Aquests camps són additius: l'exemple de resposta de dalt no els llista.
La previsualització és una lectura, així que mai no respon 402 i no jutja el pla ni el topall de les escriptures. Respon 403 billing_managed_by_provider quan el proveïdor paga la facturació del compte, i 404 quan un valor de company_ids[] no és un NIF del compte. NIF addicionals explica cada camp.
Llistar i consultar NIF
GET /v1/accounts/{account}/companies retorna els NIF del teu compte que llegeix la teva clau, amb paginació per cursor. GET /v1/accounts/{account}/companies/{company} en retorna un. Les dues requereixen companies:read.
| Paràmetre | Notes |
|---|---|
status | active, inactive o archived. Sense ell, el llistat retorna els active i inactive, i status=archived és la manera de veure els arxivats. |
tax_id | Coincidència exacta amb l'identificador fiscal. Un NIF fora de l'àmbit de la teva clau retorna una llista buida, mai un error. |
include | readiness afegeix l'aptitud d'emissió a cada NIF. Qualsevol altre valor respon 422 invalid_param_value. |
limit | Entre 1 i 100, 25 per defecte. |
cursor | L'id de l'últim NIF de la pàgina anterior. Aquest llistat porta un únic cursor, no starting_after: consulta la paginació. |
curl "https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies?status=inactive&limit=25" \
-H "Authorization: Bearer $FACTUAREA_KEY"Només es retornen els NIF del compte del camí, i només els que són dins de l'àmbit de la teva clau. Un NIF que no és un d'aquests respon 404: consulta l'aïllament.
Estadístiques per NIF
GET /v1/accounts/{account}/companies/stats retorna una fila company_stats per cada NIF que llegeix la teva clau, amb els arxivats ocults: les factures emeses del període (invoices_count), el que facturen (total_invoiced, una cadena amb dos decimals) i l'última factura emesa sigui quin sigui el període (last_invoice, o null). El període són date_from i date_to (YYYY-MM-DD, inclusius i tots dos opcionals): sense ells és l'any natural en curs. El llistat no està paginat. Requereix companies:read.
curl "https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/stats?date_from=2026-01-01&date_to=2026-09-30" \
-H "Authorization: Bearer $FACTUAREA_KEY"{
"data": [
{
"object": "company_stats",
"company_id": "01931b3e-7c4a-7f2e-9a8b-4d6e7f8a9b0c",
"tax_id": "B12345674",
"name": "Talleres García",
"invoices_count": 3,
"total_invoiced": "363.00",
"last_invoice": {
"number": "F-2026-003",
"issued_on": "2026-09-20",
"total": "121.00"
}
}
],
"has_more": false,
"next_cursor": null
}Pot emetre aquest NIF?
GET /v1/accounts/{account}/companies/{company}/issuing-readiness respon si un NIF està a punt per emetre factures. És una lectura neutra i fiscal: can_issue és el veredicte, blockers llista els motius llegibles per màquina quan és false, i els altres camps són els senyals amb què es va compondre. Mai no mira la subscripció, el pla ni el preu, i mai no respon amb un estat de pagament requerit. Amb include=readiness al llistat, cada NIF porta el mateix objecte a readiness.
{
"data": {
"can_issue": false,
"blockers": [
"census_not_identified",
"no_default_series"
],
"census_status": "not_identified",
"has_default_series": false,
"fiscal_profile_complete": true,
"operable": true,
"missing_modules": [],
"checked_at": "2026-05-25T18:00:00+00:00"
}
}Ramifica segons el codi de cada bloqueig, com verifactu_certificate_missing quan VeriFactu està activat i el NIF no té un certificat vàlid. Poden aparèixer motius nous: tracta'n un de desconegut com un bloqueig que no pots resoldre per l'API. Comptes i NIF descriu els camps.
Actualitzar un NIF
PATCH /v1/accounts/{account}/companies/{company} és una actualització parcial del perfil: name, business_name, address, city, postal_code, province, country, email i phone. Els camps omesos conserven el seu valor, i "" en buida un. name és sempre el nom amb què es coneix l'empresa: canviar només name canvia el nom comercial si hi ha una raó social diferent i, si no, la raó social. Canviar només business_name canvia la raó social i conserva name, i "business_name": "" fa de name la raó social. country_aeat_zone es deriva del codi postal, i el tax_id és immutable: enviar-lo respon 422. Només es pot editar un NIF active (422 business_rule_violation en cas contrari). Editar no es factura i mai no respon 402. Requereix el scope companies:write.
curl -X PATCH \
https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/$COMPANY_ID \
-H "Authorization: Bearer $FACTUAREA_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Talleres García e Hijos SL" }'Arxivar un NIF
DELETE /v1/accounts/{account}/companies/{company} arxiva el NIF en lloc d'esborrar-lo: el seu status passa a archived, deixa d'acceptar operacions, i l'empresa i el seu historial es conserven. La resposta és 204. Es pot arxivar un NIF active o inactive, i archived és terminal. Arxivar no cobra mai i no respon 402. Requereix el scope companies:delete.
curl -X DELETE \
https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/$COMPANY_ID \
-H "Authorization: Bearer $FACTUAREA_KEY"Què més fa arxivar:
- Allibera l'identificador fiscal, com va explicar l'alta, i revoca els traspassos de NIF oberts d'aquest NIF.
- Allibera la seva plaça una sola vegada. Un NIF addicional que encara era
activeallibera la plaça que ocupava, sense abaixar la factura, i un que ja erainactiveno té plaça que alliberar de nou. - Continua sent llegible. Un NIF arxivat continua apareixent al llistat amb
status=archived, iGET /v1/accounts/{account}/companies/{company}encara el retorna. Un canvi pel compte (PATCH,activateoDELETE) respon404 resource_not_found, igual que un NIF que no és del compte, i una operació sobre les seves dades per/v1/companies/{company}/…respon403 company_inactive(resolució).
Arxivar pot quedar bloquejat. Quan el NIF encara té documents fiscals oberts, o és l'últim NIF actiu del compte i no té successor (account_must_keep_one_nif), la resposta és 422 business_rule_violation i el NIF conserva el seu estat. Resol la causa i torna a arxivar.
Scopes, capacitat i aïllament
La cartera té els seus propis scopes, i no necessiten cap pla concret. El pla només importa dins de l'operació que afegeix un NIF, a través del gate del NIF addicional:
companies:readllista i consulta NIF, llegeix les estadístiques, l'aptitud d'emissió i l'estat de creació, i previsualitza el càrrec.companies:writedona d'alta, actualitza, reactiva (un o diversos), desactiva i verifica la creació.companies:deletearxiva.
Cap dels tres es concedeix per OAuth: fes servir una API key.
Capacitat de compte. Tota escriptura és una capacitat del compte. La persona que va emetre la clau ha de ser titular o administradora del compte amb la secció user_management disponible, i si no la resposta és 403 forbidden_action, abans de cobrar o canviar res. Una escriptura que pot comprar places (alta, reactivació, lot i verificació) necessita a més una clau que arribi a l'empresa titular, que és la que paga.
Nivell al NIF. Una clau té view o operate a cada NIF al qual arriba, com expliquen les claus acotades. Amb view, una escriptura sobre aquest NIF respon 403 company_read_only i no canvia res, i sense accés respon el mateix 404 que un NIF fora del compte.
Aïllament. Un {company} que no existeix, pertany a un altre compte, és fora del que llegeix la teva clau, pertany a l'altre entorn o no és un identificador respon el mateix 404 resource_not_found, amb param company, i mai un 403: un 403 diria que el NIF existeix. Un {account} que no és el compte de la teva clau respon 404 account_not_found.
{
"error": {
"type": "not_found_error",
"code": "resource_not_found",
"message": "NIF no encontrado en la cuenta.",
"param": "company",
"doc_url": "https://docs.factuarea.com/guides/errors#resource_not_found",
"request_id": "req_01J8Y3M2Q4CF0000000000RNF1"
}
}Un NIF al qual arribes només per una relació entre comptes no és un NIF del teu compte. Editar, activar, desactivar, arxivar o verificar un NIF cedit pel teu propi {account} respon aquest mateix 404, sense canvis i sense càrrec. Les seves dades es serveixen per l'eix d'empresa, com explica arribar a un NIF. Els comptes gestionats descriuen la llista tancada de rutes en què {account} pot anomenar un compte gestionat en lloc del teu.
Claus de proves. Una clau fact_test_ pertany al teu compte real, així que llegeix la teva cartera com una clau de producció. Tota escriptura de la cartera sobre el teu compte de producció respon 403 live_credential_required, sense escriure res. Provar comptes gestionats cobreix el que pot fer una clau de proves.
Identitat per a l'enviament de documents
Enviar un document per email pot exigir que s'acrediti la identitat del remitent, i un compte nou parteix d'un règim més estricte. Un NIF pren les dues coses de l'empresa de la qual hereta la seva confiança:
- L'empresa titular d'un compte no hereta de ningú.
- Qualsevol altre NIF d'un compte que no és gestionat, perquè el compte el va comprar, el va rebre per traspàs o el va donar d'alta, hereta de l'empresa titular del seu propi compte.
- Els NIF d'un compte gestionat hereten de l'empresa titular del compte del proveïdor mentre duri la gestió, i de la seva pròpia empresa titular quan acaba.
- Un NIF al qual arribes per un accés cedit no hereta res del compte receptor: la seva confiança continua sent la de l'empresa titular del seu propi compte.
422 sender_identity_not_verified vol dir que cal corregir la identitat de l'empresa de la qual hereta el NIF, i un 429 correspon a un pressupost d'enviament diferent. Consulta enviament de documents i què comparteixen els NIF d'un compte.
Segueix la cartera amb esdeveniments
Els webhooks de compte publiquen el que passa amb els NIF del compte: account.nif_added quan n'entra un (registered quan el dones d'alta tu), account.nif_transferred amb direction in o out quan un es mou per traspàs, i account.nif_archived quan en arxives un. El catàleg no té cap esdeveniment per desactivar o reactivar un NIF.
Relacionat
el compte, el seu equip, els grants per NIF i el traspàs de NIF.
el pla, les places contractades, el trial i el topall quan el teu compte afegeix un NIF.
tria el NIF a cada petició amb el segment {company}.
claus que arriben només a una part del compte.
deixa que un altre compte arribi a tots o alguns dels teus NIF amb view o operate.
aprovisiona comptes per als teus clients per API.
rep en un sol endpoint els esdeveniments del teu compte i dels seus NIF.