Para Desarrolladores · API FactPy

Integrá SIFEN con
una sola API

API REST/JSON documentada, ejemplos en múltiples lenguajes y soporte técnico en español. Todo lo que necesitás para integrar facturación electrónica a tu sistema.

# Ejemplo rápido con cURL curl -X POST https://api.factpy.com/facturacion-api/data.php \ -H "Content-Type: multipart/form-data" \ -F "recordID=TU_RECORD_ID" \ -F 'dataJson={ "fecha": "2025-01-17 17:25:26", "establecimiento": "001", "punto": "001", "numero": "0000060", "tipoDocumento": 1, "condicionPago": 1, "moneda": "PYG", "receiptid": "test60", "cliente": { "ruc": "80000001-1", "nombre": "Mi Empresa SA" }, "items": [{ "descripcion": "Producto A", "cantidad": 2, "precioUnitario": 150000 }] }' Response 200: { "status": true, "recordID": "35f35xsatra0098241aq1", "cdc": "01rucemisor001001000000122025040116598712536", "xmlLink": "api.factpy.com/facturacion-api/firmados/...xml", "kude": "api.factpy.com/facturacion-api/kude/fe/..." }

Recursos para desarrolladores

Todo lo que necesitás para integrar FactPy a tu sistema

Documentación completa

Referencia completa de todos los endpoints, parámetros, tipos de datos y códigos de error en español.

docs.factpy.com
Ejemplos de código

Ejemplos listos para copiar en PHP, Python, JavaScript/Node.js, cURL y más. Cubrimos los casos de uso más comunes.

Ver ejemplos
Ambiente de pruebas

Ambiente sandbox para testear tu integración sin emitir documentos reales. Conectado al ambiente de homologación de SIFEN.

Acceder al sandbox
Webhooks

Configurá una URL de callback para recibir notificaciones en tiempo real cuando el estado de un documento cambia en SIFEN.

Ver docs de webhooks
Credencial recordID

La documentación pública usa recordID como identificador obligatorio en cada solicitud. Se envía junto con dataJson en formato multipart/form-data.

Ver docs de auth
Soporte técnico

Equipo técnico paraguayo disponible por WhatsApp y email. Acompañamiento en homologación y resolución de errores SIFEN.

WhatsApp

Endpoints principales documentados

Resumen de los endpoints públicos que sí aparecen en la documentación de FactPy

POST
https://api.factpy.com/facturacion-api/data.php

Crear documentos electrónicos enviando recordID + dataJson por multipart/form-data.

POST
https://api.factpy.com/facturacion-api/evento.php

Registrar eventos sobre documentos: inutilización, cancelación y nominación.

POST
https://api.factpy.com/facturacion-api/estadoDE.php

Consultar estados por receiptid para saber si un DE fue aprobado, rechazado o sigue procesando.

DOC
https://docs.factpy.com/endpoints-fe/

Referencia para emisión de facturas, notas de crédito, remisiones, autofacturas y recibos.

DOC
https://docs.factpy.com/endpoints-evento/

Guía oficial para eventos: inutilización, cancelación y nominación.

DOC
https://docs.factpy.com/api-interna/

Guía oficial para consultar estados, obtener CDCs y revisar respuestas por receiptid.

Ejemplos de código

Integrá desde tu lenguaje favorito

<?php $recordID = 'TU_RECORD_ID'; $url = 'https://api.factpy.com/facturacion-api/data.php'; $payload = [ 'fecha' => '2025-01-17 17:25:26', 'establecimiento' => '001', 'punto' => '001', 'numero' => '0000060', 'tipoDocumento' => 1, 'condicionPago' => 1, 'moneda' => 'PYG', 'receiptid' => 'test60', 'cliente' => [ 'ruc' => '80000001-1', 'nombre' => 'Mi Cliente SA', ], 'items' => [[ 'descripcion' => 'Servicio profesional', 'cantidad' => 1, 'precioUnitario' => 500000, ]], ]; $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => [ 'recordID' => $recordID, 'dataJson' => json_encode($payload), ], ]); $response = json_decode(curl_exec($ch), true); curl_close($ch); echo 'Status: ' . ($response['status'] ? 'OK' : 'ERROR'); echo 'CDC: ' . $response['cdc']; echo 'KuDE: ' . $response['kude'];
const formData = new FormData(); const documento = { fecha: '2025-01-17 17:25:26', establecimiento: '001', punto: '001', numero: '0000060', tipoDocumento: 1, condicionPago: 1, moneda: 'PYG', receiptid: 'test60', cliente: { ruc: '80000001-1', nombre: 'Mi Cliente SA', }, items: [{ descripcion: 'Servicio profesional', cantidad: 1, precioUnitario: 500000, }], }; formData.append('recordID', 'TU_RECORD_ID'); formData.append('dataJson', JSON.stringify(documento)); const response = await fetch('https://api.factpy.com/facturacion-api/data.php', { method: 'POST', body: formData, }); const data = await response.json(); console.log('Status:', data.status); console.log('CDC:', data.cdc); console.log('KuDE:', data.kude);
import requests import json record_id = 'TU_RECORD_ID' url = 'https://api.factpy.com/facturacion-api/data.php' payload = { 'fecha': '2025-01-17 17:25:26', 'establecimiento': '001', 'punto': '001', 'numero': '0000060', 'tipoDocumento': 1, 'condicionPago': 1, 'moneda': 'PYG', 'receiptid': 'test60', 'cliente': { 'ruc': '80000001-1', 'nombre': 'Mi Cliente SA', }, 'items': [{ 'descripcion': 'Servicio profesional', 'cantidad': 1, 'precioUnitario': 500000, }], } data = { 'recordID': record_id, 'dataJson': json.dumps(payload), } r = requests.post(url, data=data) result = r.json() print(f"Status: {result['status']}") print(f"CDC: {result['cdc']}") print(f"KuDE: {result['kude']}")
curl -X POST https://api.factpy.com/facturacion-api/data.php \ -H "Content-Type: multipart/form-data" \ -F "recordID=TU_RECORD_ID" \ -F 'dataJson={ "fecha": "2025-01-17 17:25:26", "establecimiento": "001", "punto": "001", "numero": "0000060", "tipoDocumento": 1, "condicionPago": 1, "moneda": "PYG", "receiptid": "test60", "cliente": { "ruc": "80000001-1", "nombre": "Mi Cliente SA" }, "items": [ { "descripcion": "Servicio profesional", "cantidad": 1, "precioUnitario": 500000 } ] }' # Respuesta esperada: { "status": true, "recordID": "35f35xsatra0098241aq1", "cdc": "01rucemisor001001000000122025040116598712536", "xmlLink": "api.factpy.com/facturacion-api/firmados/...xml", "kude": "api.factpy.com/facturacion-api/kude/fe/..." }

Soporte técnico para desarrolladores

Sabemos que integrar un sistema de facturación electrónica puede ser complejo. Por eso nuestro equipo técnico está disponible para ayudarte en cada etapa:

Revisión de integración

Revisamos tu código o peticiones para detectar problemas antes de ir a producción.

Soporte en homologación

Te acompañamos durante el proceso de homologación ante SET/SIFEN.

Resolución de errores SIFEN

Interpretamos los códigos de error de SIFEN y te ayudamos a resolverlos.

Actualización ante cambios de SIFEN

Cuando la SET actualiza la normativa, FactPy se adapta y te notifica.

¿Necesitás soporte?

Horario de soporte técnico: Lunes a Sábado, 08:00 a 19:30 hs (Paraguay, UTC-4).

¿Listo para integrar FactPy a tu sistema?

Conseguí tu API Key y empezá a emitir facturas electrónicas hoy mismo.