Facturación y renovación
La prueba de 1 mes tras un depósito del 10 %, el contrato de 3 años con salida en el año 1, la facturación anual, la renovación, Cancelar prueba, Cancelar renovación, sin reembolsos del año ya iniciado, y qué guarda cada pedido.
Cada paquete empieza con una prueba de 1 mes tras un depósito del 10 %, y después un contrato de 3 años, facturado una vez al año por adelantado, por buque. Puede salir en el año 1, antes de la primera renovación. Cada factura es un año facturado (12 meses). El primer cargo lleva también la configuración única por buque, la configuración e instalación de Safety Vision cuando se compran las cámaras y el kit de pasarela opcional. Los precios salen de @pruva/pricing; véase Precios.
Aviso de facturación
La prueba gratuita
- 1 mes, una por cliente. Un espacio de trabajo que ya tuvo una prueba paga el primer cargo completo el día que pide.
- Depósito del 10 % hoy. En el pago, quien compra elige un método de pago y marca la casilla de consentimiento. El depósito se toma ese día. No se reembolsa.
- El resto del primer cargo cuando acaba el mes: el
trial.firstChargeOndel pedido. La prueba va desde el día de la compra hastatrial.end, el día anterior. - El primer año facturado (12 meses) empieza después de la prueba, el día del primer cargo. Ese año no es reembolsable a partir de entonces. El contrato es de 3 años. Puede salir en el año 1, antes de la primera renovación.
- Cancelar durante la prueba detiene el resto del cargo. El depósito no se reembolsa. Véase Cancelar prueba.
Cada tarjeta de precios en el sitio dice "Prueba de 1 mes · depósito del 10 %".
Calendario de pagos
scheduleFrom(purchase, firstChargeUsd, withTrial) en @pruva/pricing calcula el calendario, y scheduleLabel() lo convierte en la línea que el pago muestra antes del botón de pedido. Para Operations con tres módulos Pro en 10 buques, pedido el 16 de octubre de 2026:
| Pedido | Prueba gratuita | Hoy | Primer cargo | Plazo | Renueva el | El pago muestra |
|---|---|---|---|---|---|---|
| Con prueba | del 16 oct 2026 al 15 nov 2026 | $8,945 | $89,450 el 16 nov 2026 | del 16 nov 2026 al 15 nov 2027 | 16 nov 2027 | Hoy: $8,945 de depósito · El resto el 16 nov 2026 |
| Prueba ya usada | ninguna (ya usada) | $89,450 | $89,450 el 16 oct 2026 | del 16 oct 2026 al 15 oct 2027 | 16 oct 2027 | Hoy: $89,450 · Se renueva el 16 oct 2027 |
Antes del botón de pedido, el pago muestra, para un espacio de trabajo que puede tener la prueba, "Hoy: $… de depósito · Resto el …", las fechas de la prueba, las fechas de inicio, fin y renovación del año facturado, y el importe del primer cargo. El botón dice Iniciar prueba de 1 mes.
Elegibilidad de la prueba
El pago pregunta a la aplicación GET /api/trial-eligibility?workspace=… (tiempo de espera breve) si el espacio de trabajo todavía puede tener una prueba.
- Prueba ya usada. El pago dice "Su prueba gratuita ya se usó", muestra el calendario del cargo de hoy, construye el pedido sin prueba, y el botón dice Hacer el pedido de demo.
- Aplicación inaccesible. El pago supone que la prueba no se ha usado y lo dice en texto pequeño. La aplicación vuelve a comprobarlo cuando llega el pedido.
Si la aplicación responde 409 trial_used (por ejemplo, otra pestaña usó la prueba antes), no se pide ni se cobra nada. El pago muestra el mensaje, pasa al calendario sin prueba y desmarca la casilla de consentimiento. Quien compra debe marcarla otra vez y hacer el pedido sin prueba. El sitio nunca reintenta por su cuenta sin prueba.
Fechas del plazo
Un plazo tiene tres fechas. El pago muestra las tres antes de comprar, y el pedido las lleva.
| Fecha | Significado |
|---|---|
| Inicio | El día del primer cargo, después de la prueba. Sin prueba: el día en que pide. |
| Fin | El último día del año facturado: 12 meses después del inicio, menos un día. |
| Se renueva el | El día siguiente al fin. El año siguiente se cobra ese día. |
Ejemplo: un plazo que empieza el 23 de octubre de 2026 termina el 22 de octubre de 2027 y se renueva el 23 de octubre de 2027. Las fechas salen de termFrom() en @pruva/pricing y usan días UTC.
Cancelar prueba
Durante la prueba, un propietario abre Ajustes → Módulos y facturación en la aplicación, donde el módulo muestra los días de prueba que quedan y un botón Cancelar prueba.
- El resto del primer cargo no se toma. El depósito no se reembolsa.
- Los módulos de la prueba se bloquean de inmediato.
- La prueba sigue contando como usada (una por cliente).
Solo el propietario puede cancelar, y solo mientras dura la prueba. Cada cancelación se escribe en el registro de auditoría como billing.cancel_trial con "(no charge)".
El cargo del resto
Un trabajo toma el resto del primer cargo cuando acaba el mes de prueba: runTrialCharges() en @pruva/core (el modo demo lo ejecuta de forma diferida) y su gemelo en SQL public.pv_run_trial_charges() (modo de base de datos, solo el rol de servicio). Para cada pedido cuyo firstChargeOn ya llegó, registra ese cargo una vez y pasa los módulos del pedido de trial a active.
- Idempotente. Pone
charged_atuna vez. Una segunda ejecución el mismo día, o cualquier día posterior, no vuelve a cobrar nada. - Nunca cobra una prueba cancelada. Los pedidos con
trial_cancelled_atdefinido se omiten. - En esta versión no hay proveedor de pagos, así que "cobrar" solo registra el cargo. Una versión real toma el cargo desde la referencia del método de pago del pedido (una factura de Stripe, o la captura de una preautorización 3-D Secure).
Renovación
Un plan se renueva por otro año facturado (12 meses) salvo que la renovación se cancele antes de la fecha de renovación. Salir en el año 1 es cancelar antes de la primera renovación. Los precios solo pueden cambiar en la renovación, y se avisa a los propietarios antes de la fecha de renovación.
Cancelar renovación
Después de la prueba, un propietario abre Ajustes → Módulos y facturación en la aplicación y pulsa Cancelar renovación.
- Detiene la siguiente renovación y nada más.
- El acceso continúa hasta el fin del plazo que pagó.
- No se reembolsa nada.
Sin reembolsos
Después de la prueba, no hay reembolsos del año ya iniciado, incluidos los meses no usados, los módulos no usados o una bajada de plan. Cuando acaba el año facturado, los datos se guardan 90 días para que pueda exportarlos, y después se borran.
Método de pago: una referencia, nunca datos de tarjeta
El pago pide un método de pago; el paso es obligatorio. Esta versión no tiene proveedor de pagos, así que nunca muestra campos de número de tarjeta, caducidad o CVC y nunca acepta datos de tarjeta. La única opción es "Tarjeta demo · sin tarjeta real (modo de prueba de Stripe en producción — verifique antes del lanzamiento)". El servidor rechaza cualquier solicitud que lleve campos de tarjeta.
Una versión real recoge la tarjeta con Stripe Elements o una preautorización 3-D Secure, de modo que la tarjeta nunca toca nuestros servidores. En ambos casos, el pedido solo lleva una referencia:
| Campo | Valor de demo |
|---|---|
payment.provider | demo (o stripe en una versión real) |
payment.reference | pm_demo_visa_4242; debe coincidir con pm_… |
payment.label | Demo card · no real card; el esquema rechaza una etiqueta que contenga un número de tarjeta |
Consentimiento guardado en el pedido
En el pago, quien compra debe marcar una casilla. Empieza sin marcar, y el botón de pedido sigue desactivado hasta que se elige el método de pago y se marca la casilla. La casilla dice exactamente:
Acepto un depósito del 10 % hoy, que abre una prueba de 1 mes, seguida de un contrato de 3 años, facturado anualmente por adelantado por buque al precio del nivel de país de mi empresa de facturación, más la tarifa única de puesta en marcha, cualquier plan de soporte, cualquier línea de cámaras Safety Vision y el hardware a bordo indicado. Safety Vision incluye su kit de cámaras, la garantía y la sustitución, que siguen siendo propiedad de Pruva. El hardware es una línea aparte; Safety Vision y el hardware tienen un único precio en USD en todos los países y el nivel de país no los rebaja. Puedo salir en el año 1, antes de la primera renovación. El resto de ese primer cargo se cobra al terminar el mes de prueba, salvo que cancele antes. El depósito no se reembolsa. Después de la prueba no hay reembolsos del año ya iniciado, y puedo cancelar la renovación en cualquier momento antes de la fecha de renovación.
El servidor rechaza cualquier pedido sin consentimiento o sin método de pago, sea lo que sea lo que envíe el navegador. El pedido que el sitio firma y envía a la aplicación (StoreOrderSchema en @pruva/core) lleva:
| Campo | Qué guarda |
|---|---|
consent.accepted | Siempre true; un pedido sin consentimiento nunca se envía. |
consent.version | La versión del texto de consentimiento, ahora 2026-10-20.2. |
consent.at | Cuándo el formulario marcado llegó al servidor (reloj del servidor, hora ISO). |
trial | start, end, firstChargeOn; o null cuando la prueba ya se había usado. La prueba es de 1 mes. El año facturado empieza en firstChargeOn. |
chargeTodayUsd | El depósito del 10 % con prueba; el primer cargo (annualUsd + oneOffUsd) sin ella. |
payment | La referencia del método de pago de arriba. |
term.start, term.end, term.renewsOn | Las fechas del año facturado de arriba. La aplicación comprueba que abarcan 12 meses. El contrato es de 3 años, con salida en el año 1. |
sku, modules, vessels | El paquete o paquete sectorial, cada módulo que activa (el núcleo, los módulos Pro y cameras con Safety Vision) y el número de buques. support es el plan de soporte. |
annualUsd | La suscripción del año para todos los buques. La aplicación la comprueba contra la lista de precios. |
oneOffUsd | La configuración por buque, la configuración e instalación de Safety Vision y el kit de pasarela opcional. |
firstChargeUsd | annualUsd + oneOffUsd. El depósito se toma hoy; el resto se toma cuando acaba el mes de prueba (o el importe completo hoy, sin prueba). |
La página de éxito muestra el id del pedido, las partidas, el mes de prueba, el depósito tomado hoy y la fecha del resto (o el importe cobrado hoy cuando no hay prueba), las fechas del año facturado, "Método de pago: Tarjeta demo · sin tarjeta real", "Consentimiento registrado: versión … el …", y un enlace a Ajustes → Módulos y facturación. Cancelar la prueba ahí detiene el resto del cargo. El depósito no se reembolsa.
Acentos de módulo
Cada módulo tiene su propio color de acento, de @pruva/brand/tokens. La aplicación, el sitio y esta documentación lo usan solo para bordes, fichas e iconos, nunca para el texto de cuerpo. El texto en color de acento pasa a un tono más oscuro en el tema claro para cumplir WCAG AA. La marca en sí sigue en monocromo, con latón para los botones primarios.