API de Facturación Electrónica
Documentación completa para la integración con SIFEN Paraguay
Información General
- URL Base
https://tu-dominio.com/fact_elect/- Método
- POST
- Content-Type
application/x-www-form-urlencoded- Autenticación
- API Key por empresa
Endpoints Disponibles
POST
index.php
Emisión de Factura Electrónica
POST
remision.php
Emisión de Nota de Remisión Electrónica
GET
kude.php?cdc={CDC}
Visualización del KUDE
POST
consultar_estado.php
Consultar estado de un DE
POST
consultar_ruc.php
Consultar datos de un RUC en SIFEN
POST
cancelar_api.php
Cancelar una Factura Electrónica emitida
1. Emisión de Factura Electrónica
Parámetros POST (form-data)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
apiKey |
string | ✅ | Clave API de la empresa |
tenantId |
string | ✅ | Identificador del tenant/empresa (ej: puchi) |
tenantPunto |
string | Condicional | Establecimiento-Punto de expedición (ej: 001-001). Puede omitirse si data[0].establecimiento y data[0].punto vienen dentro del JSON. |
cliente |
string | Condicional | Nombre del cliente. Puede omitirse si viene en data[0].cliente.razonSocial. |
email |
string | Condicional | Email del cliente (para envío del KUDE). Puede omitirse si viene en data[0].cliente.email. |
data |
string (JSON) | ✅ | Datos de la factura en formato JSON (ver estructura abajo) |
Nota: Los campos
tenantPunto, cliente y email son condicionales: son requeridos sólo si no están presentes dentro del JSON data. Esto permite integrar sistemas que ya envían todos los datos en el JSON sin necesidad de duplicarlos en los parámetros POST.
Respuesta
Texto plano con formato:
Respuesta exitosa
Cliente: NOMBRE DEL CLIENTE
Estado: ok
Mensaje: Factura creada exitosamente...
NUM: 59-CDC: 01042287731001001000005912026041314432884104
Respuesta con error
Cliente: NOMBRE DEL CLIENTE
Estado: error
Mensaje: Error de SIFEN: [descripción del error]
NUM: 59-CDC: No disponible
2. Estructura del JSON (data)
El campo data es un array JSON con un solo elemento [{...}].
Ejemplo: Cliente Contribuyente (B2B)
JSON
[
{
"tipoDocumento": 1,
"tipoTransaccion": 1,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "80000004-2",
"razonSocial": "EMPRESA IMPORTADORA S.A.",
"tipoContribuyente": 2,
"tipoOperacion": 1,
"direccion": "AV. MARISCAL LOPEZ 1234",
"numeroCasa": "1234",
"departamento": 11,
"departamentoDescripcion": "CENTRAL",
"distrito": 1,
"distritoDescripcion": "ASUNCION (DISTRITO)",
"ciudad": 1,
"ciudadDescripcion": "ASUNCION (DISTRITO)",
"telefono": "021555123",
"email": "[email protected]",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"codigo": "CLI001"
},
"items": [
{
"codigo": "0000001",
"descripcion": "Jabón en Pan Cuñataí 180g",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 1986,
"iva": 5,
"ivaTipo": 1,
"ivaBase": 100
},
{
"codigo": "0000002",
"descripcion": "Arroz Paquete 1Kg",
"unidadMedida": 77,
"cantidad": 3,
"precioUnitario": 8500,
"iva": 10,
"ivaTipo": 1,
"ivaBase": 100
}
],
"condicion": {
"tipo": 1,
"entregas": [
{
"tipo": 1,
"monto": 29472,
"moneda": "PYG",
"monedaDescripcion": "Guarani"
}
]
},
"factura": {
"presencia": 1
}
}
]
Ejemplo: Cliente No Contribuyente (B2C)
JSON
[
{
"tipoDocumento": 1,
"tipoTransaccion": 1,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": false,
"tipoOperacion": 2,
"documentoTipo": 1,
"documentoNumero": "3456789",
"razonSocial": "HECTOR ANTONIO BENITEZ VALDEZ",
"direccion": "CALLE PRINCIPAL C/ SEGUNDA",
"numeroCasa": "456",
"departamento": 8,
"departamentoDescripcion": "ITAPUA",
"distrito": 89,
"distritoDescripcion": "CAMBYRETA",
"ciudad": 2600,
"ciudadDescripcion": "CAMBYRETA",
"telefono": "0975123456",
"email": "[email protected]",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"codigo": "00180"
},
"items": [
{
"codigo": "0000001",
"descripcion": "Jabón en Pan Cuñataí 180g",
"unidadMedida": 77,
"cantidad": 1,
"precioUnitario": 1986,
"iva": 5,
"ivaTipo": 1,
"ivaBase": 100
},
{
"codigo": "0000002",
"descripcion": "Jabón en Pan Cuñataí 270g",
"unidadMedida": 77,
"cantidad": 1,
"precioUnitario": 2900,
"iva": 0,
"ivaTipo": 1,
"ivaBase": 100
},
{
"codigo": "0000003",
"descripcion": "Bandera Paraguaya C/Mastil",
"unidadMedida": 77,
"cantidad": 1,
"precioUnitario": 8500,
"iva": 10,
"ivaTipo": 1,
"ivaBase": 100
}
],
"condicion": {
"tipo": 1,
"entregas": [
{
"tipo": 1,
"monto": 13386,
"moneda": "PYG",
"monedaDescripcion": "Guarani"
}
]
},
"factura": {
"presencia": 1
}
}
]
Para no contribuyentes: usar
documentoTipo + documentoNumero en lugar de ruc. El tipoOperacion debe ser 2 (B2C).Ejemplo: Venta a Crédito
JSON
[
{
"tipoDocumento": 1,
"tipoTransaccion": 1,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "80000004-2",
"razonSocial": "EMPRESA IMPORTADORA S.A.",
"tipoContribuyente": 2,
"tipoOperacion": 1,
"direccion": "AV. MARISCAL LOPEZ 1234",
"numeroCasa": "1234",
"departamento": 11,
"departamentoDescripcion": "CENTRAL",
"distrito": 1,
"distritoDescripcion": "ASUNCION (DISTRITO)",
"ciudad": 1,
"ciudadDescripcion": "ASUNCION (DISTRITO)",
"email": "[email protected]",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"codigo": "CLI001"
},
"items": [
{
"codigo": "0000001",
"descripcion": "Producto Ejemplo",
"unidadMedida": 77,
"cantidad": 10,
"precioUnitario": 50000,
"iva": 10,
"ivaTipo": 1,
"ivaBase": 100
}
],
"condicion": {
"tipo": 2,
"credito": {
"tipo": 1,
"plazo": "30 días",
"cuotas": 1,
"infoCuotas": [
{
"moneda": "PYG",
"monedaDescripcion": "Guarani",
"monto": 500000,
"vencimiento": "2026-05-13"
}
]
}
},
"factura": {
"presencia": 1
}
}
]
Ejemplos prácticos por tipo de cliente y condición de pago
Los siguientes ejemplos reflejan los casos reales de uso. La diferencia clave entre ellos está en los campos contribuyente, tipoContribuyente, tipoOperacion y la sección condicion.
contribuyente: false · tipoOperacion: 2 (B2C) · tipoContribuyente: 0 · identificar con documentoTipo: 1 (Cédula) y documentoNumeroJSON — No Contribuyente (Solo Cédula)
[{
"tipoDocumento": 1,
"establecimiento": 1,
"punto": "1",
"numero": 12,
"descripcion": "Aparece en el documento",
"observacion": "...",
"fecha": "2026-04-22T10:20:49",
"tipoEmision": 1,
"tipoTransaccion": 3,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": false,
"ruc": "2830501",
"razonSocial": "MARCIAL ESTECHE",
"nombreFantasia": "MARCIAL ESTECHE",
"tipoOperacion": 2,
"direccion": "Itapua, Encarnacion, 14 de mayo 1500",
"numeroCasa": "",
"departamento": 0,
"departamentoDescripcion": "",
"distrito": 0,
"distritoDescripcion": "",
"ciudad": 0,
"ciudadDescripcion": "",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"tipoContribuyente": 0,
"documentoTipo": 1,
"documentoNumero": "2830501",
"telefono": "0994850808",
"celular": "0994850808",
"email": "[email protected]",
"codigo": "0001"
},
"usuario": {
"documentoTipo": 1,
"documentoNumero": "",
"nombre": "",
"cargo": "Vendedor"
},
"factura": { "presencia": 1 },
"condicion": {
"tipo": 1,
"entregas": [{
"tipo": 1,
"monto": "22400",
"moneda": "PYG",
"monedaDescripcion": "Guarani",
"cambio": 0
}]
},
"items": [{
"codigo": "0000001",
"descripcion": "Martillo",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 11200.00,
"ivaTipo": 1,
"ivaBase": 100,
"iva": 10
}]
}]contribuyente: true · tipoOperacion: 1 (B2B) · tipoContribuyente: 1 (Unipersonal) · documentoTipo: 0 (RUC) · condicion.tipo: 1 (Contado)JSON — Contribuyente Unipersonal · Contado
[{
"tipoDocumento": 1,
"establecimiento": 1,
"punto": "1",
"numero": 12,
"descripcion": "Aparece en el documento",
"observacion": "...",
"fecha": "2026-04-22T10:21:19",
"tipoEmision": 1,
"tipoTransaccion": 3,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "2830501-9",
"razonSocial": "MARCIAL ESTECHE",
"nombreFantasia": "MARCIAL ESTECHE",
"tipoOperacion": 1,
"direccion": "Itapua, Encarnacion, 14 de mayo 1500",
"numeroCasa": "",
"departamento": 0,
"departamentoDescripcion": "",
"distrito": 0,
"distritoDescripcion": "",
"ciudad": 0,
"ciudadDescripcion": "",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"tipoContribuyente": 1,
"documentoTipo": 0,
"documentoNumero": "2830501-9",
"telefono": "0994850808",
"celular": "0994850808",
"email": "[email protected]",
"codigo": "0001"
},
"usuario": {
"documentoTipo": 1,
"documentoNumero": "",
"nombre": "",
"cargo": "Vendedor"
},
"factura": { "presencia": 1 },
"condicion": {
"tipo": 1,
"entregas": [{
"tipo": 1,
"monto": "22400",
"moneda": "PYG",
"monedaDescripcion": "Guarani",
"cambio": 0
}]
},
"items": [{
"codigo": "0000001",
"descripcion": "Martillo",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 11200.00,
"ivaTipo": 1,
"ivaBase": 100,
"iva": 10
}]
}]contribuyente: true · tipoContribuyente: 1 (Unipersonal) · condicion.tipo: 2 (Crédito) · el nodo credito reemplaza a entregasJSON — Contribuyente Unipersonal · Crédito
[{
"tipoDocumento": 1,
"establecimiento": 1,
"punto": "1",
"numero": 12,
"descripcion": "Aparece en el documento",
"observacion": "...",
"fecha": "2026-04-22T10:21:39",
"tipoEmision": 1,
"tipoTransaccion": 3,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "2830501-9",
"razonSocial": "MARCIAL ESTECHE",
"nombreFantasia": "MARCIAL ESTECHE",
"tipoOperacion": 1,
"direccion": "Itapua, Encarnacion, 14 de mayo 1500",
"numeroCasa": "",
"departamento": 0,
"departamentoDescripcion": "",
"distrito": 0,
"distritoDescripcion": "",
"ciudad": 0,
"ciudadDescripcion": "",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"tipoContribuyente": 1,
"documentoTipo": 0,
"documentoNumero": "2830501-9",
"telefono": "0994850808",
"celular": "0994850808",
"email": "[email protected]",
"codigo": "0001"
},
"usuario": {
"documentoTipo": 1,
"documentoNumero": "",
"nombre": "",
"cargo": "Vendedor"
},
"factura": { "presencia": 1 },
"condicion": {
"tipo": 2,
"credito": {
"tipo": 1,
"plazo": "30"
}
},
"items": [{
"codigo": "0000001",
"descripcion": "Martillo",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 11200.00,
"ivaTipo": 1,
"ivaBase": 100,
"iva": 10
}]
}]contribuyente: true · tipoOperacion: 1 (B2B) · tipoContribuyente: 2 (Persona Jurídica) · condicion.tipo: 1 (Contado)JSON — Persona Jurídica · Contado
[{
"tipoDocumento": 1,
"establecimiento": 1,
"punto": "1",
"numero": 12,
"descripcion": "Aparece en el documento",
"observacion": "...",
"fecha": "2026-04-22T10:22:19",
"tipoEmision": 1,
"tipoTransaccion": 3,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "2830501-9",
"razonSocial": "MARCIAL ESTECHE S.A.",
"nombreFantasia": "MARCIAL ESTECHE S.A.",
"tipoOperacion": 1,
"direccion": "Itapua, Encarnacion, 14 de mayo 1500",
"numeroCasa": "",
"departamento": 0,
"departamentoDescripcion": "",
"distrito": 0,
"distritoDescripcion": "",
"ciudad": 0,
"ciudadDescripcion": "",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"tipoContribuyente": 2,
"documentoTipo": 0,
"documentoNumero": "2830501-9",
"telefono": "0994850808",
"celular": "0994850808",
"email": "[email protected]",
"codigo": "0001"
},
"usuario": {
"documentoTipo": 1,
"documentoNumero": "",
"nombre": "",
"cargo": "Vendedor"
},
"factura": { "presencia": 1 },
"condicion": {
"tipo": 1,
"entregas": [{
"tipo": 1,
"monto": "22400",
"moneda": "PYG",
"monedaDescripcion": "Guarani",
"cambio": 0
}]
},
"items": [{
"codigo": "0000001",
"descripcion": "Martillo",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 11200.00,
"ivaTipo": 1,
"ivaBase": 100,
"iva": 10
}]
}]contribuyente: true · tipoContribuyente: 2 (Persona Jurídica) · condicion.tipo: 2 (Crédito)JSON — Persona Jurídica · Crédito
[{
"tipoDocumento": 1,
"establecimiento": 1,
"punto": "1",
"numero": 12,
"descripcion": "Aparece en el documento",
"observacion": "...",
"fecha": "2026-04-22T10:22:38",
"tipoEmision": 1,
"tipoTransaccion": 3,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "2830501-9",
"razonSocial": "MARCIAL ESTECHE S.A.",
"nombreFantasia": "MARCIAL ESTECHE S.A.",
"tipoOperacion": 1,
"direccion": "Itapua, Encarnacion, 14 de mayo 1500",
"numeroCasa": "",
"departamento": 0,
"departamentoDescripcion": "",
"distrito": 0,
"distritoDescripcion": "",
"ciudad": 0,
"ciudadDescripcion": "",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"tipoContribuyente": 2,
"documentoTipo": 0,
"documentoNumero": "2830501-9",
"telefono": "0994850808",
"celular": "0994850808",
"email": "[email protected]",
"codigo": "0001"
},
"usuario": {
"documentoTipo": 1,
"documentoNumero": "",
"nombre": "",
"cargo": "Vendedor"
},
"factura": { "presencia": 1 },
"condicion": {
"tipo": 2,
"credito": {
"tipo": 1,
"plazo": "30"
}
},
"items": [{
"codigo": "0000001",
"descripcion": "Martillo",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 11200.00,
"ivaTipo": 1,
"ivaBase": 100,
"iva": 10
}]
}]contribuyente: true · tipoOperacion: 3 (B2G — Entidad de Gobierno) · tipoContribuyente: 2 · condicion.tipo: 1 (Contado)JSON — Entidad de Gobierno · Contado
[{
"tipoDocumento": 1,
"establecimiento": 1,
"punto": "1",
"numero": 12,
"descripcion": "Aparece en el documento",
"observacion": "...",
"fecha": "2026-04-22T10:23:01",
"tipoEmision": 1,
"tipoTransaccion": 3,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "2830501-9",
"razonSocial": "MINISTERIO DE HACIENDA",
"nombreFantasia": "MINISTERIO DE HACIENDA",
"tipoOperacion": 3,
"direccion": "Itapua, Encarnacion, 14 de mayo 1500",
"numeroCasa": "",
"departamento": 0,
"departamentoDescripcion": "",
"distrito": 0,
"distritoDescripcion": "",
"ciudad": 0,
"ciudadDescripcion": "",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"tipoContribuyente": 2,
"documentoTipo": 0,
"documentoNumero": "2830501-9",
"telefono": "0994850808",
"celular": "0994850808",
"email": "[email protected]",
"codigo": "0001"
},
"usuario": {
"documentoTipo": 1,
"documentoNumero": "",
"nombre": "",
"cargo": "Vendedor"
},
"factura": { "presencia": 1 },
"condicion": {
"tipo": 1,
"entregas": [{
"tipo": 1,
"monto": "22400",
"moneda": "PYG",
"monedaDescripcion": "Guarani",
"cambio": 0
}]
},
"items": [{
"codigo": "0000001",
"descripcion": "Martillo",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 11200.00,
"ivaTipo": 1,
"ivaBase": 100,
"iva": 10
}]
}]contribuyente: true · tipoOperacion: 3 (B2G) · tipoContribuyente: 2 · condicion.tipo: 2 (Crédito)JSON — Entidad de Gobierno · Crédito
[{
"tipoDocumento": 1,
"establecimiento": 1,
"punto": "1",
"numero": 12,
"descripcion": "Aparece en el documento",
"observacion": "...",
"fecha": "2026-04-22T10:23:22",
"tipoEmision": 1,
"tipoTransaccion": 3,
"tipoImpuesto": 1,
"moneda": "PYG",
"cliente": {
"contribuyente": true,
"ruc": "2830501-9",
"razonSocial": "MINISTERIO DE HACIENDA",
"nombreFantasia": "MINISTERIO DE HACIENDA",
"tipoOperacion": 3,
"direccion": "Itapua, Encarnacion, 14 de mayo 1500",
"numeroCasa": "",
"departamento": 0,
"departamentoDescripcion": "",
"distrito": 0,
"distritoDescripcion": "",
"ciudad": 0,
"ciudadDescripcion": "",
"pais": "PRY",
"paisDescripcion": "Paraguay",
"tipoContribuyente": 2,
"documentoTipo": 0,
"documentoNumero": "2830501-9",
"telefono": "0994850808",
"celular": "0994850808",
"email": "[email protected]",
"codigo": "0001"
},
"usuario": {
"documentoTipo": 1,
"documentoNumero": "",
"nombre": "",
"cargo": "Vendedor"
},
"factura": { "presencia": 1 },
"condicion": {
"tipo": 2,
"credito": {
"tipo": 1,
"plazo": "30"
}
},
"items": [{
"codigo": "0000001",
"descripcion": "Martillo",
"unidadMedida": 77,
"cantidad": 2,
"precioUnitario": 11200.00,
"ivaTipo": 1,
"ivaBase": 100,
"iva": 10
}]
}]3. Referencia de Campos
Objeto cliente
| Campo | Tipo | Obligatorio | Descripción | Valores |
|---|---|---|---|---|
contribuyente |
boolean | ✅ | ¿Es contribuyente? | true / false |
ruc |
string | Solo contribuyente | RUC con dígito verificador | "80000004-2" |
tipoContribuyente |
integer | Solo contribuyente | Tipo de contribuyente | 1=Persona Física, 2=Persona Jurídica |
tipoOperacion |
integer | ✅ | Tipo de operación | 1=B2B, 2=B2C, 3=B2G, 4=B2F |
documentoTipo |
integer | Solo no contribuyente | Tipo de documento de identidad | Ver tabla abajo |
documentoNumero |
string | Solo no contribuyente | Número de documento | "3456789" |
razonSocial |
string | ✅ | Nombre o razón social del cliente | |
direccion |
string | ✅ | Dirección del cliente | |
numeroCasa |
string | Recomendado | Número de casa | "1234", "0" si no aplica |
departamento |
integer | Recomendado | Código de departamento SIFEN | Ver tabla de departamentos |
departamentoDescripcion |
string | Recomendado | Nombre del departamento | "ITAPUA", "CENTRAL" |
distrito |
integer | Recomendado | Código de distrito SIFEN | |
distritoDescripcion |
string | Recomendado | Nombre del distrito | |
ciudad |
integer | Recomendado | Código de ciudad SIFEN | |
ciudadDescripcion |
string | Recomendado | Nombre de la ciudad | |
telefono |
string | Opcional | Teléfono | |
email |
string | Recomendado | Email del receptor | |
pais |
string | Opcional | Código ISO país | "PRY" (defecto) |
paisDescripcion |
string | Opcional | Nombre del país | "Paraguay" (defecto) |
codigo |
string | Opcional | Código interno de cliente (VB6) | "00180" |
Tipos de Documento de Identidad (documentoTipo)
| Código | Descripción |
|---|---|
1 | Cédula paraguaya |
2 | Pasaporte |
3 | Cédula extranjera |
4 | Carnet de residencia |
5 | Innominado (ventas menores) |
9 | Otro |
Reglas Importantes del Cliente
Contribuyente (
No contribuyente (
Si se omite
contribuyente: true): Requiere ruc, tipoContribuyente y tipoOperacion: 1 (B2B).No contribuyente (
contribuyente: false): Requiere documentoTipo, documentoNumero y tipoOperacion: 2 (B2C). No enviar ruc.Si se omite
departamento/distrito/ciudad, el servidor intenta autocompletar a partir de direccion.
Objeto items[]
| Campo | Tipo | Obligatorio | Descripción | Valores |
|---|---|---|---|---|
codigo |
string | ✅ | Código interno del producto | "0000001" |
descripcion |
string | ✅ | Descripción del producto/servicio | |
unidadMedida |
integer | Recomendado | Código unidad de medida SIFEN | 77=Unidad (defecto) |
cantidad |
number | ✅ | Cantidad vendida | |
precioUnitario |
number | ✅ | Precio unitario con IVA incluido | |
iva |
number | ✅ | Tasa de IVA | 0, 5 o 10 |
ivaTipo |
integer | ✅ | Tipo de afectación IVA | 1=Gravado, 2=Exonerado, 3=Exento |
ivaBase |
number | Recomendado | Proporción gravada (%) | 100 (defecto) |
Reglas del IVA
| Escenario | iva |
ivaTipo |
ivaBase |
Resultado SIFEN |
|---|---|---|---|---|
| Gravado 10% | 10 |
1 |
100 |
IVA 10% sobre el total |
| Gravado 5% | 5 |
1 |
100 |
IVA 5% sobre el total |
| Exento | 0 |
1 |
100 |
Se convierte a Exento (afecIVA=3) |
| Exonerado | 0 |
2 |
0 |
Exonerado - Art. 100 Ley 6380/2019 |
| Parcialmente gravado | 10 |
1 |
60 |
60% gravado al 10%, 40% exento |
El
precioUnitario siempre es con IVA incluido. El servidor calcula automáticamente la base gravada y la liquidación de IVA según las fórmulas NT13 del SIFEN.Objeto condicion
| Campo | Tipo | Obligatorio | Descripción | Valores |
|---|---|---|---|---|
tipo |
integer | ✅ | Tipo de condición | 1=Contado, 2=Crédito |
entregas |
array | Solo contado | Detalle de pagos | Ver abajo |
credito |
object | Solo crédito | Datos del crédito | Ver abajo |
Entregas (pagos en contado)
| Campo | Tipo | Obligatorio | Descripción | Valores |
|---|---|---|---|---|
tipo |
integer | ✅ | Forma de pago | 1=Efectivo, 2=Cheque, 3=Tarjeta crédito, 4=Tarjeta débito |
monto |
number | ✅ | Monto del pago | Si es 0, se completa automáticamente con el total |
moneda |
string | Opcional | Moneda | "PYG" (defecto) |
monedaDescripcion |
string | Opcional | Descripción moneda | "Guarani" (defecto) |
Crédito
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
tipo |
integer | ✅ | 1=Plazo, 2=Cuota |
plazo |
string | ✅ | Descripción del plazo ("30 días") |
cuotas |
integer | Si tipo=2 | Cantidad de cuotas |
infoCuotas |
array | Si tipo=2 | Detalle de cada cuota |
Objeto factura
| Campo | Tipo | Obligatorio | Descripción | Valores |
|---|---|---|---|---|
presencia |
integer | Opcional | Indicador de presencia | 1=Presencial (defecto), 2=No presencial, 3=Internet, 9=No corresponde |
4. Ejemplo de Envío desde VB6
Visual Basic 6
' ============================================
' Ejemplo de envío de Factura Electrónica
' desde Visual Basic 6 (VB6)
' ============================================
Private Sub EnviarFactura()
Dim http As New MSXML2.XMLHTTP60
Dim url As String
Dim postData As String
Dim jsonData As String
url = "https://tu-dominio.com/fact_elect/index.php"
' Construir el JSON con los datos de la factura
jsonData = "[{" & _
"""tipoDocumento"":1," & _
"""tipoTransaccion"":1," & _
"""tipoImpuesto"":1," & _
"""moneda"":""PYG""," & _
"""cliente"":{" & _
"""contribuyente"":true," & _
"""ruc"":""80000004-2""," & _
"""razonSocial"":""EMPRESA IMPORTADORA S.A.""," & _
"""tipoContribuyente"":2," & _
"""tipoOperacion"":1," & _
"""direccion"":""AV. MARISCAL LOPEZ 1234""," & _
"""numeroCasa"":""1234""," & _
"""departamento"":11," & _
"""departamentoDescripcion"":""CENTRAL""," & _
"""distrito"":1," & _
"""distritoDescripcion"":""ASUNCION (DISTRITO)""," & _
"""ciudad"":1," & _
"""ciudadDescripcion"":""ASUNCION (DISTRITO)""," & _
"""email"":""[email protected]""," & _
"""pais"":""PRY""," & _
"""paisDescripcion"":""Paraguay""," & _
"""codigo"":""CLI001""" & _
"}," & _
"""items"":[" & _
"{""codigo"":""0000001""," & _
"""descripcion"":""Producto Ejemplo""," & _
"""unidadMedida"":77," & _
"""cantidad"":2," & _
"""precioUnitario"":15000," & _
"""iva"":10," & _
"""ivaTipo"":1," & _
"""ivaBase"":100}" & _
"]," & _
"""condicion"":{""tipo"":1,""entregas"":[{""tipo"":1,""monto"":30000,""moneda"":""PYG"",""monedaDescripcion"":""Guarani""}]}," & _
"""factura"":{""presencia"":1}" & _
"}]"
' Construir datos POST
postData = "apiKey=" & API_KEY & _
"&tenantId=" & TENANT_ID & _
"&tenantPunto=001-001" & _
"&cliente=" & UrlEncode("EMPRESA IMPORTADORA S.A.") & _
"&email=" & UrlEncode("[email protected]") & _
"&data=" & UrlEncode(jsonData)
' Enviar POST
http.Open "POST", url, False
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.send postData
' Procesar respuesta
Dim respuesta As String
respuesta = http.responseText
' Parsear respuesta
' Formato: "Cliente: ...\nEstado: ok\nMensaje: ...\nNUM: 59-CDC: 0104..."
If InStr(respuesta, "Estado: ok") > 0 Then
MsgBox "Factura enviada correctamente"
' Extraer CDC para consultas posteriores
Dim cdc As String
cdc = Mid(respuesta, InStr(respuesta, "CDC: ") + 5)
Else
MsgBox "Error: " & respuesta
End If
End Sub
5. Cancelación de Factura Electrónica
Permite cancelar una factura previamente emitida enviando el evento de cancelación a SIFEN.
Parámetros POST
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
apiKey |
string | ✅ | Clave API de la empresa |
tenantId |
string | ✅ | Identificador del tenant (ej: puchi) |
cdc |
string | ✅ | CDC de 44 dígitos de la factura a cancelar |
motivo |
string | ✅ | Texto libre con el motivo de la cancelación |
Ejemplo PHP (cliente que llama al servidor)
PHP
<?php
$url = 'https://tu-dominio.com/fact_elect/cancelar_api.php';
$apiKey = 'MiClaveSecreta';
$tenantId = 'puchi';
$cdc = '01800292774001001000005422026031919322167553';
$motivo = 'Error en el monto facturado';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query([
'apiKey' => $apiKey,
'tenantId' => $tenantId,
'cdc' => $cdc,
'motivo' => $motivo,
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$respuesta = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if ($error) {
echo "Error cURL: $error";
} else {
$json = json_decode($respuesta, true);
// $json['status'] => 'ok' o 'error'
// $json['message'] => descripción
// $json['protocolo'] => número de protocolo SIFEN (si ok)
print_r($json);
}
Respuesta JSON
Respuesta exitosa
{
"status": "ok",
"message": "Cancelación procesada exitosamente",
"protocolo": "123456789"
}
Respuesta con error
{
"status": "error",
"message": "CDC inválido: debe contener exactamente 44 dígitos numéricos."
}
Solo se pueden cancelar facturas en estado Aprobado. El motivo de cancelación debe tener al menos 5 caracteres.
6. Ejemplo con cURL
bash
curl -X POST https://tu-dominio.com/fact_elect/index.php \
-d "apiKey=TU_API_KEY" \
-d "tenantId=puchi" \
-d "tenantPunto=001-001" \
-d "cliente=EMPRESA IMPORTADORA S.A." \
-d "[email protected]" \
--data-urlencode 'data=[{"tipoDocumento":1,...}]'
7. Departamentos de Paraguay
| Código | Departamento |
|---|---|
1 | CONCEPCION |
2 | SAN PEDRO |
3 | CORDILLERA |
4 | GUAIRA |
5 | CAAGUAZU |
6 | CAAZAPA |
7 | ITAPUA |
8 | MISIONES |
9 | PARAGUARI |
10 | ALTO PARANA |
11 | CENTRAL |
12 | ÑEEMBUCU |
13 | AMAMBAY |
14 | CANINDEYU |
15 | PRESIDENTE HAYES |
16 | BOQUERON |
17 | ALTO PARAGUAY |
18 | CAPITAL |
Si no se envían departamento/distrito/ciudad, el servidor intentará autocompletarlos a partir del campo
direccion.8. Unidades de Medida Comunes
| Código | Descripción |
|---|---|
77 | Unidad (UNI) |
83 | Kilogramo (KG) |
79 | Litro (LT) |
80 | Metro (MT) |
81 | Metro cuadrado (M2) |
82 | Metro cúbico (M3) |
85 | Pieza |
86 | Docena |
9. Tipos de Transacción
| Código | Descripción |
|---|---|
1 | Venta de mercadería |
2 | Prestación de servicios |
3 | Mixto (mercadería y servicios) |
4 | Venta de activo fijo |
5 | Venta de divisas |
6 | Compra de divisas |
7 | Promoción o entrega de muestras |
8 | Donación |
9 | Anticipo |
10 | Compra de productos |
11 | Compra de servicios |
13 | Otro |
10. Notas Importantes
- El número de factura se asigna automáticamente por el servidor. No se envía en el JSON.
- El precio unitario es siempre con IVA incluido. El servidor calcula la base gravada y el IVA.
- Si
iva=0conivaTipo=1, el servidor asume automáticamente que es Exento (afecIVA=3). - Para no contribuyentes, no enviar campo
ruc. UsardocumentoTipo+documentoNumero. - El campo
datadebe ir URL-encoded ya que se envía como form-data. - La dirección es autoconciliada: si no se envían códigos de departamento/distrito/ciudad, el servidor busca coincidencias automáticas.
- Si el monto de la entrega es
0en condición contado, se autocompletará con el total de la factura. - Los reintentos por duplicado son automáticos: si SIFEN rechaza por número duplicado, el servidor incrementa y reintenta (hasta 3 veces).
11. Configuración Previa (Admin)
Antes de usar la API, la empresa debe estar configurada en el panel de administración (/admin/):
- Empresa registrada con RUC, certificado digital (.p12) y CSC.
- Punto de expedición creado (ej:
001-001). - API Key generada para la empresa.
- Numeración inicializada en la tabla
numero_fact.