Ir al contenido

Integración paso a paso

Esta guía te lleva a través del proceso completo de integración de la API de fiskaly SIGN FR para el cumplimiento fiscal francés, utilizando una combinación del fiskaly HUB y solicitudes API. Al finalizar, dispondráss de un sistema completamente funcional con registros firmados, journalizados y archivados.

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

🏢

Organization


  • AccountGenerado por HUB

    Entidad de nivel superior en fiskaly HUB. No puede estar anidada dentro de otra Account.

  • GroupGenerado por HUB

    Capa intermedia que organiza las Units en clústeres lógicos (p. ej. uno por país).

  • UnitGenerado por API

    Merchant / Taxpayer que opera dentro del Group.

🔑

API Key & Secret


  • Nivel GroupGenerado por HUB

    Generado en HUB para la Organization GROUP. Se usa para autenticarse en la API SIGN FR y crear Organization Units y sus API Keys.

  • Nivel UnitGenerado por API

    Generado vía API (endpoint createSubject) para la Organization UNIT. Se usa para autenticarse en todas las llamadas operativas a nivel de Unit.

🧾

Taxpayer


Representación de una COMPANY o INDIVIDUAL registrada ante las autoridades fiscales francesas.

📍

Location


  • HEAD_OFFICE

    Creada automáticamente al crear el Taxpayer, comparte el mismo UUID. Coincide con el domicilio legal.

  • BRANCH

    Cada tienda, local u otra ubicación operativa donde se realizan operaciones fiscales.

💻

System


  • FISCAL_DEVICE

    Abstracción de una caja registradora utilizada para registrar datos de transacciones conforme a la normativa fiscal francesa (NF525).

📄

Record


Cada operación comercial realizada en el System. Requiere dos llamadas sucesivas:

  • INTENTION

    Identifica la intención de registrar una transacción en el System.

  • TRANSACTION

    Identifica un recibo fiscal emitido por el System.

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.

El diagrama a continuación ilustra el flujo de trabajo y destaca los pasos esenciales necesarios para completar con éxito tu integración. Cada elemento enlaza directamente con el paso de configuración correspondiente a continuación.

SIGN FR integration workflowEleven-step SIGN FR integration workflow with tiles linking to the matching setup steps below.Register on HUBHUBCreate Account &OrganizationGROUPHUBCreate API KeyHUBCreate TokenSIGN FR APICreate OrganizationUNITSIGN FR APICreate SubjectAPI_KEYSIGN FR APICreate TokenSIGN FR APICreate TaxpayerCOMPANY orINDIVIDUALSIGN FR APICreate LocationBRANCHSIGN FR APICreate SystemFISCAL_DEVICESIGN FR APICreate RecordSIGN FR API
  1. Registrarse en el HUB

    Comienza registrándote en el fiskaly HUB.

    Registro

    Crear una cuenta fiskaly es el primer paso, tras el cual puede proceder con la configuración de la primera estructura organizativa para su negocio y la generación de tu clave API.

  2. Crear cuenta y grupo

    Continúa creando tu cuenta y su primer grupo utilizando el HUB. En la API de SIGN FR, el GROUP es una capa intermedia obligatoria dentro de su ACCOUNT, utilizada para organizar tus organizaciones UNIT.

  3. Crear clave API

    El siguiente paso es generar una clave API para tu organización a través del HUB. Este par de clave API y secreto es necesario para crear su(s) organización(es) de tipo UNIT (paso 5).

    A partir del siguiente paso, comenzará a utilizar nuestra API de SIGN FR.

  1. Crear token (gestión)

    Comienza a utilizar la API de SIGN FR a través del endpoint createToken. Deberás crear un token para autenticarte en los pasos siguientes.

    curl -X POST https://test.api.fiskaly.com/api/v1/auth/token \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -d '{
        "api_key": "YOUR_API_KEY",
        "api_secret": "YOUR_API_SECRET"
      }'
    Ejemplo de respuesta (200 OK)
    {
    "content": {
    "id": "tok_abc123",
    "authentication": {
    "type": "JWT",
    "bearer": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expires_at": "2026-03-02T12:00:00Z"
    },
    "organization": {
    "id": "YOUR_GROUP_ORG_ID"
    },
    "subject": {
    "id": "sub_abc123"
    }
    },
    "metadata": {
    "trace_identifier": "trace_abc123",
    "api_version": "2026-02-03"
    }
    }
  2. Crear organización UNIT

    Continúa creando una organización de tipo UNIT a través del endpoint createOrganization. Deberás crear una organización UNIT para cada una de sus representaciones de contribuyente.

    Al crear una organización de tipo UNIT, asegúrate de que esté asociada a la organización de tipo GROUP que creó anteriormente a través del HUB. Para ello, utiliza el token generado a partir de las claves API creadas para tu organización de tipo GROUP. Esto refleja la estructura jerárquica donde la organización de tipo UNIT está anidada bajo tu organización de tipo GROUP.

    curl -X POST https://test.api.fiskaly.com/api/v1/organizations \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Idempotency-Key: YOUR_UNIQUE_UUID" \
      -H "X-Scope-Identifier: YOUR_GROUP_ORG_ID" \
      -d '{
        "type": "UNIT",
        "name": "My UNIT Organization",
        "parent_id": "YOUR_GROUP_ORG_ID"
      }'
    Ejemplo de respuesta (201 Created)
    {
    "content": {
    "id": "org_unit_abc123",
    "state": "ENABLED",
    "type": "UNIT",
    "name": "My UNIT Organization",
    "organization": {
    "id": "YOUR_GROUP_ORG_ID"
    }
    },
    "metadata": {
    "trace_identifier": "trace_abc123",
    "api_version": "2026-02-03"
    }
    }
  3. Crear subject clave API

    Crea un subject de tipo API_KEY a través del endpoint createSubject. La conexión entre la organización de tipo UNIT y la clave API se establece a través del X-Scope-Identifier (utilizando el id de la organización recién creada).

    curl -X POST https://test.api.fiskaly.com/api/v1/subjects \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Idempotency-Key: YOUR_UNIQUE_UUID" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "type": "API_KEY"
      }'
    Ejemplo de respuesta (201 Created)
    {
    "content": {
    "id": "sub_abc123",
    "state": "ENABLED",
    "type": "API_KEY",
    "credentials": {
    "api_key": "fsk_unit_abc123",
    "api_secret": "secret_only_shown_once"
    }
    },
    "metadata": {
    "trace_identifier": "trace_abc123",
    "api_version": "2026-02-03"
    }
    }
  4. Crear token (UNIT)

    A continuación, crea un token que se utilizará para crear recursos dentro de la organización de tipo UNIT correspondiente.

    curl -X POST https://test.api.fiskaly.com/api/v1/auth/token \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -d '{
        "api_key": "YOUR_UNIT_API_KEY",
        "api_secret": "YOUR_UNIT_API_SECRET"
      }'
    Ejemplo de respuesta (200 OK)
    {
    "content": {
    "id": "tok_unit_abc123",
    "authentication": {
    "type": "JWT",
    "bearer": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expires_at": "2026-03-02T12:00:00Z"
    },
    "organization": {
    "id": "org_unit_abc123"
    },
    "subject": {
    "id": "sub_abc123"
    }
    },
    "metadata": {
    "trace_identifier": "trace_abc123",
    "api_version": "2026-02-03"
    }
    }
  5. Crear contribuyente

    Ahora está listo para crear las partes operativas necesarias para la fiscalización en Francia. Utiliza el endpoint createTaxpayer para crear la representación de un contribuyente:

    • Establece el contribuyente como tipo COMPANY (entidad legal) o INDIVIDUAL (persona física). En ambos casos, deben proporcionarse el name y la address.
    • Dentro de la información de fiscalization francesa, proporciona:
      • tax_id_number: número de identificación de empresa francesa (SIREN) emitido por el INSEE
      • credentials: credenciales del portal de fiscalización francés

    Una vez creado, el state del contribuyente se establece en ACQUIRED. Actualícelo a COMMISSIONED utilizando el endpoint updateTaxpayer.

    # Create Taxpayer
    curl -X POST https://test.api.fiskaly.com/api/v1/taxpayers \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Idempotency-Key: YOUR_UNIQUE_UUID" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "type": "COMPANY",
        "name": "My Company",
        "address": {
          "street": "123 Rue de Rivoli",
          "postal_code": "75001",
          "city": "Paris",
          "country_code": "FR"
        },
        "fiscalization": {
          "tax_id_number": "123456789",
          "credentials": {
            "type": "PORTAL_ACCESS",
            "username": "YOUR_PORTAL_USERNAME",
            "password": "YOUR_PORTAL_PASSWORD"
          }
        }
      }'
    
    # Commission Taxpayer
    curl -X PATCH https://test.api.fiskaly.com/api/v1/taxpayers/YOUR_TAXPAYER_ID \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "state": "COMMISSIONED"
      }'
  6. Crear ubicación

    Para cada ubicación de negocio operativa, crea una Location de tipo BRANCH a través del endpoint createLocation.

    Una vez creada, el state de la ubicación se establece en ACQUIRED. Actualícelo a COMMISSIONED utilizando el endpoint updateLocation.

    # Create Location
    curl -X POST https://test.api.fiskaly.com/api/v1/locations \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Idempotency-Key: YOUR_UNIQUE_UUID" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "type": "BRANCH",
        "address": {
          "street": "123 Rue de Rivoli",
          "postal_code": "75001",
          "city": "Paris",
          "country_code": "FR"
        }
      }'
    
    # Commission Location
    curl -X PATCH https://test.api.fiskaly.com/api/v1/locations/YOUR_LOCATION_ID \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "state": "COMMISSIONED"
      }'
  7. Crear sistema

    El endpoint createSystem te permite crear una abstracción de cada dispositivo que utiliza para emitir recibos. Cada caja registradora o POS debe proporcionarse como un nuevo System de tipo FISCAL_DEVICE.

    • Un sistema se conectará a una Location de tipo BRANCH específica, creada anteriormente.
    • Para cada dispositivo, proporciona información del producto (MPN, marca, fecha de inicio de uso) y detalles del software.

    Una vez creado, el state del sistema se establece en ACQUIRED. Actualícelo a COMMISSIONED utilizando el endpoint updateSystem.

    # Create System
    curl -X POST https://test.api.fiskaly.com/api/v1/systems \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Idempotency-Key: YOUR_UNIQUE_UUID" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "type": "FISCAL_DEVICE",
        "location_id": "YOUR_LOCATION_ID",
        "product": {
          "mpn": "POS-1000",
          "brand": "My POS Brand",
          "usage_start_date": "2026-03-01",
          "software": {
            "name": "My POS Software",
            "version": "1.0.0"
          }
        }
      }'
    
    # Commission System
    curl -X PATCH https://test.api.fiskaly.com/api/v1/systems/YOUR_SYSTEM_ID \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "state": "COMMISSIONED"
      }'
  8. Crear registro

    Crear un registro en SIGN FR requiere dos llamadas sucesivas:

    • Parte A) INTENTION — al inicio del proceso de venta
    • Parte B) TRANSACTION — después del proceso de pago
    # Part A) Create Record — INTENTION
    curl -X POST https://test.api.fiskaly.com/api/v1/records \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Idempotency-Key: YOUR_UNIQUE_UUID_1" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "type": "INTENTION",
        "system_id": "YOUR_SYSTEM_ID",
        "operation": {
          "type": "TRANSACTION"
        }
      }'
    
    # Part B) Create Record — TRANSACTION
    curl -X POST https://test.api.fiskaly.com/api/v1/records \
      -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -H "X-Api-Version: 2026-02-03" \
      -H "X-Idempotency-Key: YOUR_UNIQUE_UUID_2" \
      -H "X-Scope-Identifier: YOUR_UNIT_ORG_ID" \
      -d '{
        "type": "TRANSACTION",
        "intention_id": "YOUR_INTENTION_RECORD_ID",
        "operation": {
          "type": "RECEIPT",
          "document": {
            "number": "R-2026-0001",
            "date": "2026-03-01T12:00:00Z",
            "amounts": {
              "total_including_vat": "12000",
              "total_excluding_vat": "10000"
            }
          },
          "entries": [
            {
              "type": "SALE",
              "description": "Product A",
              "good_or_service": "GOOD"
            }
          ]
        }
      }'

    Una vez que el registro se ha creado correctamente, los datos serán firmados, journalizados y archivados para cumplir con las tres obligaciones fiscales clave en Francia.

Was this page helpful?