Ejemplos de código
Todo el código de esta página vive en un repositorio público, listo para clonar:
Trae, para JavaScript, PHP y Python:
- Un cliente que resuelve autenticación, el envelope
{ ok, result }, errores tipados, idempotencia y reintentos. - Las constantes de todas las tablas de ARCA, para escribir
CONDICION_IVA.MONOTRIBUTOen vez de6. - Diez ejemplos numerados, los mismos en los tres lenguajes.
git clone https://github.com/nanofactura/api-facturacion-electronica-ejemplos.git
cd api-facturacion-electronica-ejemplos
cp .env.example .env # cargá tu API key
Constantes en vez de números
El error más común al integrar es un número mal puesto: mandar docType: 80 (CUIT) cuando el cliente te dio un DNI, o taxType: 5 (21%) donde iba taxType: 5 (consumidor final) — son campos distintos con códigos que se solapan.
Las constantes lo hacen imposible de confundir:
import { TIPO_COMPROBANTE, CONDICION_IVA, TIPO_DOCUMENTO, PROVINCIAS } from './src/constants/index.js'
const factura = {
voucherType: TIPO_COMPROBANTE.FACTURA_C,
customer: {
docType: TIPO_DOCUMENTO.DNI,
docNumber: '35888999',
name: 'Pedro López',
taxType: CONDICION_IVA.CONSUMIDOR_FINAL,
stateId: PROVINCIAS.SANTA_FE,
},
items: [{ description: 'Consultoría', quantity: 1, price: 50000 }],
}
use NanoFactura\Constants\{TipoComprobante, CondicionIva, TipoDocumento, Provincia};
$factura = [
'voucherType' => TipoComprobante::FACTURA_C,
'customer' => [
'docType' => TipoDocumento::DNI,
'docNumber' => '35888999',
'name' => 'Pedro López',
'taxType' => CondicionIva::CONSUMIDOR_FINAL,
'stateId' => Provincia::SANTA_FE,
],
'items' => [['description' => 'Consultoría', 'quantity' => 1, 'price' => 50000]],
];
from nanofactura.constants import TipoComprobante, CondicionIva, TipoDocumento, Provincia
factura = {
"voucherType": TipoComprobante.FACTURA_C,
"customer": {
"docType": TipoDocumento.DNI,
"docNumber": "35888999",
"name": "Pedro López",
"taxType": CondicionIva.CONSUMIDOR_FINAL,
"stateId": Provincia.SANTA_FE,
},
"items": [{"description": "Consultoría", "quantity": 1, "price": 50000}],
}
Los once ejemplos
Numerados en orden de dificultad, iguales en los tres lenguajes:
| Ejemplo | Qué muestra | |
|---|---|---|
00 | La API cruda, sin cliente | El POST pelado, con todos los campos comentados: no hace falta ningún cliente |
01 | Verificar conexión | La primera llamada al integrar: valida clave, certificado y puntos de venta |
02 | Factura C — monotributo | El caso más común. Sin discriminar IVA |
03 | Factura A — responsable inscripto | Receptor con CUIT, IVA discriminado |
04 | Factura B — consumidor final | Cuándo hay que identificar al comprador |
05 | Servicios con período | concept: 2 y las tres fechas obligatorias |
06 | Nota de crédito | Anular un comprobante con associatedVouchers |
07 | Consultar padrón | Armar el customer con los datos reales de ARCA |
08 | Descargar el PDF | A demanda, con espera si todavía se está generando |
09 | Listar comprobantes | Filtros, orden y paginado |
10 | Emisión en lote | Secuencial por punto de venta, con reintentos e idempotencia persistida |
Cada carpeta de lenguaje tiene su propio README con las instrucciones de instalación y ejecución.
Configuración
Los tres lenguajes leen las mismas variables de entorno:
NANOFACTURA_API_KEY=TEST_00000000000000000000000000000000
NANOFACTURA_ID_EMPRESA=mi-empresa
NANOFACTURA_BASE_URL=https://nanofactura.com/api
Empezá con una clave TEST_: los comprobantes de homologación no tienen validez fiscal. Cuando funcione, cambiás el valor por una PROD_ y no tocás nada más.
¿No tenés todavía la clave, el certificado o los puntos de venta? Ver Puesta en marcha.
Para tu agente de IA
El repositorio incluye un AGENTS.md que apunta a la documentación en texto plano. Si trabajás con Claude Code, Cursor o similar, clonarlo y abrirlo alcanza para que el agente sepa cómo usar la API.
O directamente, sin clonar nada:
Implementá facturación electrónica de ARCA leyendo:
https://asistentefacturaelectronica.com/ayuda/api/llms-full.txt
Seguí los patrones de https://github.com/nanofactura/api-facturacion-electronica-ejemplos
Otros lenguajes y plataformas
La API es REST sobre HTTP con JSON: se consume desde cualquier lenguaje. Los tres del repositorio son ejemplos, no un requisito.
También funciona desde herramientas no-code: n8n, Make, Zapier o Google Apps Script pueden hacer el POST sin que escribas código. Ver las preguntas frecuentes.
¿Te falta un ejemplo, o querés aportar el tuyo? Abrí un issue en el repositorio o escribinos a [email protected].