Lo que construimos.

Preferimos mostrar software funcionando antes que prometerlo. Este es nuestro caso más completo, y el que usamos para probar el método.

Vista de un sobre en bb-sign: dos firmantes, uno firmado y otro pendiente, y el sello con su huella SHA-256.

Producto propio

bb-sign: firma electrónica con evidencia verificable.

Lo construimos de punta a punta: ceremonia de firma pensada para móvil, verificación pública de documentos, auditoría completa y una API para integrarlo en tus sistemas.

API
REST con contrato OpenAPI
SDK
Java y JavaScript
Webhooks
Firmados con HMAC
Accesible
WCAG AA en ambos temas

El reto

Quien firma no tiene cuenta, ni capacitación, ni a quién preguntar: solo un enlace y un documento en el que necesita confiar. Y un tercero debe poder comprobar, tiempo después, que la firma es auténtica.

Qué construimos

  • Ceremonia de firma para móvil, con el documento visible antes de firmar
  • Verificación por código de un solo uso (OTP) con reenvío controlado
  • Orden de firma cuando los firmantes deben firmar en secuencia
  • Verificación pública del documento sellado, sin iniciar sesión
  • Copia firmada descargable para cada firmante
  • Webhooks firmados para enterarse de cada evento sin consultar
  • Interfaz en español e inglés, con tema claro y oscuro

Cómo está hecho

Servicios
Microservicios Java con Spring Boot
Interfaz
React y TypeScript
Datos
PostgreSQL y almacenamiento compatible con S3
Eventos
RabbitMQ, con coreografía por eventos
Identidad
Keycloak y credenciales de máquina OAuth 2.0
Observabilidad
OpenTelemetry, Prometheus y Grafana

Tu primer sobre, en menos de 30 minutos.

Documentación medida con desarrolladores reales: si tienes que preguntar algo, es un defecto de la documentación.

Crear un sobre con la API de bb-sign
curl -s -X POST "$BBSIGN_BASE_URL/api/v1/envelopes" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My first envelope",
    "otpRequired": false,
    "expiresAt": "2026-12-01T00:00:00Z",
    "signers": [{"email": "someone@example.com", "name": "Someone", "signOrder": 1}]
  }'

¿Tienes un reto parecido?

Si tu operación depende de documentos, aprobaciones o sistemas que no se hablan entre sí, conversemos.

Agenda una conversación