PHPackages                             armandolazarte/afip-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. armandolazarte/afip-sdk

ActiveLibrary[API Development](/categories/api)

armandolazarte/afip-sdk
=======================

SDK moderno para servicios web de AFIP - Argentina

v1.2.0(8mo ago)00MITPHPPHP ^8.2

Since Sep 2Pushed 8mo agoCompare

[ Source](https://github.com/armandolazarte/afip-sdk)[ Packagist](https://packagist.org/packages/armandolazarte/afip-sdk)[ RSS](/packages/armandolazarte-afip-sdk/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (5)Versions (4)Used By (0)

SDK de AFIP para PHP 8.2+
=========================

[](#sdk-de-afip-para-php-82)

[![PHP Version](https://camo.githubusercontent.com/0f16581d1180dbfd4c0e13166ec1267d4ad2f2fab8281ea6d6b284cf5c65d921/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d626c75652e737667)](https://php.net)[![License](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE)

SDK moderno y completamente refactorizado para interactuar con los servicios web de AFIP (Argentina) usando PHP 8.2+.

🚀 Características
-----------------

[](#-características)

- ✅ **PHP 8.2+ con tipos estrictos**
- ✅ **Clases readonly e inmutables**
- ✅ **ComprobanteBuilder con API fluida**
- ✅ **AfipConfiguracionBuilder con API fluida**
- ✅ **Manejo robusto de excepciones**
- ✅ **Nombres en español** (métodos, variables, constantes)
- ✅ **PSR-4 autoloading**
- ✅ **Configuración por objetos**
- ✅ **Interfaces fluidas y fáciles de usar**

📦 Instalación
-------------

[](#-instalación)

```
composer require armandolazarte/afip-sdk
```

🏗️ Estructura del Proyecto
--------------------------

[](#️-estructura-del-proyecto)

```
src/
├── Afip.php                           # Clase principal
├── ServicioWebAfip.php                # Clase base para servicios
├── Configuracion/
│   └── AfipConfiguracion.php          # Configuración del SDK
├── Autenticacion/
│   └── TokenAutorizacion.php          # Manejo de tokens
├── Excepciones/
│   ├── AfipExcepcion.php              # Excepción base
│   ├── CertificadoExcepcion.php       # Errores de certificados
│   ├── ConfiguracionExcepcion.php     # Errores de configuración
│   ├── FirmaDigitalExcepcion.php      # Errores de firma digital
│   ├── NegocioExcepcion.php           # Errores de lógica AFIP
│   ├── ServicioExcepcion.php          # Errores de servicios
│   ├── SoapExcepcion.php              # Errores de comunicación SOAP
│   ├── TokenExcepcion.php             # Errores de autenticación
│   └── WsdlExcepcion.php              # Errores de WSDL
├── Recursos/                          # 📦 WSDL del SDK (automático)
│   ├── wsaa.wsdl
│   ├── wsfe.wsdl
│   └── ...otros wsdl
├── Servicios/
│   ├── FacturacionElectronica.php     # Facturación electrónica
│   ├── PadronAlcanceCinco.php         # Padrón alcance 5
│   ├── PadronAlcanceCuatro.php        # Padrón alcance 4
│   ├── PadronAlcanceDiez.php          # Padrón alcance 10
│   ├── PadronAlcanceTrece.php         # Padrón alcance 13
│   └── ComprobanteInscripcion.php     # Comprobante inscripción
├── DTO/                               # Data Transfer Objects
│   ├── Comprobante.php
│   └── RespuestaComprobante.php
├── Builders/                          # Pattern Builder para DTOs
│   ├── ComprobanteBuilder.php         # Builder fluido para comprobantes
│   └── AfipConfiguracionBuilder.php   # Builder fluido para configuraciones
├── Constantes/
│   └── AfipConstantes.php             # Todas las constantes AFIP
└── Utilidades/
    ├── AfipUtilidad.php             # Utilidades generales
    └── TokensUtilidad.php             # Utilidades para tokens

```

🎯 Uso Básico
------------

[](#-uso-básico)

### Configuración

[](#configuración)

```
use AfipSDK\Afip;
use AfipSDK\Configuracion\AfipConfiguracion;
use AfipSDK\Builders\AfipConfiguracionBuilder;

// NUEVA API Fluida con Builder (Recomendada) - Ambiente de testing
$configuracion = AfipConfiguracionBuilder::testing()
    ->conCuit(20123456789)
    ->conCertificado('certificado.pem')
    ->conClavePrivada('clave_privada.pem')
    ->conFraseClave('mi_frase_secreta')
    ->conCarpetaCertificados(__DIR__ . '/certificados/')
    ->conCarpetaTokens(__DIR__ . '/tokens/')
    ->construir();

// NUEVA API Fluida con Builder - Ambiente de producción
$configuracion = AfipConfiguracionBuilder::produccion()
    ->conCuit(20123456789)
    ->conCertificado('cert_prod.pem')
    ->conClavePrivada('key_prod.pem')
    ->conFraseClave('frase_super_secreta')
    ->sinExcepciones() // Método conveniente
    ->construir();

// API Tradicional AfipConfiguracion (también soportada)
$configuracion = AfipConfiguracion::testing()
    ->conCuit(20123456789)
    ->conCertificado('certificado.pem')
    ->conClavePrivada('clave_privada.pem')
    ->conFraseClave('mi_frase_secreta');

// Constructor directo (también soportado)
$configuracion = AfipConfiguracion::testing(20123456789, [
    'certificado' => 'certificado.pem',
    'clavePrivada' => 'clave_privada.pem',
    'fraseClave' => 'mi_frase_secreta',
    'carpetaTokens' => __DIR__ . '/tokens/'
]);

$afip = new Afip($configuracion);
```

🏗️ ComprobanteBuilder - API Fluida
----------------------------------

[](#️-comprobantebuilder---api-fluida)

El SDK incluye un **ComprobanteBuilder** que permite crear comprobantes de forma fluida y con validaciones automáticas.

### Características del Builder

[](#características-del-builder)

- ✅ **API fluida fácil de leer**
- ✅ **Cálculos automáticos de totales**
- ✅ **Validaciones en tiempo de construcción**
- ✅ **Mapeo automático de códigos AFIP**
- ✅ **Soporte para todos los tipos de comprobante**

### Uso Básico del Builder

[](#uso-básico-del-builder)

```
use AfipSDK\Builders\ComprobanteBuilder;
use AfipSDK\Constantes\AfipConstantes;

// Factura C simple
$factura = ComprobanteBuilder::factura('C', 1, AfipConstantes::TIPOS_DOCUMENTO['DNI'], 12345678)
    ->conImporteNeto(1000.00)
    ->construir();

// Factura A con IVA múltiple
$facturaCompleja = ComprobanteBuilder::factura('A', 1, AfipConstantes::TIPOS_DOCUMENTO['CUIT'], 30202020204)
    ->conImporteNeto(20000.00)
    ->conImporteExento(1000.00)
    ->agregarIva(21.0, 15000.00)    // IVA 21% sobre $15000
    ->agregarIva(10.5, 5000.00)     // IVA 10.5% sobre $5000
    ->agregarTributo(2, 'Ingresos Brutos', 20000.00, 3.0)
    ->conMoneda('USD', 350.00)
    ->configurarComoServicio('20250101', '20250131', '20250228')
    ->construir();

// Crear en AFIP
$respuesta = $facturacion->crearSiguienteComprobante($facturaCompleja->paraAfip());
```

### Métodos Avanzados del Builder

[](#métodos-avanzados-del-builder)

#### Descuentos y Recargos

[](#descuentos-y-recargos)

```
$facturaConDescuento = ComprobanteBuilder::factura('A', 1, 80, 30202020204)
    ->conImporteNeto(10000.00)
    ->agregarIva(21.0, 10000.00)
    ->conDescuento(5.0, 10000.00)    // 5% descuento = $500
    ->construir();

$facturaConRecargo = ComprobanteBuilder::factura('A', 1, 80, 30202020204)
    ->conImporteNeto(8000.00)
    ->agregarIva(21.0, 8000.00)
    ->conRecargo(3.0, 8000.00)       // 3% recargo financiero = $240
    ->construir();
```

#### Percepciones e Impuestos

[](#percepciones-e-impuestos)

```
$facturaConPercepciones = ComprobanteBuilder::factura('A', 1, 80, 30202020204)
    ->conImporteNeto(15000.00)
    ->agregarIva(21.0, 15000.00)
    ->agregarTributo(2, 'Ingresos Brutos', 15000.00, 3.0)
    ->agregarPercepcion(1, 'Percepción IVA', 15000.00, 2.0)
    ->agregarPercepcion(2, 'Percepción Ganancias', 15000.00, 1.5)
    ->construir();
```

#### Facturas de Crédito Electrónica (FCE)

[](#facturas-de-crédito-electrónica-fce)

```
$facturaCredito = ComprobanteBuilder::factura('A', 1, 80, 30202020204)
    ->conImporteNeto(20000.00)
    ->agregarIva(21.0, 20000.00)
    ->comoFacturaCredito('0123456789012345678901', 'EMPRESA.ALIAS')
    ->configurarComoServicio('20250101', '20250131', '20250228')
    ->construir();
```

#### Notas de Crédito

[](#notas-de-crédito)

```
$notaCredito = ComprobanteBuilder::notaCredito('A', 1, 80, 30202020204)
    ->conImporteNeto(5000.00)
    ->agregarIva(21.0, 5000.00)
    ->conComprobanteAsociado(1, 1, 123)  // Factura asociada
    ->construir();
```

#### Exportación

[](#exportación)

```
$facturaExportacion = ComprobanteBuilder::factura('A', 1, 80, 30202020204)
    ->conImporteNeto(25000.00)
    ->agregarIva(0.0, 25000.00)  // Exportaciones IVA 0%
    ->paraExportacion('1', 'PE-2025-001')
    ->conTransporte('Marítimo', 'Buque MV Exportador')
    ->construir();
```

### Métodos Disponibles en ComprobanteBuilder

[](#métodos-disponibles-en-comprobantebuilder)

MétodoDescripción`factura($tipo, $ptoVta, $docTipo, $docNro)`Crear builder para factura`notaCredito($tipo, $ptoVta, $docTipo, $docNro)`Crear builder para nota de crédito`conImporteNeto($importe)`Establecer importe neto gravado`conImporteExento($importe)`Establecer importe exento`conImporteNoGravado($importe)`Establecer importe no gravado`agregarIva($porcentaje, $baseImponible, $importe?)`Agregar alícuota de IVA`agregarTributo($id, $desc, $baseImp, $porcentaje?)`Agregar tributo (Ing. Brutos, etc.)`agregarPercepcion($id, $desc, $baseImp, $porc?)`Agregar percepción`conDescuento($porcentaje, $baseImporte)`Aplicar descuento`conRecargo($porcentaje, $baseImporte)`Aplicar recargo financiero`conFecha($fecha)`Establecer fecha específica`conMoneda($monedaId, $cotizacion)`Configurar moneda extranjera`configurarComoServicio($desde, $hasta, $vto?)`Configurar como servicio`configurarComoProductosYServicios($desde, $hasta)`Configurar como productos y servicios`conCondicionIva($condicion)`Sobrescribir condición IVA del receptor`conComprobanteAsociado($tipo, $ptoVta, $nro)`Asociar comprobante (notas)`paraExportacion($tipo, $permiso?)`Configurar para exportación`conTransporte($tipo, $detalle)`Agregar información de transporte`comoFacturaCredito($cbu, $alias?)`Convertir a FCE`agregarDatoOpcional($id, $valor)`Agregar dato opcional válido de AFIP`validarAntesDeConstruir($validar)`Habilitar/deshabilitar validaciones automáticas`construir()`Construir el objeto Comprobante final### Facturación Electrónica

[](#facturación-electrónica)

```
// Obtener servicio de facturación
$facturacion = $afip->FacturacionElectronica;

// Crear comprobante
$datosComprobante = [
    'CbteTipo' => 11, // Factura C
    'PtoVta' => 1,
    'Concepto' => 1, // Productos
    'DocTipo' => 80, // CUIT
    'DocNro' => 20123456789,
    'CbteFch' => date('Ymd'),
    'ImpTotal' => 121.00,
    'ImpTotConc' => 0.00,
    'ImpNeto' => 100.00,
    'ImpOpEx' => 0.00,
    'ImpIVA' => 21.00,
    'ImpTrib' => 0.00,
    'MonId' => 'PES',
    'MonCotiz' => 1,
    'Iva' => [
        [
            'Id' => 5, // 21%
            'BaseImp' => 100.00,
            'Importe' => 21.00
        ]
    ]
];

$respuesta = $facturacion->crearSiguienteComprobante($datosComprobante);

echo "CAE: " . $respuesta['CAE'] . "\n";
echo "Número: " . $respuesta['numeroComprobante'] . "\n";
echo "Vencimiento: " . $respuesta['CAEFchVto'] . "\n";

// Consultar último comprobante
$ultimo = $facturacion->obtenerUltimoComprobante(1, 11);

// Obtener información de comprobante
$info = $facturacion->obtenerInformacionComprobante($ultimo, 1, 11);
```

### Padrón de Contribuyentes

[](#padrón-de-contribuyentes)

```
// Obtener servicio de padrón
$padron = $afip->PadronAlcanceCinco;

// Consultar contribuyente
$contribuyente = $padron->obtenerDatosContribuyente(20123456789);

if ($contribuyente) {
    echo "Razón Social: " . $contribuyente->razonSocial . "\n";
    echo "Estado: " . $contribuyente->estadoClave . "\n";
}

// Consultar múltiples contribuyentes
$contribuyentes = $padron->obtenerDatosContribuyentes([
    20123456789,
    20987654321,
    20555666777
]);
```

📋 Información del SDK
---------------------

[](#-información-del-sdk)

🏗️ AfipConfiguracionBuilder - API Fluida para Configuración
-----------------------------------------------------------

[](#️-afipconfiguracionbuilder---api-fluida-para-configuración)

El SDK incluye un **AfipConfiguracionBuilder** que permite crear configuraciones AFIP de forma fluida con validaciones automáticas.

### Características del AfipConfiguracionBuilder

[](#características-del-afipconfiguracionbuilder)

- ✅ **API fluida autodocumentada**
- ✅ **Validaciones en tiempo de construcción**
- ✅ **Factory methods para testing y producción**
- ✅ **Métodos de conveniencia como `sinExcepciones()`**
- ✅ **Compatible 100% con AfipConfiguracion original**

### Uso Básico del AfipConfiguracionBuilder

[](#uso-básico-del-afipconfiguracionbuilder)

```
use AfipSDK\Builders\AfipConfiguracionBuilder;

// Configuración básica para testing
$configuracion = AfipConfiguracionBuilder::testing()
    ->conCuit(20123456789)
    ->conCertificado('certificado.pem')
    ->conClavePrivada('clave.key')
    ->conFraseClave('mi_passphrase')
    ->construir();

// Configuración completa para producción
$configuracion = AfipConfiguracionBuilder::produccion()
    ->conCuit(20123456789)
    ->conCertificado('cert_prod.pem')
    ->conClavePrivada('key_prod.key')
    ->conFraseClave('passphrase_ultra_segura')
    ->conCarpetaCertificados('/etc/ssl/afip/')
    ->conCarpetaTokens('/var/cache/afip_tokens/')
    ->conCarpetaRecursos('/opt/afip-sdk/recursos/')
    ->sinExcepciones() // Método de conveniencia
    ->construir();

// Configuración mínima
$configuracion = AfipConfiguracionBuilder::testing()
    ->conCuit(20123456789)
    ->conCertificado('cert.pem')
    ->conClavePrivada('key.pem')
    ->construir();
```

### Métodos Avanzados del AfipConfiguracionBuilder

[](#métodos-avanzados-del-afipconfiguracionbuilder)

#### Reutilización y Factory Pattern

[](#reutilización-y-factory-pattern)

```
// Crear configuración base reutilizable
$builderBase = AfipConfiguracionBuilder::testing()
    ->conCarpetaCertificados('/certificados/')
    ->conCarpetaTokens('/tokens/');

// Cliente A
$configClienteA = $builderBase
    ->conCuit(20111111111)
    ->conCertificado('cliente_a.pem')
    ->conClavePrivada('cliente_a.key')
    ->construir();

// Cliente B
$configClienteB = $builderBase
    ->conCuit(20222222222)
    ->conCertificado('cliente_b.pem')
    ->conClavePrivada('cliente_b.key')
    ->construir();

// Factory personalizado
function crearConfiguracionCliente(int $cuit, string $nombre): AfipConfiguracion
{
    return AfipConfiguracionBuilder::testing()
        ->conCuit($cuit)
        ->conCertificado($nombre . '_cert.pem')
        ->conClavePrivada($nombre . '_key.pem')
        ->conCarpetaCertificados("/clientes/{$nombre}/certificados/")
        ->conCarpetaTokens("/clientes/{$nombre}/tokens/")
        ->construir();
}
```

#### Configuraciones Condicionales

[](#configuraciones-condicionales)

```
$ambiente = $_ENV['AFIP_AMBIENTE'] ?? 'testing';

$configuracion = ($ambiente === 'produccion' ?
    AfipConfiguracionBuilder::produccion() :
    AfipConfiguracionBuilder::testing())
    ->conCuit(20123456789)
    ->conCertificado($ambiente === 'produccion' ? 'prod.pem' : 'test.pem')
    ->conClavePrivada($ambiente === 'produccion' ? 'prod.key' : 'test.key')
    ->construir();
```

#### Métodos Disponibles en AfipConfiguracionBuilder

[](#métodos-disponibles-en-afipconfiguracionbuilder)

MétodoDescripción`testing()`Factory method para ambiente de testing`produccion()`Factory method para ambiente de producción`conCuit(int $cuit)`Establece el CUIT del contribuyente`conCertificado(string $archivo)`Establece el archivo de certificado`conClavePrivada(string $archivo)`Establece el archivo de clave privada`conFraseClave(string $frase)`Establece la passphrase de la clave`conCarpetaCertificados(string $ruta)`Establece la carpeta de certificados`conCarpetaTokens(string $ruta)`Establece la carpeta de tokens`conCarpetaRecursos(string $ruta)`Establece la carpeta de recursos`conExcepciones(bool $habilitar)`Habilita/deshabilita excepciones`sinExcepciones()`Método de conveniencia para deshabilitar excepciones`construir()`Construye el objeto AfipConfiguracion final### Compatibilidad con AfipConfiguracion Original

[](#compatibilidad-con-afipconfiguracion-original)

El **AfipConfiguracionBuilder** es completamente compatible con la clase **AfipConfiguracion** original:

```
// AMBAS FORMAS crean exactamente la MISMA clase
$configOriginal = AfipConfiguracion::testing(20123456789, [
    'certificado' => 'cert.pem',
    'clavePrivada' => 'key.pem'
]);

$configBuilder = AfipConfiguracionBuilder::testing()
    ->conCuit(20123456789)
    ->conCertificado('cert.pem')
    ->conClavePrivada('key.pem')
    ->construir();

// Ambas son instancias de AfipConfiguracion
echo $configOriginal::class; // AfipSDK\Configuracion\AfipConfiguracion
echo $configBuilder::class;  // AfipSDK\Configuracion\AfipConfiguracion

// El código existente NO necesita cambios
$afip = new Afip($configOriginal); // Funciona
$afip = new Afip($configBuilder);  // También funciona
```

### Obtener Versión

[](#obtener-versión)

```
// Obtener solo la versión
$version = $afip->obtenerVersion();
echo "Versión: " . $version; // Ej: "1.0.0"

// Obtener información completa del SDK
$info = $afip->obtenerInformacionSdk();
print_r($info);
/*
Array (
    [version] => 1.0.0
    [nombre] => AFIP SDK
    [descripcion] => SDK moderno para servicios web de AFIP - Argentina
    [servicios_disponibles] => Array (
        [0] => FacturacionElectronica
        [1] => PadronAlcanceCuatro
        [2] => PadronAlcanceCinco
        [3] => ComprobanteInscripcion
        [4] => PadronAlcanceDiez
        [5] => PadronAlcanceTrece
    )
    [ambiente] => testing
    [cuit] => 20123456789
)
*/

// Acceso directo a la constante
echo Afip::VERSION; // "1.0.0"
```

🔧 Servicios Disponibles
-----------------------

[](#-servicios-disponibles)

| Servicio | Clase Descripción | | ----------------------- | ------------------------ | ------------------------------------ | | Facturación Electrónica | `FacturacionElectronica` | Emisión de comprobantes electrónicos | | Padrón Alcance 4 | `PadronAlcanceCuatro` | Consulta básica de contribuyentes | | Padrón Alcance 5 | `PadronAlcanceCinco` | Consulta avanzada de contribuyentes | | Padrón Alcance 10 | `PadronAlcanceDiez` | Consulta con datos fiscales | | Padrón Alcance 13 | `PadronAlcanceTrece` | Consulta por documento | | Comprobante Inscripción | `ComprobanteInscripción` | Constancia de inscripción |

🛡️ Manejo de Excepciones
------------------------

[](#️-manejo-de-excepciones)

El SDK incluye excepciones específicas para diferentes tipos de errores:

### Excepciones Específicas

[](#excepciones-específicas)

```
use AfipSDK\Excepciones\ConfiguracionExcepcion;
use AfipSDK\Excepciones\CertificadoExcepcion;
use AfipSDK\Excepciones\WsdlExcepcion;
use AfipSDK\Excepciones\TokenExcepcion;
use AfipSDK\Excepciones\FirmaDigitalExcepcion;
use AfipSDK\Excepciones\SoapExcepcion;
use AfipSDK\Excepciones\ServicioExcepcion;
use AfipSDK\Excepciones\NegocioExcepcion;
use AfipSDK\Excepciones\AfipExcepcion;

try {
    $comprobante = $facturacion->crearSiguienteComprobante($datos);
} catch (ConfiguracionExcepcion $e) {
    echo "Error de configuración: " . $e->getMessage();
} catch (CertificadoExcepcion $e) {
    echo "Error de certificado: " . $e->getMessage();
} catch (TokenExcepcion $e) {
    echo "Error de autenticación: " . $e->getMessage();
} catch (NegocioExcepcion $e) {
    echo "Error de AFIP: " . $e->getMessage();
} catch (AfipExcepcion $e) {
    echo "Error general AFIP: " . $e->getMessage();
} catch (Exception $e) {
    echo "Error inesperado: " . $e->getMessage();
}
```

### Tipos de Excepciones

[](#tipos-de-excepciones)

ExcepciónDescripción`ConfiguracionExcepcion`Errores de configuración del SDK`CertificadoExcepcion`Problemas con certificados y claves privadas`WsdlExcepcion`Errores al cargar archivos WSDL`TokenExcepcion`Problemas de autenticación y tokens`FirmaDigitalExcepcion`Errores en el proceso de firma digital`SoapExcepcion`Errores de comunicación SOAP`ServicioExcepcion`Servicios no implementados o inválidos`NegocioExcepcion`Errores específicos de reglas de AFIP`AfipExcepcion`Excepción base (catch-all)⚙️ Configuración Avanzada
-------------------------

[](#️-configuración-avanzada)

### Servicios Web Genéricos

[](#servicios-web-genéricos)

El SDK incluye la clase `ServicioWebGenerico` para trabajar con servicios AFIP no implementados específicamente:

```
// Crear un servicio genérico
$configuracionServicio = [
    'WSDL' => 'https://ejemplo.com/servicio.wsdl',
    'URL' => 'https://ejemplo.com/servicio',
    'WSDL_PRUEBA' => 'https://testing.com/servicio.wsdl',
    'URL_PRUEBA' => 'https://testing.com/servicio'
];

$servicio = $afip->servicioWeb('MiServicioCustom', $configuracionServicio);

// Llamar a métodos del servicio
$resultado = $servicio->llamarMetodo('ConsultarDatos', $parametros);
```

### Configuración de Carpetas

[](#configuración-de-carpetas)

```
$configuracion = AfipConfiguracion::testing(
    cuit: 20123456789,
    opciones: [
        'carpetaRecursos' => '/ruta/completa/recursos/',
        'carpetaTokens' => '/ruta/completa/tokens/',
        'certificado' => 'mi_cert.pem',
        'clavePrivada' => 'mi_key.pem'
    ]
);
```

🪧 Ejemplos Prácticos
--------------------

[](#-ejemplos-prácticos)

En la carpeta `ejemplos/` encontrarás más de 30 ejemplos prácticos organizados por categorías:

### 🔰 Básicos (`basicos/`)

[](#-básicos-basicos)

- `configuracion-basica.php` - Setup inicial del SDK
- `uso.php` - Flujo completo típico de facturación
- `manejo_excepciones.php` - Manejo de errores específicos

### 💰 Facturación (`facturacion/`)

[](#-facturación-facturacion)

- `factura-a.php`, `factura-b.php`, `factura-c.php` - Tipos de facturas
- `facturacion-con-dto.php` - Usando DTOs simplificados
- `facturacion-manual.php` - Control total con arrays
- `consulta-comprobante.php` - Consultar comprobantes emitidos

### 🏗️ Builder (`facturacion/builder/`)

[](#️-builder-facturacionbuilder)

- `facturacion.php` - Ejemplos básicos con ComprobanteBuilder
- `facturacion-avanzada.php` - Métodos avanzados del Builder
- `casos-especiales.php` - Casos especiales y edge cases
- `test-simple.php` - Tests de descuentos y recargos
- `verificacion-metodos.php` - Verificación completa de métodos
- `debug.php` - Debug y estructura de datos

### 📝 Notas de Crédito (`facturacion/notas-credito/`)

[](#-notas-de-crédito-facturacionnotas-credito)

- `nota-credito-a.php`, `nota-credito-b.php`, `nota-credito-c.php`
- `nota-credito.php` - Ejemplo general de notas

### 🔍 Consultas (`consultas/`)

[](#-consultas-consultas)

- `consultas-padron.php` - Padrón múltiples alcances
- `padron-alcance-5.php` - Padrón Alcance 5 específico
- `puntos_venta.php` - Gestión de puntos de venta

### 📊 Tipos (`consultas/tipos/`)

[](#-tipos-consultastipos)

- `tipos_comprobante.php`, `tipos_documento.php`, `tipos_moneda.php`
- `tipos_alicuota_iva.php`, `tipos_tributo.php` - Códigos AFIP

### ⚙️ Configuración (`configuracion/`)

[](#️-configuración-configuracion)

- `builder_basico.php` - Uso básico del AfipConfiguracionBuilder
- `builder_avanzado.php` - Métodos avanzados y encadenamiento fluido
- `builder_casos_uso.php` - Casos de uso específicos (múltiples clientes, factories, etc.)
- `comparativa.php` - Comparación entre AfipConfiguracion y AfipConfiguracionBuilder

### 🔧 Servicios (`servicios/`)

[](#-servicios-servicios)

- `comprobante-inscripcion.php` - Constancias de inscripción
- `monitoreo-servicios.php` - Estado de servicios AFIP
- `servicio_generico.php` - Servicios personalizados
- `cotizacion_monedas.php` - Consulta de cotizaciones

### 🚀 Avanzados (`avanzados/`)

[](#-avanzados-avanzados)

- `configuracion-avanzada.php` - Configuración para producción
- `utilidades-validaciones.php` - Validaciones y cálculos
- `manejo_tokens.php` - Gestión avanzada de tokens

### 📊 Reportes (`reportes/`)

[](#-reportes-reportes)

- `guardado-json.php` - Persistencia en JSON
- `informacion_adicional_util.php` - Utilidades adicionales

🧪 Testing
---------

[](#-testing)

```
# Ejecutar tests unitarios
composer test:unit

# Ejecutar todas las validaciones de calidad
composer quality

# Formateo de código
composer lint

# Análisis estático
composer test:types

# Refactoring automático
composer refactor

# Modernizar código (lint + refactor + types + tests)
composer modernize
```

📋 Requisitos
------------

[](#-requisitos)

- PHP 8.2 o superior
- Extensión SOAP
- Extensión OpenSSL
- Extensión SimpleXML
- Certificados válidos de AFIP

🤝 Contribuciones
----------------

[](#-contribuciones)

Las contribuciones son bienvenidas. Por favor:

1. Fork el proyecto
2. Crea una rama para tu feature (`git checkout -b feature/nueva-funcionalidad`)
3. Commit tus cambios (`git commit -am 'Agregar nueva funcionalidad'`)
4. Push a la rama (`git push origin feature/nueva-funcionalidad`)
5. Crea un Pull Request

📄 Licencia
----------

[](#-licencia)

Este proyecto está bajo la Licencia MIT. Ver el archivo [LICENSE](LICENSE) para más detalles.

🔗 Enlaces Útiles
----------------

[](#-enlaces-útiles)

### Documentación General

[](#documentación-general)

- [Documentación oficial AFIP](http://www.afip.gob.ar/ws/)

### Facturación Electrónica

[](#facturación-electrónica-1)

- [Manual de Facturación Electrónica WSFE](https://www.afip.gob.ar/ws/documentacion/manuales/manual-desarrollador-ARCA-COMPG-v4-0.pdf)

### Padrón de Contribuyentes

[](#padrón-de-contribuyentes-1)

- [Manual Padrón Alcance 4](https://www.afip.gob.ar/ws/ws_sr_padron_a4/manual_ws_sr_padron_a4_v1.3.pdf)
- [Datos de Prueba Padrón A4](https://www.afip.gob.ar/ws/ws_sr_padron_a4/datos-prueba-padron-a4.txt)
- [Manual Padrón Alcance 5](http://www.afip.gob.ar/ws/ws_sr_padron_a5/manual_ws_sr_padron_a5_v1.0.pdf)
- [Manual Padrón Alcance 10](https://www.afip.gob.ar/ws/ws_sr_padron_a10/manual_ws_sr_padron_a10_v1.2.pdf)
- [Manual Padrón Alcance 13](https://www.afip.gob.ar/ws/ws-padron-a13/manual-ws-sr-padron-a13-v1.2.pdf)

### Comprobante de Inscripción

[](#comprobante-de-inscripción)

- [Manual Constancia Inscripción](https://www.afip.gob.ar/ws/WSCI/manual-ws-sr-ws-constancia-inscripcion-V3.6.pdf)

🆘 Soporte
---------

[](#-soporte)

Si encuentras algún problema o tienes preguntas:

- Abre un [Issue](https://github.com/armandolazarte/afip.php/issues)
- Consulta la [Documentación](https://github.com/armandolazarte/afip.php/wiki)
- Contacta al autor: [armando\_lazarte@hotmail.com](mailto:armando_lazarte@hotmail.com)

---

**⚠️ Importante**: Este SDK está diseñado específicamente para uso en Argentina con los servicios web oficiales de AFIP. Asegúrate de tener los certificados y permisos necesarios antes de usar en producción.

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance60

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

251d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f97a6d15f144256b72bf7dafc5b1a624b69176949d274415266c4de053c3ca4f?d=identicon)[ArmandoLazarte](/maintainers/ArmandoLazarte)

---

Top Contributors

[![armandolazarte](https://avatars.githubusercontent.com/u/6850291?v=4)](https://github.com/armandolazarte "armandolazarte (3 commits)")

---

Tags

soapweb servicesafipfacturacion-electronicacaepadron

###  Code Quality

TestsPest

Static AnalysisPHPStan, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/armandolazarte-afip-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/armandolazarte-afip-sdk/health.svg)](https://phpackages.com/packages/armandolazarte-afip-sdk)
```

###  Alternatives

[afipsdk/afip.php

Libreria para usar los Web Services de AFIP (Argentina)

284121.2k5](/packages/afipsdk-afipphp)[phpforce/soap-client

A PHP client for the Salesforce SOAP API

831.9M1](/packages/phpforce-soap-client)[laminas/laminas-soap

6121.8M37](/packages/laminas-laminas-soap)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
