NIF adicionales
Compra más NIF para tu cuenta: plan, cargo, trial, tope y la vista previa antes de confirmar.
Tu cuenta se abre con un NIF, su empresa titular. Cada uno de los demás NIF que opera la cuenta es un NIF adicional, tanto si lo das de alta como si lo reactivas o lo recibes por un traspaso de NIF. Los NIF adicionales se facturan como un add-on mensual, así que añadir uno puede cobrar a tu cuenta en el acto. Esta guía explica lo que pagas, qué planes los admiten, el tope, la regla del trial, la vista previa y los cuatro códigos que rechazan un alta.
Las escrituras y la vista previa viven en el eje de cuenta: {account} es el account.id
que lees en GET /v1/me, y {company}
es el id de una empresa, un UUID v7 opaco, no su tax_id. La
lectura de facturación del final vive en el eje de empresa.
Qué cuenta como NIF adicional
- El primer NIF nunca cuenta. La empresa titular es aquella con la que se abrió la cuenta y la que contrata el plan. El primer NIF que entra en una cuenta sin ningún NIF activo no es un NIF adicional.
- Solo cuentan los NIF
active. La cantidad facturada es el número de NIF activos menos la empresa titular. Un NIFinactiveoarchived, y la empresa sandbox de un NIF, no cuentan. - Da igual por dónde entre. Un NIF que das de alta por la API o desde la app, uno que reactivas y uno que recibes por traspaso cuestan lo mismo una vez activos.
La cantidad sigue sola a tu cartera, y una reconciliación horaria la mantiene alineada con el número de NIF adicionales activos. La reconciliación corrige la cantidad sin cobrar ni abonar nada.
Precio y planes
Un NIF adicional cuesta 15.00 EUR al mes antes de IVA. Se factura siempre de forma
mensual, incluso cuando el plan de la cuenta es anual, y vive en su propia suscripción de la
cuenta (additional-nifs), separada de la que paga el plan.
La API no guarda el importe: es el precio del add-on. Para saber lo que paga tu cuenta,
lee unit_amount en gestoria_seats o pregunta a la
vista previa en lugar de fijar 15.00 en tu código.
Solo algunos planes admiten NIF adicionales:
| Plan | NIF adicionales |
|---|---|
emprendedor | No los admite: 403 additional_nif_not_in_plan. |
empresario | Los admite, con facturación mensual. |
integral | Los admite, con facturación mensual. |
enterprise | Los admite. Si la cuenta se factura por contrato, sin suscripción de pago, no se cobra nada. |
El plan de un NIF adicional no sigue al de la cuenta. En una cuenta Profesional (empresario) o Avanzado (integral), cada NIF adicional tiene el plan Profesional (empresario); solo el NIF titular tiene el plan de la cuenta.
La cuenta necesita además un plan vigente. Sin ninguno (cancelado o caducado) la
respuesta es 402 additional_nif_plan_required. Un trial cuenta como plan vigente, consulta
la regla del trial. El plan se comprueba dentro de cada operación y no a través de
los scopes: los scopes companies:* no dependen del plan.
El tope
Tu contrato puede fijar un número máximo de NIF adicionales activos para la cuenta. Se
guarda en la cuenta como max_additional_nifs. Por defecto está vacío, lo que significa
sin tope, y solo lo fijamos nosotros, por contrato. La API no lo devuelve.
Cuando añadir un NIF más, o varios a la vez, dejaría la cuenta por encima del tope, la
respuesta es 422 business_rule_violation con subcode additional_nif_limit_reached,
antes de cobrar o cambiar nada. Un lote se rechaza entero: nunca deja pasar unos NIF y
frena otros.
{
"error": {
"type": "invalid_request_error",
"code": "business_rule_violation",
"subcode": "additional_nif_limit_reached",
"message": "Has alcanzado el máximo de NIF adicionales de tu contrato (5).",
"doc_url": "https://docs.factuarea.com/guides/errors#business_rule_violation",
"request_id": "req_c15e7a1c0d9b3f46a28c060000"
}
}Las cuatro escrituras
Cuatro operaciones pueden añadir un NIF adicional activo. Pasan por el mismo gate, con los mismos códigos y en el mismo orden.
| Escritura | Endpoint | Scope |
|---|---|---|
| Dar de alta un NIF nuevo | POST /v1/accounts/{account}/companies | companies:write |
| Reactivar un NIF | POST /v1/accounts/{account}/companies/{company}/activate | companies:write |
| Reactivar varios a la vez | POST /v1/accounts/{account}/companies/activate | companies:write |
| Aceptar un traspaso de NIF | POST /v1/accounts/{account}/nif-transfers/accept | nif_transfers:write |
Lo que comparten las cuatro:
Idempotency-Keyes obligatoria. Una petición sin ella se rechaza con422 idempotency_key_requiredantes de ejecutar ninguna lógica de negocio.- Quién puede pedirlo. La credencial debe alcanzar la empresa titular de la cuenta, que
es la que paga. Para dar de alta o reactivar, la persona que emitió la clave debe tener
además el rol de titular (
owner) o de administrador (admin) en la cuenta, con la secciónuser_managementdisponible; para aceptar un traspaso, necesita un rol administrativo en al menos un NIF de la cuenta receptora. Si no, la respuesta es403 forbidden_action, antes de cobrar o cambiar nada. - Una credencial de solo lectura. Si la credencial solo tiene acceso
viewal NIF, reactivar o aceptar un traspaso devuelve403 company_read_only. - El lote es todo o nada.
company_idsadmite entre 1 y 1000 ids. Cada NIF se valida antes de cobrar nada: debe pertenecer a la cuenta y estarinactive(si no,422 business_rule_violation), y uno que no sea de la cuenta devuelve404para todo el lote. Los NIF adicionales del lote se cobran juntos en una sola factura.
curl -X POST https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies \
-H "Authorization: Bearer $FACTUAREA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"name": "Talleres García SL",
"tax_id": "B12345674"
}'El 201 es la nueva company, con status: "active". Su paid_until es el final del
periodo por el que está pagado, o null cuando no se cobró (un trial, por ejemplo). Un
tax_id ya registrado en tu cuenta devuelve 409 resource_already_exists; uno que pertenece
a otra cuenta devuelve 422 business_rule_violation y se mueve con un
traspaso de NIF.
El gate y sus cuatro códigos
Antes de crear, reactivar, mover o cobrar nada, cada escritura pasa por el gate del NIF adicional. Comprueba en este orden y se detiene en el primer fallo:
- Quién paga. La cuenta tiene que pagarse a sí misma.
- El plan. La cuenta necesita un plan vigente que admita NIF adicionales.
- El tope. La cuenta debe quedarse dentro de
max_additional_nifs. - El cargo. En modo producción con suscripción de pago, el cargo tiene que completarse.
Todo rechazo llega antes de cualquier cargo y no escribe nada: no se crea, reactiva ni mueve ningún NIF, y no se cobra nada. Los cuatro códigos del gate:
| Código | Status | Qué significa | Qué hacer |
|---|---|---|---|
billing_managed_by_provider | 403 | Otra cuenta paga la facturación de esta, así que no puede añadir un NIF por su cuenta. | Pide el alta, la reactivación o la aceptación del traspaso a la cuenta que paga. Consulta cuentas pagadas por su proveedor. |
additional_nif_plan_required | 402 | La cuenta no tiene un plan vigente, así que no hay suscripción sobre la que cobrar el NIF adicional. | Contrata un plan empresario, integral o enterprise, o reanuda el que cancelaste, y repite la misma llamada. |
additional_nif_not_in_plan | 403 | El plan es vigente pero no admite NIF adicionales (emprendedor). | Pasa la cuenta a empresario, integral o enterprise y repite la misma llamada. Es un límite de plan, no un pago pendiente. |
additional_nif_charge_failed | 402 | Se rechazó el cobro inmediato: la tarjeta se denegó, necesita autenticación o el proveedor de pago estaba inaccesible. | Arregla el método de pago en el portal de facturación y repite la misma llamada. |
Otros rechazos que puedes encontrar en las mismas escrituras:
| Código | Status | Qué significa |
|---|---|---|
business_rule_violation con subcode additional_nif_limit_reached | 422 | El alta dejaría la cuenta por encima de su tope. |
payment_method_required | 402 | Modo producción, suscripción de pago y ningún método de pago registrado. error.details.payment_setup_url enlaza a donde configurarlo. |
forbidden_action | 403 | La credencial no alcanza la empresa titular, o la persona que emitió la clave no tiene el rol que exige la escritura. |
company_read_only | 403 | La credencial solo tiene acceso view al NIF. |
idempotency_key_required | 422 | La petición no lleva Idempotency-Key. |
Cuándo se cobra
En modo producción con suscripción de pago el NIF adicional se cobra en el acto en la
suscripción additional-nifs de la cuenta: prorrateado por lo que resta del periodo actual o,
cuando es el primero y se crea la suscripción, el primer mes completo. Sin método de pago
registrado la escritura se rechaza con 402 payment_method_required:
{
"error": {
"type": "payment_required_error",
"code": "payment_method_required",
"message": "La cuenta no tiene un método de pago configurado para cobrar el NIF adicional: configúralo y vuelve a intentarlo.",
"details": {
"payment_setup_url": "https://billing.stripe.com/p/session/live_YWNjdF8xS2ZHM0RLb0h4RXBGV3lY"
},
"doc_url": "https://docs.factuarea.com/guides/errors#payment_method_required",
"request_id": "req_c15e7a1c0d9b3f46a28c010000"
}
}Un cobro rechazado es 402 additional_nif_charge_failed. Si la propia operación falla después
del cargo, el cargo se compensa: nunca te quedas pagando un NIF que no se añadió.
No se cobra nada cuando la cuenta está en su trial, cuando es una cuenta enterprise facturada por contrato sin suscripción de pago, cuando es una cuenta de pruebas (el gate no llama al proveedor de pago, consulta cuentas gestionadas de pruebas) o cuando el NIF sigue cubierto.
Cobertura. paid_until en la empresa es el final del periodo por el que el NIF está
pagado. Cada renovación pagada lo amplía, para todos los NIF adicionales activos, hasta el
final del nuevo periodo. Desactivar un NIF (POST /v1/accounts/{account}/companies/{company}/deactivate)
lo libera sin crédito pero conserva su cobertura, así que reactivarlo antes de paid_until
es gratis. Cuando la cobertura caduca, paid_until es null y reactivarlo se vuelve a cobrar.
Desactivar nunca se factura ni devuelve 402, y la cuenta debe conservar al menos un NIF activo
(422 business_rule_violation con subcode account_must_keep_one_nif).
La regla del trial
Mientras la cuenta está en su trial, los NIF adicionales son gratis, se añadan como se
añadan. Eso cubre la ventana de prueba sin suscripción y una suscripción de plan que está en su
periodo de prueba (con tarjeta registrada, estado trialing). La vista previa
responde included_in_trial: true sin cargo.
Cuando la cuenta empieza a pagar, porque el trial termina y el primer cobro se completa o
porque se suscribe directamente a un plan de pago, los NIF adicionales que tenía gratis pasan a
inactive, sin cobro ni crédito. Lo hacemos para que no se cobre nada que no hayas elegido.
Dos detalles:
- Un NIF cuyo
paid_untilsigue en el futuro continúa activo, porque ya estaba pagado. - La regla solo actúa en modo producción sobre una cuenta que cobra de verdad: una cuenta de pruebas conserva sus NIF.
Después reactivas los que quieres conservar, uno a uno o en lote, y cada reactivación se cobra como cualquier otra.
Cuando cambia tu plan
La vida del plan arrastra a los NIF adicionales:
- Un plan que no los admite. Bajar a un plan sin NIF adicionales, o un plan que caduca (un
trial vencido, un pago que no se pudo recuperar, una suscripción eliminada), desactiva los NIF
adicionales activos, nunca la empresa titular, y los libera sin crédito. Con la caducidad, la
suscripción
additional-nifsse cancela además de inmediato. Pasar entre planes que sí los admiten, como deenterpriseaempresario, no cambia nada. - Cancelar el plan programa la cancelación de la suscripción de NIF adicionales para la misma fecha, a fin de periodo o de inmediato, igual que el plan. Reanudar el plan quita esa cancelación programada mientras la cuenta conserve NIF adicionales activos.
- No vuelven solos. Un NIF desactivado así se reactiva con un plan que lo admita, y la reactivación se cobra.
Vista previa del cargo
GET /v1/accounts/{account}/companies/seat-charge-preview devuelve lo que costaría la siguiente
alta, calculado con la próxima factura de la empresa titular, sin cobrar. Requiere
companies:read.
| Parámetro | Notas |
|---|---|
count | Previsualiza un lote de N NIF, entre 1 y 1000 (1 por defecto). |
company_ids[] | Vista previa consciente de la cobertura por UUID v7: los NIF aún cubiertos en el periodo cuestan 0 con already_covered: true. Si la envías, manda sobre count. |
curl -G https://api.factuarea.com/v1/accounts/$ACCOUNT_ID/companies/seat-charge-preview \
-H "Authorization: Bearer $FACTUAREA_API_KEY" \
--data-urlencode "count=3"{
"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
}
}| Campo | Significado |
|---|---|
amount, tax_amount, total | El prorrateo que se cobra ahora: base imponible, IVA y su suma, en euros como cadenas con dos decimales. |
tax_rate, currency, next_invoice_date | El tipo de IVA en porcentaje (null si no se pudo resolver), EUR y la fecha de la próxima factura del add-on. |
already_covered, requires_active_plan, included_in_trial, requires_payment_method | Por qué el importe es 0, o qué falta. Como máximo una es true. requires_active_plan cubre tanto no tener plan vigente como tener un plan que no admite NIF adicionales. |
is_first_seat | true cuando la operación crea la primera suscripción de NIF adicionales de la cuenta: el cargo es entonces el mes completo, y hoy pasa a ser el día de cobro mensual. |
recurring_quantity, recurring_base_cents, recurring_total_cents | La cuota mensual tras la operación: cuántos NIF adicionales se facturarán, su base y lo mismo con IVA. Los dos campos _cents siguen en céntimos, como dicen sus nombres, y recurring_total_cents es null cuando no se conoce el IVA. |
La vista previa es una lectura: nunca devuelve 402 y no evalúa el plan ni el tope de las
escrituras. Un NIF que no es adicional, una cuenta de pruebas, una cuenta sin plan vigente y una
cuyo plan no admite NIF adicionales previsualizan 0. Devuelve 403 billing_managed_by_provider
cuando el proveedor paga la facturación de la cuenta, y 404 cuando un valor de company_ids no
es un NIF de la cuenta.
Una vista previa correcta no promete que la escritura vaya a pasar: el tope solo se comprueba
cuando añades el NIF. Si el proveedor de pago no puede simular la factura, la vista previa
recurre al precio del add-on antes de IVA, así que tax_rate y recurring_total_cents pueden
ser null.
Recibir un NIF por traspaso
Aceptar un traspaso de NIF con
POST /v1/accounts/{account}/nif-transfers/accept añade el NIF entrante a la cuenta receptora
como NIF adicional. El gate de la cuenta receptora se ejecuta antes de mover nada. Un
rechazo deja el traspaso vigente y el NIF en la cuenta emisora, así que puedes arreglar la causa,
como un plan o un método de pago, y aceptar de nuevo con el mismo secreto.
En modo producción con suscripción de pago el NIF se cobra al aceptar, y si el traslado falla
después del cargo, el cargo se compensa. La parte receptora necesita un rol administrativo en al
menos un NIF de su cuenta, y una credencial que alcance la empresa titular de la cuenta receptora
con acceso de escritura (403 forbidden_action, o 403 company_read_only cuando es de solo
lectura).
Hay una excepción: una cuenta registrada sin NIF recibe el NIF como su empresa titular, y no paga nada.
Cuentas pagadas por su proveedor
Una cuenta gestionada cuya gestión está vigente y cuya facturación
paga su proveedor no compra nada por su cuenta. Su titular recibe
403 billing_managed_by_provider en las cuatro escrituras y en la vista previa.
En su lugar, el proveedor añade los NIF. Las personas de la cuenta del proveedor con acceso
operate a la cuenta gestionada los dan de alta y los reactivan por los mismos endpoints, con el
{account} de la cuenta gestionada, y el cargo va a la suscripción managed-accounts del
proveedor, prorrateado en el acto. El gate sigue juzgando a la propia cuenta gestionada: su plan
(emprendedor recibe 403 additional_nif_not_in_plan), su tope y el método de pago del proveedor
(402 payment_method_required si no tiene ninguno, 402 additional_nif_charge_failed cuando se
rechaza el cobro). Las cuentas de pruebas y las cuentas gestionadas enterprise, facturadas por
contrato, no se cobran.
Cuando el cliente asume el pago, o la gestión termina tras la reclamación, la cuenta vuelve a pagarse a sí misma y todo lo anterior se aplica de nuevo a su titular. Lo que paga el proveedor está en precio de las cuentas gestionadas y cambio de pagador.
Leer lo que pagas
GET /v1/companies/{company}/billing (scope account:read) devuelve la instantánea de
suscripción de la cuenta. Su bloque gestoria_seats describe la suscripción de NIF adicionales.
El campo conserva su nombre público original para no romper las integraciones existentes, y no hay
alias: pese al nombre, cuenta NIF adicionales y nada más.
{
"gestoria_seats": {
"status": "active",
"quantity": 4,
"active_companies": 4,
"unit_amount": "15.00",
"tax_rate": 21,
"tax_amount": "3.15",
"total_per_seat": "18.15",
"recurring_total": "72.60",
"currency": "EUR",
"billing_interval": "month",
"next_invoice_at": "2026-07-15T10:00:00+00:00",
"ends_at": null
}
}| Campo | Significado |
|---|---|
status | Estado de la suscripción de NIF adicionales (active, past_due…), o none cuando aún no hay suscripción, como en un trial. |
quantity, active_companies | Unidades facturadas, una por NIF adicional activo, y número de NIF adicionales activos. |
unit_amount, tax_amount, total_per_seat, recurring_total | La base imponible de una unidad, su IVA, la unidad con IVA y el total mensual proyectado (total_per_seat × quantity). |
billing_interval | Siempre month, sea cual sea el intervalo del plan. |
Los importes son euros como cadenas con dos decimales, no céntimos enteros. Son null cuando el
coste no se puede resolver (una cuenta enterprise fuera del proveedor de pago, una sandbox, sin
plan vigente): nunca un 0 engañoso. El bloque entero es null cuando la cuenta no tiene
suscripción de NIF adicionales ni NIF adicionales activos, y en un trial con NIF adicionales
activos muestra status: "none" y quantity: 0. Una empresa cuya facturación paga otra empresa
responde managed: true con gestoria_seats: null, así que el cobro de quien paga nunca se
filtra.
Próximos pasos
la cuenta, su equipo, los grants por NIF y el traspaso de NIF.
da de alta, lista, desactiva y archiva los NIF de tu cuenta.
lo que paga un proveedor por cada cuenta gestionada.
cada código del gate, con su causa y qué hacer.