Sifen Innoven - API SIFEN

Web service para emitir facturas o notas de crédito desde otros sistemas.

Ingresar al administrador /ws-enviar /ws-consultar

Autenticación obligatoria

Ambos endpoints requieren el Token API de la empresa. El Token servidor se usa internamente para hablar con el servidor SIFEN.

Authorization: Bearer TU_TOKEN_API

También se acepta:

X-SIFEN-TOKEN: TU_TOKEN_API
Si tenés varias empresas con el mismo token, enviá id_empresa en el JSON para indicar cuál debe emitir.

Flujo de /ws-enviar

  1. Recibe JSON con cliente, tipo de documento e ítems.
  2. Envía el documento a servidor SIFEN con documents()->create().
  3. Guarda document_id, CDC y estado.
  4. Crea lote con batches()->create().
  5. Devuelve batch_id. Luego podés enviar a SIFEN desde el panel o con enviar_sifen: true.

Endpoint: /ws-enviar

MétodoPOST
Content-Typeapplication/json
Tipos aceptadosfactura, nota_credito
URL enviarhttps://sifen.innoven.com.py/ws-enviar
URL consultarhttps://sifen.innoven.com.py/ws-consultar

JSON para factura

{
  "id_empresa": 1,
  "tipo_documento": "factura",
  "cliente": {
    "taxpayer_status": "TAXPAYER",
    "taxpayer_type": "INDIVIDUAL",
    "ruc": "4272381",
    "razon_social": "Oscar Morinigo",
    "direccion": "Asunción",
    "country_code": "PRY",
    "departament_id": 1,
    "district_id": 1,
    "city_id": 1
  },
  "items": [
    {
      "codigo": "1",
      "descripcion": "Producto de prueba",
      "cantidad": 1,
      "precio": 1000,
      "iva": 10,
      "unidad": "UNIT"
    }
  ],
  "pagos": [
    {
      "metodo_pago": "CASH",
      "monto": 1000,
      "moneda": "PYG"
    }
  ],
  "operationCondition": "CASH",
  "enviar_sifen": false
}

JSON para nota de crédito

{
  "id_empresa": 1,
  "tipo_documento": "nota_credito",
  "motivo_nota": "RETURN",
  "cdc_asociado": "0180CDC_DE_LA_FACTURA_ORIGINAL...",
  "cliente": {
    "taxpayer_status": "TAXPAYER",
    "taxpayer_type": "INDIVIDUAL",
    "ruc": "4272381",
    "razon_social": "Oscar Morinigo",
    "direccion": "Asunción",
    "country_code": "PRY",
    "departament_id": 1,
    "district_id": 1,
    "city_id": 1
  },
  "items": [
    {
      "codigo": "1",
      "descripcion": "Devolución producto",
      "cantidad": 1,
      "precio": 1000,
      "iva": 10,
      "unidad": "UNIT"
    }
  ],
  "pagos": [
    {
      "metodo_pago": "CASH",
      "monto": 1000,
      "moneda": "PYG"
    }
  ],
  "enviar_sifen": false
}

Respuesta correcta

{
  "status": "ok",
  "id_documento": 1,
  "document_id": "019f0548-cb08-705d-844d-5d742c449bcd",
  "cdc": "0180...",
  "estado_documento": "XML_GENERATED",
  "batch_id": "019f0556-dbb9-70da-9172-f07d5012d3f2",
  "estado_lote": "DRAFT"
}

Endpoint: /ws-consultar

También requiere token. Consultá por id_documento, document_id o batch_id. Si consultás un lote, también devuelve los documentos del lote con su estado, mensaje de error y resumen OK/Error.

{
  "id_empresa": 1,
  "id_documento": 1
}
{
  "id_empresa": 1,
  "document_id": "019f0548-cb08-705d-844d-5d742c449bcd"
}
{
  "id_empresa": 1,
  "batch_id": "019f0556-dbb9-70da-9172-f07d5012d3f2"
}

Ejemplo PHP: enviar factura

<?php
$url = "https://sifen.innoven.com.py/ws-enviar";
$token = "TU_TOKEN_API";

$data = [
    "id_empresa" => 1,
    "tipo_documento" => "factura",
    "cliente" => [
        "taxpayer_status" => "TAXPAYER",
        "taxpayer_type" => "INDIVIDUAL",
        "ruc" => "4272381",
        "razon_social" => "Oscar Morinigo",
        "direccion" => "Asunción",
        "country_code" => "PRY",
        "departament_id" => 1,
        "district_id" => 1,
        "city_id" => 1
    ],
    "items" => [[
        "codigo" => "1",
        "descripcion" => "Producto de prueba",
        "cantidad" => 1,
        "precio" => 1000,
        "iva" => 10,
        "unidad" => "UNIT"
    ]],
    "pagos" => [[
        "metodo_pago" => "CASH",
        "monto" => 1000,
        "moneda" => "PYG"
    ]],
    "enviar_sifen" => false
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "Authorization: Bearer " . $token
    ],
    CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE)
]);
$response = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

header("Content-Type: application/json; charset=utf-8");
echo $response;
?>

Ejemplo PHP: consultar

<?php
$url = "https://sifen.innoven.com.py/ws-consultar";
$token = "TU_TOKEN_API";

$data = [
    "id_empresa" => 1,
    "id_documento" => 1
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "Authorization: Bearer " . $token
    ],
    CURLOPT_POSTFIELDS => json_encode($data, JSON_UNESCAPED_UNICODE)
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>