QvaPay API
User

Certificado de titularidad

Emitir un PDF firmado por QvaPay que acredita a nombre de quién está la cuenta, verificable con un código.

El certificado de titularidad es un PDF en español e inglés, firmado por QvaPay, que acredita a nombre de quién está una cuenta. Sirve para bancos, proveedores y organismos que piden un documento oficial en lugar de capturas.

Cada certificado lleva un código QPC-XXXX-XXXX-XXXX y un QR. Quien lo recibe los comprueba en https://www.qvapay.com/verify, que dice si es válido, si caducó, si se revocó o si la cuenta ya no está activa.

Qué certifica:

  • El titular de la cuenta, su identificador (uuid), el usuario, la fecha de apertura y que la cuenta está abierta y activa al emitirse.
  • No certifica saldos ni operaciones.
  • Si la cuenta es dueña de una empresa aprobada en QvaPay, el titular es la empresa: razón social, país, identificador fiscal y fecha de aprobación. La persona que opera la cuenta figura como persona autorizada.
  • Si no, el titular es la persona con el nombre de su documento de identidad verificado, nunca el nombre del perfil.

Requisitos: identidad verificada (KYC) y una sesión con acceso completo. Los tokens con permisos limitados no emiten.

Por ahora el certificado lo emite el equipo de QvaPay a petición del titular, desde soporte. Mientras la emisión directa no esté abierta, GET /user/documents responde reason: "NOT_AVAILABLE_YET".

GET /user/documents

Dice si la cuenta puede emitir el certificado, a nombre de quién saldría y cuáles ya se emitieron.

{
  "certificate": {
    "mode": "on",
    "can_issue": true,
    "reason": null,
    "message": null,
    "holder": { "kind": "company", "name": "Ejemplo Ibérica SL", "country": "ES" },
    "companies": [{ "uuid": "2797e8bf-…", "name": "Ejemplo Ibérica SL", "country": "ES" }]
  },
  "certificates": [
    {
      "uuid": "6f1c…",
      "code": "QPC-7KMN-Q2XR-9HAT",
      "holder_kind": "company",
      "holder_name": "Ejemplo Ibérica SL",
      "issued_at": "2026-11-11T15:04:05.000Z",
      "valid_until": "2027-02-09T15:04:05.000Z",
      "revoked_at": null,
      "revoke_reason": null,
      "issued_by_staff": false,
      "status": "valid",
      "verify_path": "/verify/QPC-7KMN-Q2XR-9HAT"
    }
  ]
}
CampoDescripción
modeon (el titular emite), admin (solo el equipo de QvaPay) u off
can_issuetrue si POST /user/documents/certificate puede emitir ahora
reasonPor qué no: KYC_REQUIRED, LEGAL_NAME_MISSING, COMPANY_PENDING, SCOPED_TOKEN, UNAVAILABLE, NOT_AVAILABLE_YET, DISABLED
messageTexto para el usuario que explica reason
holderA nombre de quién saldría: kind es company o individual
companiesEmpresas aprobadas de las que la cuenta es dueña
certificates[].statusvalid, expired o revoked

POST /user/documents/certificate

Emite un certificado nuevo y responde el PDF (Content-Type: application/pdf, descarga como adjunto). Cada llamada crea un certificado con su propio código.

{ "company_uuid": "2797e8bf-d356-4722-8675-3c7fe065a817" }

company_uuid es opcional y solo sirve cuando la cuenta es dueña de varias empresas aprobadas. Sin él, el titular es la primera.

CódigoCuándo
200PDF emitido
403KYC_REQUIRED, SCOPED_TOKEN, UNAVAILABLE, NOT_AVAILABLE_YET, DISABLED
404COMPANY_NOT_FOUND: esa empresa no está aprobada a nombre de la cuenta
409LEGAL_NAME_MISSING (falta el nombre del documento verificado) o COMPANY_PENDING (cuenta de empresa sin empresa aprobada)
429Más de 5 certificados en una hora
503STORE_UNAVAILABLE: no se pudo registrar el certificado, así que no se entrega

Los errores responden { "error": "…", "code": "…" }.

Verificación

https://www.qvapay.com/verify/<código> es pública y no necesita sesión. Enseña:

  • el estado del certificado;
  • el titular y su identificador fiscal, tapado salvo los cuatro últimos;
  • el identificador corto de la cuenta y el usuario;
  • las fechas de emisión y de vigencia;
  • el registro de QvaPay en FinCEN.

Un certificado revocado o de una cuenta que ya no está activa no enseña el titular.