Ir al contenido

Guía para nuevos clientes

Esta guía te lleva a través del proceso completo de configuración de tu sistema con fiskaly SIGN DE, usando una combinación del fiskaly HUB y solicitudes API. Al finalizar, tendráss un TSS completamente funcional con un cliente listo para firmar transacciones.

Antes de comenzar la configuración, esto es lo que configurará:

🏢

Organización

Su entidad de nivel superior en fiskaly. Las organizaciones gestionadas representan ubicaciones físicas individuales.

🔑

Clave API y secreto

Credenciales generadas en HUB, usadas para autenticar todas las solicitudes API posteriores.

🔐

Autenticación

Use tu clave API y secreto para generar un token de acceso utilizado en todas las llamadas API posteriores.

🛡️

TSS (Sistema de seguridad técnica)

El componente de firma principal. Debe crearse, configurarse con un PIN de administrador e inicializarse.

💻

Cliente

Representa un terminal de punto de venta o una aplicación que crea transacciones contra un TSS.

🧾

Transacción

Un registro fiscal firmado. Una vez que su TSS y Cliente estén listos, puede crear y firmar transacciones.

Eche un vistazo a nuestro tutorial en vídeo para una explicación visual del proceso de configuración.

También necesitará una herramienta para realizar solicitudes HTTP — por ejemplo cURL (línea de comandos), Postman o su propio código de aplicación.

  1. Crear una organización

    Cuando inicia sesión en HUB por primera vez, se te pide que crea una organización. Esta es su organización principal, y todas las organizaciones gestionadas se crean bajo ella.

    En general, cada organización gestionada corresponde a una ubicación física (p. ej., una tienda o restaurante).

    Creación de organización en HUB

    Después de crear tu organización, HUB mostrará tu configuración actual — inicialmente con 0 TSS y 0 clientes.

    Resumen del HUB
  2. Generar una clave API y un secreto

    Navega a la sección Claves API en el fiskaly HUB y crea una nueva clave API.

    Generación de clave API

    Recibirá una Clave API y un Secreto API. Guárdelos de forma segura — los necesitará para todas las solicitudes API posteriores.

    Nuestro tutorial en vídeo demuestra el proceso de generación de una clave y secreto API.

  3. Autenticarse con la API

    Use tu clave y secreto de API para obtener un token de acceso. Este token es necesario para todas las solicitudes posteriores.

    curl -X POST https://kassensichv-middleware.fiskaly.com/api/v2/auth \
      -H "Content-Type: application/json" \
      -d '{
        "api_key": "your_api_key",
        "api_secret": "your_api_secret"
      }'
    Ejemplo de respuesta (200 OK)
    {
    "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "access_token_claims": {
    "env": "TESTING",
    "organization_id": "your-org-id"
    },
    "access_token_expires_in": 86400,
    "access_token_expires_at": "2026-03-02T12:00:00Z",
    "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refresh_token_expires_in": 172800,
    "refresh_token_expires_at": "2026-03-03T12:00:00Z"
    }

    La respuesta contiene un access_token que debe incluir como token Bearer en el encabezado Authorization de todas las solicitudes siguientes.

  4. Crear un TSS

    Crea un nuevo Sistema de Seguridad Técnica (TSS) enviando una solicitud PUT con un ID de TSS único (UUID).

    TSS_ID=$(uuidgen)
    
    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "description": "My first TSS"
      }'
    Ejemplo de respuesta (200 OK)
    {
    "_id": "your-tss-id",
    "_type": "TSS",
    "_env": "TESTING",
    "_version": 1,
    "admin_puk": "initial-puk-from-creation",
    "state": "CREATED",
    "certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
    "serial_number": "a1b2c3d4e5f6...",
    "public_key": "BHxw...",
    "signature_algorithm": "ECDSA",
    "signature_timestamp_format": "ISO8601",
    "transaction_data_encoding": "UTF-8",
    "max_number_registered_clients": 100,
    "max_number_active_transactions": 1000,
    "time_creation": "2026-03-01T10:00:00Z",
    "metadata": {}
    }

    Después de la creación, necesita inicializar el TSS. Esto implica tres subpasos:

    a) Cambiar el PIN de administrador

    El TSS se crea en un estado UNINITIALIZED. Debe establecer un nuevo PIN de administrador antes de la inicialización.

    curl -X PATCH "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/admin" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "admin_puk": "initial-puk-from-creation",
        "new_admin_pin": "your-secure-admin-pin"
      }'

    b) Autenticarse como administrador

    curl -X POST "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/admin/auth" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "admin_pin": "your-secure-admin-pin"
      }'

    c) Inicializar el TSS

    Actualiza el estado del TSS a INITIALIZED:

    curl -X PATCH "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "state": "INITIALIZED"
      }'
    Ejemplo de respuesta (200 OK)
    {
    "_id": "your-tss-id",
    "_type": "TSS",
    "_env": "TESTING",
    "_version": 2,
    "state": "INITIALIZED",
    "certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
    "serial_number": "a1b2c3d4e5f6...",
    "public_key": "BHxw...",
    "signature_algorithm": "ECDSA",
    "signature_timestamp_format": "ISO8601",
    "transaction_data_encoding": "UTF-8",
    "max_number_registered_clients": 100,
    "max_number_active_transactions": 1000,
    "time_creation": "2026-03-01T10:00:00Z",
    "metadata": {}
    }
  5. Crear un cliente

    Con el TSS inicializado, crea un cliente que represente su terminal de punto de venta o aplicación.

    CLIENT_ID=$(uuidgen)
    
    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/client/${CLIENT_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "serial_number": "POS-001"
      }'
    Ejemplo de respuesta (200 OK)
    {
    "_id": "your-client-id",
    "_type": "CLIENT",
    "_env": "TESTING",
    "_version": 1,
    "serial_number": "POS-001",
    "state": "REGISTERED",
    "tss_id": "your-tss-id",
    "time_creation": "2026-03-01T10:00:00Z",
    "metadata": {}
    }
  6. Crear una transacción

    Ahora puede crear tu primera transacción firmada. Las transacciones siguen un ciclo de vida: iniciar la transacción y luego finalizarla.

    a) Iniciar la transacción

    TX_ID=$(uuidgen)
    
    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/tx/${TX_ID}?tx_revision=1" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "state": "ACTIVE",
        "client_id": "your-client-id"
      }'
    Ejemplo de respuesta (200 OK)
    {
    "_id": "your-tx-id",
    "_type": "TRANSACTION",
    "_env": "TESTING",
    "_version": 1,
    "number": 1,
    "state": "ACTIVE",
    "client_id": "your-client-id",
    "client_serial_number": "POS-001",
    "tss_id": "your-tss-id",
    "tss_serial_number": "a1b2c3d4e5f6...",
    "time_start": "2026-03-01T10:00:00Z",
    "revision": 1,
    "latest_revision": 1,
    "log": {
    "operation": "START",
    "timestamp": "2026-03-01T10:00:00Z",
    "timestamp_format": "ISO8601"
    },
    "signature": {
    "value": "MEUCIQDx...",
    "timestamp": "2026-03-01T10:00:00Z",
    "timestamp_format": "ISO8601",
    "serial_number": "a1b2c3d4e5f6..."
    },
    "metadata": {}
    }

    b) Finalizar la transacción

    curl -X PUT "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/tx/${TX_ID}?tx_revision=2" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "state": "FINISHED",
        "client_id": "your-client-id",
        "schema": {
          "standard_v1": {
            "receipt": {
              "receipt_type": "RECEIPT",
              "amounts_per_vat_rate": [
                {
                  "vat_rate": "NORMAL",
                  "amount": "10.00"
                }
              ],
              "amounts_per_payment_type": [
                {
                  "payment_type": "CASH",
                  "amount": "10.00"
                }
              ]
            }
          }
        }
      }'
    Ejemplo de respuesta (200 OK)
    {
    "_id": "your-tx-id",
    "_type": "TRANSACTION",
    "_env": "TESTING",
    "_version": 2,
    "number": 1,
    "state": "FINISHED",
    "client_id": "your-client-id",
    "client_serial_number": "POS-001",
    "tss_id": "your-tss-id",
    "tss_serial_number": "a1b2c3d4e5f6...",
    "time_start": "2026-03-01T10:00:00Z",
    "time_end": "2026-03-01T10:05:00Z",
    "revision": 2,
    "latest_revision": 2,
    "schema": {
    "standard_v1": {
    "receipt": {
    "receipt_type": "RECEIPT",
    "amounts_per_vat_rate": [{ "vat_rate": "NORMAL", "amount": "10.00" }],
    "amounts_per_payment_type": [
    { "payment_type": "CASH", "amount": "10.00" }
    ]
    }
    }
    },
    "qr_code_data": "V0;955002-00;Kassenbeleg-V1;...",
    "log": {
    "operation": "FINISH",
    "timestamp": "2026-03-01T10:05:00Z",
    "timestamp_format": "ISO8601"
    },
    "signature": {
    "value": "MEUCIQDx...",
    "timestamp": "2026-03-01T10:05:00Z",
    "timestamp_format": "ISO8601",
    "serial_number": "a1b2c3d4e5f6..."
    },
    "metadata": {}
    }

    La respuesta incluye los datos de transacción firmados con una firma criptográfica del TSS.

  7. Cerrar la sesión del administrador

    Una vez completada la configuración, cierra la sesión del usuario administrador en el TSS.

    curl -X POST "https://kassensichv-middleware.fiskaly.com/api/v2/tss/${TSS_ID}/admin/logout" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}"

También puede ejecutar estas solicitudes usando Postman. Descarga los archivos de colección y entorno para comenzar rápidamente:

Descargar colección de Postman

 

Descargar entorno de Postman

Consulta el tutorial de Postman para obtener instrucciones detalladas.

Was this page helpful?