Documentación para desarrolladores

Integrá facturación con Fisnodo

Esta guía resume el flujo de integración para ERP, POS, ecommerce y sistemas internos que necesitan enviar facturas, validar datos, consultar estados y recibir eventos.

Antes de integrar

Estos son los conceptos que aparecen en casi todos los endpoints de la API.

Base URL

  • Producción: https://api.fisnodo.sun.com.py

Autenticación

  • Usá Authorization: Bearer <api-key> para integraciones de sistema.
  • Los endpoints de consola usan sesión HTTP-only y no son el camino recomendado para integraciones externas.

Tenant y empresa

  • Los endpoints v1 trabajan con X-Tenant-Id.
  • La empresa, sucursal, punto de emisión y canal de facturación deben estar configurados antes de operar facturas reales.

Idempotencia

  • POST /v1/documents requiere Idempotency-Key para evitar duplicar facturas ante reintentos de red.

Flujo recomendado

Empezá con sandbox y validación. Pasá a facturación real cuando el contrato, la configuración y el seguimiento estén claros.

  1. 1

    Configurar

    Creá o seleccioná tenant, empresa, sucursal, punto de emisión, canal de facturación, certificado o datos de autoimpresor según corresponda.

  2. 2

    Validar

    Enviá una factura al sandbox para revisar estructura, reglas y artefactos sin emitir realmente.

  3. 3

    Procesar

    Creá la factura con Idempotency-Key y seguí su estado hasta una respuesta final del canal configurado.

  4. 4

    Sincronizar

    Consultá artefactos y usá webhooks para actualizar el sistema origen sin polling constante.

Ejemplo mínimo

El payload exacto depende del tipo de factura y del canal, pero el patrón de llamada es el mismo.

fetch

JavaScript / TypeScript

await fetch("https://api.fisnodo.sun.com.py/v1/documents", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <api-key>",
    "X-Tenant-Id": "<tenant-id>",
    "Idempotency-Key": "invoice-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify(documento)
});
requests

Python

requests.post(
  "https://api.fisnodo.sun.com.py/v1/documents",
  headers={
    "Authorization": "Bearer <api-key>",
    "X-Tenant-Id": "<tenant-id>",
    "Idempotency-Key": "invoice-001"
  },
  json=documento,
)
curl

PHP

$ch = curl_init("https://api.fisnodo.sun.com.py/v1/documents");
curl_setopt_array($ch, [
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer <api-key>",
    "X-Tenant-Id: <tenant-id>",
    "Idempotency-Key: invoice-001",
    "Content-Type: application/json"
  ],
  CURLOPT_POSTFIELDS => json_encode($documento),
]);
HttpClient

C#

using var request = new HttpRequestMessage(HttpMethod.Post, "/v1/documents");
request.Headers.Authorization = new("Bearer", "<api-key>");
request.Headers.Add("X-Tenant-Id", "<tenant-id>");
request.Headers.Add("Idempotency-Key", "invoice-001");
request.Content = JsonContent.Create(documento);
await client.SendAsync(request);

Endpoints principales

La referencia completa sigue disponible como OpenAPI JSON para importar en herramientas técnicas.

Documentos

POST/v1/documents
Crea y procesa una factura.
GET/v1/documents/{id}
Consulta estado y datos de la factura.
POST/v1/documents/{id}/retry
Reintenta una factura recuperable.
GET/v1/documents/{id}/timeline
Obtiene el historial operativo.

Sandbox

POST/v1/sandbox/preview
Genera validación, XML, imprimible o respuesta de prueba sin emitir realmente.

Configuración

GET/v1/companies
Lista empresas del tenant.
GET/v1/emission-channels
Lista canales de facturación configurados.
GET/v1/certificates
Consulta certificados disponibles.

Webhooks

GET/v1/webhooks
Lista suscripciones.
POST/v1/webhooks/{id}/replay
Reenvía un evento para diagnóstico.

Contrato OpenAPI

Usá el JSON para generar clientes, revisar schemas completos y automatizar pruebas de integración.

Descargar OpenAPI JSON