Contratos y acuerdos legales

Un contrato es texto legal con datos dentro: partes, fechas, importes, plazos. En STXT el texto sigue siendo texto, cláusula a cláusula, y los datos son datos, en el mismo documento.

Esta página trata del formato fuente de un contrato: el fichero del que salen el PDF, la siguiente versión y los datos que necesitan otros sistemas. No sustituye al documento firmado ni al proceso jurídico.

Un acuerdo de servicios

Agreement (com.acme.legal.contract):
	Id: AGR-2026-001
	Title: Acuerdo de prestación de servicios de soporte
	Status: Signed
	Effective date: 2026-02-01

	Parties:
		Party: ACME Corp
			Role: Proveedor
			Registration: B-12345678
		Party: Example Ltd
			Role: Cliente
			Registration: GB-87654321

	Term:
		Start: 2026-02-01
		End: 2027-01-31

	Payment:
		Fee: 12000
		Currency: EUR
		Billing period: Monthly

	Clauses:
		Clause: Objeto
			Number: 1
			Text >>
				El Proveedor prestará al Cliente los servicios de soporte técnico
				descritos en el Anexo I, en el horario y con los niveles de servicio
				que en él se establecen.
		Clause: Limitación de responsabilidad
			Number: 2
			Text >>
				La responsabilidad total de cada parte no excederá el importe anual
				del contrato.

				Esta limitación no se aplicará en caso de dolo o negligencia grave.
			Internal notes >>
				Cláusula estándar LEG-07, aprobada por el departamento legal el
				2025-11-03. No modificar sin revisión jurídica.

En este ejemplo tenemos:

  • Datos: las partes, las fechas y el pago. Es lo que necesita un sistema de facturación o una alerta de vencimiento.
  • Cláusulas: cada una es un nodo con su título como valor, su número y su texto.
  • Texto: la redacción legal de cada cláusula, tal cual, en un nodo block que admite varios párrafos.
  • Notas internas: van dentro de la cláusula a la que se refieren, y quien genera el PDF las omite.

Por ejemplo, un programa puede obtener estos valores sin leer el contrato:

Nodo Valor
Term/End 2027-01-31
Payment/Fee 12000
Payment/Currency EUR

La plantilla

Template (@stxt.template): com.acme.legal.contract
	Structure >>
		Agreement:
			Id: (1)
			Title: (1)
			Status: (1) ENUM [Draft, Signed, Terminated]
			Effective date: (?) DATE
			Parties: (1)
				Party: (2+)
					Role: (1)
					Registration: (?)
			Term: (?)
				Start: (1) DATE
				End: (?) DATE
			Payment: (?)
				Fee: (1) NUMBER
				Currency: (1) ENUM [EUR, USD, GBP]
				Billing period: (?) ENUM [Monthly, Quarterly, Yearly]
			Clauses: (?)
				Clause: (*)
					Number: (?) NATURAL
					Text: (1) TEXT
					Internal notes: (?) TEXT

La plantilla comprueba los datos y no restringe la redacción de las cláusulas, ni su número, ni su orden.

Un acuerdo que no valida

# ERROR: este documento no valida
Agreement (com.acme.legal.contract):
	Id: AGR-2026-002
	Title: Acuerdo de confidencialidad
	Status: Draft
	# Un acuerdo tiene al menos dos partes: (2+)
	Parties:
		Party: ACME Corp
			Role: Proveedor
	Payment:
		# Un NUMBER no lleva separador de miles ni símbolo
		Fee: 12.000 €
		# `Euros` no es un valor de la lista
		Currency: Euros
	Clauses:
		# Una cláusula sin `Text` no es una cláusula
		Clause: Confidencialidad
			Number: 1

Un acuerdo de nivel de servicio

Un SLA es el caso con más datos dentro del texto legal: objetivos, tiempos y penalizaciones.

SLA (com.acme.legal.sla):
	Service: Plataforma de pagos
	Agreement: AGR-2026-001
	Effective date: 2026-03-01

	Availability:
		Target percentage: 99.9
		Measurement period: Monthly

	Response times:
		Severity: Critical
			Max response minutes: 30
		Severity: High
			Max response minutes: 120
		Severity: Normal
			Max response minutes: 480

	Penalties:
		Penalty: Incumplimiento de disponibilidad
			Condition >>
				Disponibilidad mensual inferior al objetivo.
			Consequence >>
				Descuento del 10 % en la factura del mes afectado.

	Legal text >>
		Las métricas se medirán conforme a los procedimientos descritos en el
		anexo técnico. Las partes revisarán los objetivos anualmente.

Y su plantilla:

Template (@stxt.template): com.acme.legal.sla
	Structure >>
		SLA:
			Service: (1)
			Agreement: (?)
			Effective date: (1) DATE
			Availability: (1)
				Target percentage: (1) NUMBER
				Measurement period: (1) ENUM [Monthly, Quarterly]
			Response times: (?)
				Severity: (*)
					Max response minutes: (1) NATURAL
			Penalties: (?)
				Penalty: (*)
					Condition: (1) TEXT
					Consequence: (1) TEXT
			Legal text: (?) TEXT

Agreement: AGR-2026-001 enlaza el SLA con su contrato. El panel que mide el servicio puede leer el objetivo de disponibilidad y los tiempos de respuesta del mismo fichero que firmaron las partes.

Cómo se trabaja

  • Versiones: cada contrato es un fichero en un repositorio, y cada revisión es un diff que muestra qué cláusula cambió o qué fecha se movió.
  • Cláusulas estándar: un programa compara cada cláusula con la versión aprobada por el departamento legal, y señala las que difieren.
  • Validación: stxt validate --recursive contracts/ (La línea de comandos) en integración continua.
  • Extracción: los vencimientos del trimestre o los importes por cliente salen del árbol.
  • Publicación: el PDF se genera a partir del fichero, sin las notas internas.

Límites

STXT no aporta validez jurídica, firma electrónica ni custodia.

Tampoco interpreta el texto de las cláusulas: «salvo en caso de dolo» es texto, y solo lo puede evaluar una persona.

La plantilla no comprueba la coherencia entre campos (que End sea posterior a Start, o que el contrato que cita el SLA exista). Eso lo hace el programa que recorre el repositorio.

Ver también Documentos corporativos y la comparación STXT frente a XML.