Ofertes privades de facturació
Bescanvia un descompte, preu pactat o ampliació de prova per a la teva empresa amb una cotització revisada i recuperable.
Una oferta privada pertany a una empresa pagadora concreta i un producte: el seu pla, seients d’empleats o seients d’empreses gestionades. Un codi per a un producte no compra els altres dos. Només l’administrador de plataforma crea o revoca ofertes. L’aplicació permet copiar el codi a aquell administrador; no l’envia automàticament.
Beneficis i elegibilitat
| Benefici | Condicions |
|---|---|
discount | Percentatge o import fix en EUR, amb durada once, repeating o forever. Sense acumulació implícita amb un altre descompte. |
negotiated_price | Preu unitari net pactat en EUR, inclòs zero, no superior al catàleg. Dura per sempre o entre 1 i 24 períodes de facturació; després torna al preu de catàleg fixat. |
trial_extension | D’1 a 90 dies addicionals en una prova activa elegible d’un pla de contractació autònoma, sense reiniciar una prova caducada. La prova acumulada no pot superar 180 dies des de l’activació inicial fiable. |
La prova addicional només pot acompanyar un descompte permanent de pla o un preu pactat permanent de pla. Els preus pactats i les proves independents seleccionen un pla i un interval. Els preus temporals mostren la data de retorn, l’import futur i el requisit de mètode de pagament abans del cobrament posterior. Els períodes mensuals i anuals són cicles de facturació, no quantitats de dies intercanviables. S’exclouen Enterprise per contracte, empreses gestionades actuant com a client d’un pla i compres en sandbox.
Les dates de prova fan servir UTC. L’aplicació mostra el final anterior i el nou i qualsevol canvi d’ancoratge de facturació. Una ampliació independent no força targeta. Els plans caducats, de pagament, en gràcia o cancel·lats no poden fer-la servir. Revocar un codi impedeix bescanvis futurs i conserva el benefici ja adquirit i el retorn programat al preu de catàleg.
Bescanviar en el seu context
A l’aplicació, introdueix el codi des del checkout corresponent de plans, empleats o empreses gestionades. Facturació també mostra beneficis adquirits i operacions. El codi és privat: no el posis en URLs, incidències, registres ni exemples compartits. No hi ha campanya de registre anònim ni flux d’invitacions automàtiques.
REST i MCP exposen només bescanvis d’empleats i empreses gestionades. Els bescanvis de plans i l’administració d’ofertes continuen sent exclusius de l’aplicació. Fes servir employees:write per a /v1/employee-seat-offer-redemptions i companies:write per a /v1/gestoria-seat-offer-redemptions; les lectures fan servir el scope :read corresponent. El propietari del producte torna a comprovar pertinença, accés al mòdul, empresa pagadora i restriccions de sandbox.
Preparar envia {code, purchase} i una capçalera Idempotency-Key. Les compres d’empleats fan servir employee_individual (alta de perfil o reactivació d’UUID) o employee_batch (un batch_id existent i la seva quote_version). Les compres d’empreses gestionades fan servir gestoria_purchase amb create, activate o activate_batch. El servidor tria preus, impostos i client pagador; mai enviïs identificadors remots de Stripe ni totals.
Revisar i confirmar
La caducitat del codi no és la data de fi del benefici. Sense un primer ancoratge de facturació, el preu temporal s’accepta per N cicles complets des de la primera factura, amb benefit_end_basis = first_invoice_pending i benefit_ends_at = null. Un descompte repetitiu pendent d’aplicar fa servir discount_application_pending. Un ancoratge conegut es marca amb accepted_anchor; després de verificar l’aplicació, el GET pot mostrar la data exacta en UTC amb verified_schedule o verified_discount. Aquesta informació de presentació no modifica la cotització acceptada ni la seva empremta.
Quan una oferta de places d’empleat o d’empreses gestionades amb un benefici recurrent (un descompte repeating o forever, o un preu pactat) es bescanvia sobre una subscripció de places ja activa, el benefici comença a la renovació següent: benefit_starts_at és igual a next_bill_at. Avui només es cobren les places noves de la compra, prorratejades amb les condicions vigents, així que cash_today_cents no porta el benefici i recurring_total_cents ja l’inclou. El període en curs no s’abona i no es genera saldo a favor del client. Un descompte once continua aplicant-se a la factura d’avui. En una primera compra sense subscripció de places no hi ha període en curs, i el benefici s’aplica des de l’inici.
La cotització distingeix import elegible, descompte, base neta, impostos, total fiscal, saldo del compte, cobrament d’avui i import recurrent. quote_complete ha de ser cert abans de confirmar; els valors desconeguts continuen sent null. Un cobrament zero s’explica amb zero_reason: el saldo del compte, un descompte total, un preu pactat gratuït i una prova activa tenen conseqüències diferents. Revisa advertiments, caducitat, preus futurs i dates de prova abans d’acceptar quote_version.
Cada propietari exposa sis operacions: POST a l’arrel per preparar; GET a l’arrel per llistar; GET /{id} per consultar; i POST /{id}/quote, POST /{id}/confirm, POST /{id}/cancel. Les mutacions exigeixen claus estables diferents per intenció. Una repetició idèntica consulta l’operació existent; reutilitzar una clau amb altres dades provoca conflicte. Una cotització canviada o caducada s’ha d’actualitzar i revisar un altre cop. Si tots els seients d’empleats ja estan coberts, details.reason = offer_requires_chargeable_seats rebutja l’oferta sense consumir-la; continua el flux normal del lot per conservar la cobertura.
Estats pendents i errors
Una confirmació 202 està pendent, no és una compra reeixida. Consulta la mateixa operació després de recarregar, un temps d’espera o autenticar la targeta. Segueix allowed_actions i una action_url autoritzada i verificada; no creïs un altre bescanvi. La manca de mètode de pagament pot retornar 402 amb details.payment_setup_url. customer_offer_purchase_failed és un error final verificat; l’operació continua sent consultable.
Una oferta no disponible, caducada, esgotada o reservada, un pla o interval incompatible, un descompte o calendari extern existent, una altra compra concurrent, una prova amb l’inici canviat o una cotització desconeguda produeixen un rebuig controlat. Cancel·lar pot exigir restauració financera. needs_review o customer_offer_legacy_outcome_unknown exigeixen comprovar l’operació existent abans d’una altra compra. Cancel·lar una operació no promet el reemborsament instantani d’una factura. Els beneficis aplicats continuen subjectes a les regles normals de renovació, cancel·lació i reemborsament del producte.
En perdre accés al producte, el rebut mínim de Facturació a l’aplicació només permet consultar i cancel·lar quan estigui permès. No exposa perfils ni permet confirmar, actualitzar condicions, afegir targeta o autenticar-la. REST i MCP continuen respectant la restricció global de pla i mòdul.
MCP fa servir prepare_*_seat_offer_redemption, refresh_*_seat_offer_redemption, confirm_*_seat_offer_redemption, cancel_*_seat_offer_redemption, get_*_seat_offer_redemption i list_*_seat_offer_redemptions, substituint * per employee o gestoria. Les mutacions reben idempotency_key.
L’endpoint autenticat existent de l’aplicació GET /api/features publica data.purchase_availability amb els booleans employee_batches i customer_offers del servidor. Aquests interruptors controlen les entrades de compra noves i les accions de cotitzar/confirmar, no els permisos d’empresa. Quan estan desactivats o són desconeguts, l’aplicació conserva l’historial i la cancel·lació autoritzats. No són variables d’entorn frontend ni scopes públics nous.