Para Desarrolladores

Conecta a SUNAT en Minutos

La API REST más simple y potente para tu sistema de ventas, ERP o aplicativo móvil.
Olvídate de XMLs, firmas digitales y certificados. Tú envías un JSON, nosotros hacemos el resto.

1. Emitir Factura o Boleta (POST /api/factura o /api/boleta)
<?php
$url = 'https://api.igfact.com/api/factura'; // o api/boleta
$payload = json_encode([
    'tipo'    => 'factura', // factura o boleta
    'venta'   => ['tipo_documento_codigo' => '01', 'serie' => 'F001', 'numero' => '133'],
    'cliente' => ['numero_documento' => '20100000001', 'codigo_tipo_entidad' => '6', 'razon_social_nombres' => 'EMPRESA SAC'],
    'items'   => [['producto' => 'Producto 1', 'cantidad' => 1, 'precio' => 118.00, 'tipo_igv_codigo' => 10]]
]);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'X-API-KEY: {{ $cliente->api_key }}',
    'Content-Type: application/json'
]);
echo curl_exec($ch);
curl_close($ch);
2. Emitir Nota de Crédito (POST /api/nota-credito)
<?php
$payload = json_encode([
    'venta'   => ['tipo_documento_codigo' => '07', 'serie' => 'FC01', 'numero' => '1', 'cod_motivo' => '01', 'des_motivo' => 'Anulacion de la operacion'],
    'cliente' => ['numero_documento' => '20100000001', 'codigo_tipo_entidad' => '6', 'razon_social_nombres' => 'EMPRESA SAC'],
    'documento_referencia' => ['tipo_documento_codigo' => '01', 'serie' => 'F001', 'numero' => '133'],
    'items'   => [['producto' => 'Producto 1', 'cantidad' => 1, 'precio' => 118.00, 'tipo_igv_codigo' => 10]]
]);

$ch = curl_init('https://api.igfact.com/api/nota-credito');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: {{ $cliente->api_key }}', 'Content-Type: application/json']);
echo curl_exec($ch);
3. Emitir Guía de Remisión (POST /api/guia-remision)
<?php
    $url = 'https://api.igfact.com/api/guia-remision';
    $payload = json_encode([
        'guia' => [
            'serie' => 'T001',
            'numero' => '123',
            'fecha_emision' => date('Y-m-d'),
            'hora_emision' => date('H:i:s'),
            'fecha_traslado' => date('Y-m-d'),
            'guia_motivo_traslado' => '01',
            'peso_total' => 10.5,
            'partida_direccion' => 'Av. Los Ficus 123',
            'partida_ubigeo' => '150101',
            'llegada_direccion' => 'Av. Las Palmas 456',
            'llegada_ubigeo' => '150101',
            'destinatario_numero_documento' => '20100000001',
            'destinatario_nombres_razon' => 'Empresa Cliente SAC',
            'vehiculo_placa' => 'ABC-123',
            'conductor_numero_documento' => '40000000',
            'conductor_nombres' => 'Juan',
            'conductor_apellidos' => 'Perez'
        ],
        'items' => [
            ['cantidad' => 1, 'codigo_unidad' => 'NIU', 'descripcion' => 'Producto Transportado 1']
        ]
    ]);
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'X-API-KEY: tu_api_key_aqui',
        'Content-Type: application/json'
    ]);
    
    echo curl_exec($ch);
    curl_close($ch);
4. Respuesta JSON y Descarga de Archivos (PDF, XML, CDR)
Al emitir cualquier comprobante, la API responde con un JSON que incluye los enlaces directos (pdf_url y xml_url) listos para descargar. El archivo CDR (Constancia de Recepción) se forma agregando el prefijo "R-" al nombre del archivo zip.
{
  "success": true,
  "numero_comprobante": "F001-00000133",
  "nombre_archivo": "{{ $cliente->ruc }}-01-F001-00000133",
  "codigo_sunat": "0",
  "mensaje_sunat": "La Factura numero F001-00000133, ha sido aceptada",
  "estado": "ACEPTADO",
  "xml_url": "https://api.igfact.com/storage/...",
  "pdf_url": "https://api.igfact.com/storage/..."
}
📂 Para descargar el CDR (solo disponible si el estado es ACEPTADO):
Debes concatenar la ruta de CDR + R- + nombre_archivo + .zip

https://api.igfact.com/storage/...{{ $cliente->ruc }}-01-F001-00000133.zip