Saltar al contenido principal

Quick Start

Integracion en 3 pasos. Necesitas tus credenciales de Trusty (public_token y webhook_secret).

1. Embeber el widget

Opcion A: Web Component (recomendado)

<script src="https://trusty.sh/trusty-widget.js"></script>
<trusty-verify
public-token="TR_PUB_xxx"
metadata='{"userId":"123"}'
lang="es">
</trusty-verify>

Opcion B: Iframe

<iframe
src="https://trusty.sh/verify?public_token=TR_PUB_xxx&lang=es&metadata=%7B%22userId%22%3A%22123%22%7D"
style="width:100%;max-width:420px;height:640px;border:0"
allow="camera">
</iframe>

2. Recibir el webhook

Cuando la verificacion termina, Trusty envia un POST a tu endpoint:

{
"event": "kyc.verification.completed",
"verification_id": "601e510f-...",
"status": "approved",
"failure_reason": null,
"data": {
"document": { "full_name": "...", "document_number": "..." },
"liveness": { "face_visible": true },
"face_match": { "same_person": true, "confidence": "high" }
},
"metadata": { "userId": "123" },
"completed_at": "2026-07-24T03:17:05.799Z"
}

Verifica la firma HMAC-SHA256 en el header X-Trusty-Signature:

import { createHmac, timingSafeEqual } from 'node:crypto'

const expected = createHmac('sha256', process.env.TRUSTY_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex')

const valid = timingSafeEqual(
Buffer.from(signatureHeader), // X-Trusty-Signature
Buffer.from(`sha256=${expected}`)
)

3. Consultar verificaciones (opcional)

Puedes buscar verificaciones anteriores con tu webhook_secret:

curl "https://trusty-api.trusty.sh/api/v1/public/kyc/verifications?status=approved&limit=10" \
-H "Authorization: Bearer TR_WHS_xxx"

Ver API de Consulta para mas detalles.

Listo. Tu usuario ha sido verificado.