mishonorarios/mishonorarios-php

SDK oficial de MisHonorarios para emitir y consultar boletas de honorarios electrónicas (Chile) desde PHP.

Maintainers

Package info

github.com/josephrr/mishonorarios-php

Homepage

pkg:composer/mishonorarios/mishonorarios-php

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.2.0 2026-07-07 18:35 UTC

This package is auto-updated.

Last update: 2026-07-07 18:39:49 UTC


README

SDK oficial de MisHonorarios para emitir y consultar boletas de honorarios electrónicas (Chile) desde PHP.

Packagist

Requisitos

  • PHP 8.2+
  • Un token de API (créalo en el portal: Configuración → API)

Instalación

composer require mishonorarios/mishonorarios-php

Uso

use MisHonorarios\Client;

$mishonorarios = new Client('https://tu-dominio/api/v1', 'mishonorarios_tu_token');

// Estado del emisor y del plan
$me = $mishonorarios->me();
echo $me['plan']['disponibles']; // cupo restante

// Emitir una boleta (receptor nacional)
$boleta = $mishonorarios->boletas()->emit([
    'receptor' => [
        'rut' => '12.345.678-5',
        'nombre' => 'Cliente SpA',
        'direccion' => 'Av. Siempre Viva 123',
        'region_code' => '13',
        'comuna_code' => '13101',
    ],
    'detalle' => [
        ['descripcion' => 'Asesoría contable abril', 'monto' => 120000],
    ],
]);
echo $boleta['folio'];

// Descargar el PDF (las boletas se identifican por su folio del SII)
file_put_contents('boleta.pdf', $mishonorarios->boletas()->pdf($boleta['folio']));

// Listar boletas
$lista = $mishonorarios->boletas()->list(['per_page' => 50, 'status' => 'issued']);

// Anular (por folio)
$mishonorarios->boletas()->cancel($boleta['folio'], causa: 3);

// Clientes
$mishonorarios->clientes()->create(['rut' => '11.111.111-1', 'nombre' => 'Otro Cliente']);

Receptor extranjero

$mishonorarios->boletas()->emit([
    'receptor' => ['extranjero' => true, 'nombre' => 'Acme Inc. (USA)', 'direccion' => 'Miami, USA'],
    'detalle' => [['descripcion' => 'Desarrollo de software', 'monto' => 500000]],
]);

Sin identificar receptor (express)

$mishonorarios->boletas()->emit([
    'receptor' => ['sin_receptor' => true, 'nombre' => 'Consumidor final'],
    'detalle' => [['descripcion' => 'Servicio', 'monto' => 30000]],
]);

Manejo de errores

use MisHonorarios\Exceptions\{AuthException, ValidationException, SiiException, RateLimitException};

try {
    $mishonorarios->boletas()->emit($payload);
} catch (ValidationException $e) {
    print_r($e->errors());        // errores por campo (422)
} catch (SiiException $e) {
    if ($e->recoverable) { /* la boleta pudo emitirse: sincroniza */ }
} catch (RateLimitException $e) {
    // espera y reintenta (429)
} catch (AuthException $e) {
    // token inválido o sin permisos (401/403)
}

Documentación de la API

Ver la referencia completa de endpoints en la documentación de la API de MisHonorarios.

Licencia

MIT.