Factuarea APIDevelopers
Contracte

Places contractades, paquets d'oferta i prova

La factura segueix les places que contractes: crear un empleat ocupa una plaça lliure, reduir té efecte a la renovació sense abonament i tries a qui es desactiva. Quatre operacions noves fixen i previsualitzen les places, l'API REST i el MCP compren soles les places que falten, els paquets d'oferta conserven els seus preus mentre es mantenen els seus mínims i la prova respon amb el seu propi motiu.

31 d'octubre de 2026 — La factura de les places d'empleat i de les places de NIF addicional passa a ser la factura de les places contractades. Crear, activar o reactivar ocupa una plaça lliure i mai cobra per si sol; només cobra comprar places. Desactivar allibera una plaça sense baixar la factura i una reducció té efecte a la renovació, sense abonament, triant a qui es desactiva quan baixes de les places ocupades. Comprar o crear el que una reducció anava a treure l'anul·la.

Els paquets d'oferta, fins a tres línies amb un codi que es bescanvia des de l'aplicació o per suport, conserven el seu preu pactat mentre es mantenen els seus mínims i la subscripció es paga, i acaben sencers, amb totes les seves línies de tornada al preu de catàleg, si no. No es retira cap operació.

Operacions d'aquesta versió

OperacióoperationIdEina MCPQuè canvia
PATCH /v1/accounts/{account}/employee-seatspublic-api.v1.employee-seats.updateupdate_employee_seatsNova. Fixa les places d'empleat contractades.
GET /v1/accounts/{account}/additional-nif-seatspublic-api.v1.additional-nif-seats.statusget_additional_nif_seatsNova. Llegeix les places de NIF addicional contractades.
GET /v1/accounts/{account}/additional-nif-seats/previewpublic-api.v1.additional-nif-seats.previewpreview_additional_nif_seat_changeNova. Previsualitza un canvi d'aquestes places.
PATCH /v1/accounts/{account}/additional-nif-seatspublic-api.v1.additional-nif-seats.updateupdate_additional_nif_seatsNova. Fixa les places de NIF addicional contractades.
Estat de les places d'empleatpublic-api.v1.employee-seats.statusget_employee_seat_billingquantity són les places contractades. Bloc seats nou. reducible_to val sempre 0. pending_reduction porta deactivations i offer_package_loss.
Vista prèvia de les places d'empleatpublic-api.v1.employee-seats.previewpreview_employee_seat_chargeNous contracted_seats, seats_to_buy, free_seats_used, included_in_seats, deactivations_required, cancels_pending_reduction i offer_package_loss. already_covered val sempre false.
Cancel·lar les places d'empleatpublic-api.v1.employee-seats.cancelcancel_employee_seat_addondeactivate i accept_offer_package_loss opcionals. Sense deactivate, es desactiven a la renovació tots els empleats actius.
Subscriure i canviar la quantitat de places d'empleatpublic-api.v1.employee-seats.subscribe, public-api.v1.employee-seats.change-quantitysubscribe_employee_seat_addon, change_employee_seat_quantityConvergeixen a les places contractades.
Crear i reactivar empleatspublic-api.v1.employees.create, public-api.v1.employees.reactivatecreate_employee, reactivate_employeeOcupen una plaça lliure i compren les que falten. Envia Idempotency-Key.
Crear, activar i rebre NIFpublic-api.v1.companies.create, public-api.v1.companies.activate, public-api.v1.companies.activate_batch, public-api.v1.account.nif_transfers.acceptcreate_company, activate_company, activate_companies, accept_nif_transferEl mateix comportament per a les places de NIF addicional. Envia Idempotency-Key.
Vista prèvia de places de NIFpublic-api.v1.companies.seat_charge_previewget_company_seat_charge_previewzero_reason pot valer included_in_seats.
Lots d'empleatspublic-api.v1.employee-batches.prepare, public-api.v1.employee-batches.refresh_quote, public-api.v1.employee-batches.confirmprepare_employee_batch, refresh_employee_batch_quote, confirm_employee_batchUsen les places lliures i compren només les que falten. La cotització retorna ara seats_to_buy, free_seats_used, original_quantity, projected_quantity i cancels_pending_reduction.
Bescanvis d'oferta de places d'empleat i d'empresa gestionadapublic-api.v1.employee-seat-offer-redemptions.* i public-api.v1.gestoria-seat-offer-redemptions.*: list, prepare, show, refresh_quote, confirm i cancellist, prepare, get, refresh, confirm i cancel de *_seat_offer_redemptionNous apply_to_existing, minimum_quantity i target_quantity, i els nous motius de rebuig.

Les operacions que només ajusten el seu esquema són a la taula del final i a la secció d'esquema.

Places contractades

El bloc seats de l'estat publica contracted, occupied, free, agreed_minimum, agreed_minimum_ends_at, reducible_to, pending_reduction i enforced. reducible_to val sempre 0 perquè una reducció no té sòl.

PATCH /v1/accounts/{account}/employee-seats i PATCH /v1/accounts/{account}/additional-nif-seats reben {"contracted_seats": N}. Un nombre més gran compra places amb un cobrament prorratejat amb la targeta del compte i Idempotency-Key és obligatòria. Un nombre més petit és una reducció. La vista prèvia rep el mateix paràmetre i mostra l'import d'avui, la quantitat de la propera factura i si anul·la una reducció pendent. Consulta les places d'empleat i les places de NIF addicional.

Comprar places d'empleat exigeix ara el control horari: amb un pla que no l'inclou, PATCH /v1/accounts/{account}/employee-seats, POST /v1/accounts/{account}/employee-seats/subscribe i POST /v1/accounts/{account}/employee-seats/change-quantity responen el nou 403 employee_seats_not_in_plan abans de cobrar res, mentre que baixar o mantenir les places continua permès. Consulta l'error.

Compra automàtica

Sense una plaça lliure, l'aplicació respon 422 contracted_seats_exhausted i et porta a comprar abans. L'API REST i el MCP no: crear, activar, reactivar i acceptar un traspàs de NIF compren les places que falten amb un cobrament prorratejat i després creen, amb els mateixos 402 de sempre. Un reintent no cobra dues vegades i la plaça comprada es queda. Envia Idempotency-Key en cada alta: sense ella, un reintent després d'una alta que sí que es va crear crea una altra entitat. Consulta la compra automàtica.

Reducció

Una reducció pot arribar fins a 0 i té efecte a la renovació, sense abonament. Queda com a pending_reduction i les places continuen disponibles fins llavors.

  • Per sota de les ocupades. deactivate és una llista d'exactament ocupades - contractades entitats actives. Si no, la resposta és 422 contracted_seats_selection_required.
  • Avís i renovació. Uns dies abans, la propietària rep els noms. A la renovació la tasca desactiva els triats i fixa la quantitat.
  • S'anul·la amb una compra, o amb una alta, activació, reactivació, lot o traspàs que ocupi el que la reducció anava a treure, i amb un PATCH a la quantitat actual. Un PATCH més petit la substitueix.
  • A 0. Exigeix triar totes les ocupades i cancel·la l'add-on al final del període. cancel és una reducció a 0 i, sense deactivate, desactiva tots els empleats actius.

Consulta la reducció.

Paquets d'oferta

Un paquet agrupa fins a tres línies (pla, places d'empleat i places de NIF addicional) sota un codi. Es bescanvia des de l'aplicació o per suport; en REST i MCP el seu codi respon 422 customer_offer_not_eligible amb details.reason product.

  • apply_to_existing aplica una oferta de places a les places que el compte ja té i no crea res. El pressupost publica target_quantity i minimum_quantity.
  • Condicions. El paquet conserva els seus preus mentre les places contractades de cada línia es mantenen en el seu mínim o per sobre i la subscripció es paga. Desactivar no el trenca; reduir sí.
  • El preu pactat regeix per a totes les places contractades, també les comprades després, fins i tot per la compra automàtica.
  • Final. Acaba sencer, amb totes les línies al preu de catàleg des de la següent renovació i sense abonament, per reduction_below_minimum, subscription_ended_unpaid, subscription_cancelled, revoked_by_support o duration_elapsed.
  • Confirmació. Una reducció que trencaria un paquet es previsualitza amb offer_package_loss i l'escriptura exigeix accept_offer_package_loss: true; sense ell, 422 offer_package_loss_unconfirmed.

Consulta els paquets d'oferta i el mínim pactat.

La prova

Durant la prova no es cobra res i els empleats o NIF no ocupen places. Ja pots triar les places contractades sense cobrament. Un bescanvi de places d'empleat o de NIF durant la prova respon 422 customer_offer_not_eligible amb details.reason trial_active, en lloc del 409 anterior dels lots d'empleats i d'active_population. Quan el compte comença a pagar, les entitats més antigues ocupen les places contractades i les que no hi caben passen a inactives, sense cobrament; amb zero places contractades, totes. Consulta la prova en les places d'empleat i la regla de la prova en les places de NIF.

Errors

  • customer_offer_not_eligible amb reason product respon 422 on abans responia 403.
  • contracted_seats_selection_required: param deactivate, amb details product, requested, occupied, required, selected i invalid. A cancel només s'emet amb una llista que no quadra.
  • offer_package_loss_unconfirmed: param accept_offer_package_loss, amb details product, package_id, name, effective_at i lines.
  • contracted_seats_exhausted només l'emet l'aplicació web. L'API REST i el MCP compren en el seu lloc.
  • contracted_seats_below_minimum queda retirat: no es va arribar a emetre.

Els tres codis són subcodis de business_rule_violation. Consulta el catàleg d'errors.

Esdeveniments

account.seats_updated anuncia cada canvi de les places contractades. El seu pending_reduction porta les deactivations i la causa reduction_superseded marca una reducció anul·lada per una compra o una entrada. account.offer_package_ended anuncia el final d'un paquet, amb el seu motiu i els conceptes de les seves línies, sense imports. Tots dos van als endpoints del compte. Consulta els webhooks de compte.

Ajustos d'esquema i què fer

Diverses operacions només canvien en l'esquema publicat, sense res de diferent al cable: les que feien servir not ara descriuen la mateixa regla d'una altra manera i els camps obligatoris aniuats queden documentats. No has de fer res amb elles.

Una sèrie creada sense number_format neix ara amb {code}-{YYYY}-{0000}, quatre xifres en lloc de tres. Les sèries que ja existeixen conserven el seu format.

Com a integrador:

  1. Envia Idempotency-Key en altes, activacions, reactivacions i traspassos, que ara poden comprar places.
  2. Admet included_in_seats a l'enum zero_reason de les vistes prèvies.
  3. Tracta already_covered com a sempre false.
  4. Si cancel·laves l'add-on amb empleats actius, envia deactivate: sense ell es desactiven tots a la renovació.
  5. Compta que una compra o una alta anul·li una reducció pendent.
  6. Confirma amb accept_offer_package_loss la reducció que trenqui un paquet.

La taula següent llista les operacions d'aquesta versió.

Nous endpoints4

EndpointDescripció
GET/v1/accounts/{account}/additional-nif-seatsObtenir les places de NIF addicional
PATCH/v1/accounts/{account}/additional-nif-seatsFixar les places de NIF addicional contractades
PATCH/v1/accounts/{account}/employee-seatsFixar les places d'empleat contractades
GET/v1/accounts/{account}/additional-nif-seats/previewPrevisualitzar un canvi de les places de NIF addicional

Endpoints actualitzats98

EndpointDescripció
POST/v1/accounts/{account}/nif-transfers/acceptAcceptar un traspàs de NIF
POST/v1/accounts/{account}/companies/activateActivar diversos NIF del compte
POST/v1/accounts/{account}/companies/{company}/activateActivar un NIF del compte
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/activateActivar factura recurrent
POST/v1/companies/{company}/invoices/{invoice}/annulAnul·lar una factura
POST/v1/companies/{company}/invoices/{invoice}/assign-real-numberAssignar un número de factura real
POST/v1/companies/{company}/invoices/bulk-createCrear factures en bloc
POST/v1/accounts/{account}/employee-seats/cancelCancel·lar l'add-on de places d'empleat
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/cancelAnul·lar factura recurrent
POST/v1/companies/{company}/employee-seat-offer-redemptions/{id}/cancelCancel·lar un bescanvi d’oferta de places d’empleats
POST/v1/companies/{company}/gestoria-seat-offer-redemptions/{id}/cancelCancel·lar un bescanvi d’oferta de places d’empreses gestionades
POST/v1/accounts/{account}/employee-seats/change-quantitySincronitzar la quantitat de places d'empleat
POST/v1/companies/{company}/employee-batches/{id}/confirmConfirmar un lot d’empleats
POST/v1/companies/{company}/employee-seat-offer-redemptions/{id}/confirmConfirmar un bescanvi d’oferta de places d’empleats
POST/v1/companies/{company}/gestoria-seat-offer-redemptions/{id}/confirmConfirmar un bescanvi d’oferta de places d’empreses gestionades
POST/v1/companies/{company}/delivery-notes/{delivery_note}/convertConvertir albarà en factura
POST/v1/companies/{company}/proformas/{proforma}/convertConvertir proforma en factura
POST/v1/companies/{company}/quotes/{quote}/convertConvertir pressupost en factura
POST/v1/accounts/{account}/webhooksCrear un webhook endpoint de compte
POST/v1/companies/{company}/invoices/{invoice}/correctiveGenerar factura rectificativa
POST/v1/companies/{company}/employeesCrear un empleat
POST/v1/companies/{company}/invoicesCrea una factura
GET/v1/companies/{company}/invoicesLlistar totes les factures
POST/v1/companies/{company}/pdf-template-previewsCrear una vista prèvia de plantilla PDF
POST/v1/companies/{company}/purchase-invoicesCrea una despesa
POST/v1/companies/{company}/invoices/{invoice}/create-recurringCrear una factura recurrent a partir d'una factura
POST/v1/companies/{company}/recurring-invoicesCrea una factura recurrent
GET/v1/companies/{company}/recurring-invoicesLlistar totes les factures recurrents
POST/v1/companies/{company}/transport-documentsCrear un document de control
POST/v1/accounts/{account}/companies/{company}/deactivateDesactivar un NIF del compte
PATCH/v1/accounts/{account}/webhooks/{webhook}Actualitzar un webhook endpoint de compte
DEL/v1/accounts/{account}/companies/{company}Arxivar un NIF del compte
PATCH/v1/companies/{company}/delivery-notes/{delivery_note}Actualitzar un albarà
GET/v1/companies/{company}/invoices/{invoice}Recupera una factura
PATCH/v1/companies/{company}/invoices/{invoice}Actualitzar una factura
PATCH/v1/companies/{company}/proformas/{proforma}Actualitzar una proforma
PATCH/v1/companies/{company}/purchase-invoices/{purchase_invoice}Actualitzar una despesa
PATCH/v1/companies/{company}/quotes/{quote}Actualitzar un pressupost
GET/v1/companies/{company}/recurring-invoices/{recurring_invoice}Obtenir una factura recurrent
PATCH/v1/companies/{company}/recurring-invoices/{recurring_invoice}Actualitzar una factura recurrent
PATCH/v1/companies/{company}/transport-documents/{transport_document}Actualitzar un document de control en esborrany
POST/v1/companies/{company}/invoices/{invoice}/duplicateDuplicar una factura
POST/v1/companies/{company}/invoices/find-by-external-idCercar una factura per external ID
POST/v1/companies/{company}/invoices/find-by-numberCercar una factura per número
POST/v1/companies/{company}/recurring-invoices/find-by-external-idCercar una factura recurrent per external ID
PATCH/v1/companies/{company}/delivery-notes/{delivery_note}/public-linkActualitzar l'enllaç públic d'un albarà
GET/v1/accounts/{account}/employee-seatsObtenir l'estat de facturació de places d'empleat
GET/v1/accounts/{account}/employee-seats/previewPrevisualitzar el càrrec de la plaça d'empleat
PATCH/v1/companies/{company}/invoices/{invoice}/public-linkActualitzar l'enllaç públic d'una factura
PATCH/v1/companies/{company}/proformas/{proforma}/public-linkActualitzar l'enllaç públic d'una proforma
PATCH/v1/companies/{company}/quotes/{quote}/public-linkActualitzar l'enllaç públic d'un pressupost
GET/v1/accounts/{account}/companies/seat-charge-previewPrevisualitza el càrrec per plaça d'afegir una empresa
POST/v1/companies/{company}/invoices/{invoice}/issueEmet una factura
GET/v1/accounts/{account}/webhooks/{webhook}/deliveriesLlistar els lliuraments d'un webhook endpoint de compte
POST/v1/accounts/{account}/companiesRegistrar un NIF al compte
POST/v1/companies/{company}/employee-batchesPreparar un lot d’empleats
GET/v1/companies/{company}/eventsLlistar tots els esdeveniments
GET/v1/companies/{company}/invoices/{invoice}/correctivesLlistar factures rectificatives
GET/v1/companies/{company}/employee-seat-offer-redemptionsLlistar un bescanvi d’oferta de places d’empleats
POST/v1/companies/{company}/employee-seat-offer-redemptionsPreparar un bescanvi d’oferta de places d’empleats
GET/v1/companies/{company}/gestoria-seat-offer-redemptionsLlistar un bescanvi d’oferta de places d’empreses gestionades
POST/v1/companies/{company}/gestoria-seat-offer-redemptionsPreparar un bescanvi d’oferta de places d’empreses gestionades
GET/v1/companies/{company}/webhook-endpoints/{webhook_endpoint}/deliveriesLlista les entregues de webhook
POST/v1/companies/{company}/invoices/{invoice}/mark-paidMarca la factura com a pagada
POST/v1/companies/{company}/invoices/{invoice}/mark-sentMarca una factura com a enviada
POST/v1/companies/{company}/transport-documents/{transport_document}/modifyModificar un document de control emès
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/pausePausar factura recurrent
POST/v1/companies/{company}/products/{product}/configurations/impact-previewPrevisualitzar l'impacte de restringir un catàleg
POST/v1/companies/{company}/employees/{employee}/reactivateReactivar un empleat
POST/v1/companies/{company}/employee-batches/{id}/quoteRecalcular la cotització d’un lot d’empleats
POST/v1/companies/{company}/employee-seat-offer-redemptions/{id}/quoteRecalcular la cotització d’un bescanvi d’oferta de places d’empleats
POST/v1/companies/{company}/gestoria-seat-offer-redemptions/{id}/quoteRecalcular la cotització d’un bescanvi d’oferta de places d’empreses gestionades
PATCH/v1/companies/{company}/invoices/{invoice}/rescheduleReprogramar una factura
POST/v1/companies/{company}/price-lists/resolve-manyResoldre diversos preus de catàleg
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/resumeReprendre factura recurrent
POST/v1/companies/{company}/invoices/{invoice}/scheduleProgramar una factura
POST/v1/accounts/{account}/webhooks/{webhook}/testEnviar un esdeveniment de prova a un webhook endpoint de compte
POST/v1/companies/{company}/invoices/{invoice}/sendEnvia la factura per email
GET/v1/accounts/{account}/webhooks/{webhook}/deliveries/{delivery}Consultar un lliurament d'un webhook endpoint de compte
GET/v1/companies/{company}/events/{event}Obtenir un esdeveniment
GET/v1/companies/{company}/employee-seat-offer-redemptions/{id}Consultar un bescanvi d’oferta de places d’empleats
GET/v1/companies/{company}/gestoria-seat-offer-redemptions/{id}Consultar un bescanvi d’oferta de places d’empreses gestionades
GET/v1/companies/{company}/webhook-endpoints/{webhook_endpoint}/deliveries/{delivery}Recupera el lliurament del webhook
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/skipOmetre la pròxima generació de la factura recurrent
POST/v1/accounts/{account}/employee-seats/subscribeSubscriure's a l'add-on de places d'empleat
POST/v1/companies/{company}/invoices/substitute-simplifiedSubstituir factures simplificades per factura completa
POST/v1/companies/{company}/invoices/{invoice}/unscheduleDesprogramar una factura
POST/v1/companies/{company}/invoices/{invoice}/unsendAnul·lar l'enviament d'una factura
POST/v1/accounts/{account}/companies/{company}/verify-creationVerificar la creació d'un NIF
POST/v1/companies/{company}/invoices/{invoice}/voidAnul·lar una factura
POST/v1/companies/{company}/seriesCrea una sèrie
GET/v1/companies/{company}/seriesLlistar totes les sèries
POST/v1/companies/{company}/series/find-by-codeCercar una sèrie per codi
GET/v1/companies/{company}/series/defaultObtenir la sèrie per defecte per a un tipus de document
GET/v1/companies/{company}/series/activeLlistar sèries actives per tipus de document
GET/v1/companies/{company}/series/{series}Obtenir una sèrie
PATCH/v1/companies/{company}/series/{series}Actualitzar una sèrie
GET/v1/companies/{company}/billingObtenir els detalls de facturació del compte

En aquesta pàgina

Et donem un cop de mà?Contactar amb suport