Saltar al contenido principal

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.MONOTRIBUTO en vez de 6.
  • 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:

JavaScript
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 }],
}
PHP
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]],
];
Python
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:

EjemploQué muestra
00La API cruda, sin clienteEl POST pelado, con todos los campos comentados: no hace falta ningún cliente
01Verificar conexiónLa primera llamada al integrar: valida clave, certificado y puntos de venta
02Factura C — monotributoEl caso más común. Sin discriminar IVA
03Factura A — responsable inscriptoReceptor con CUIT, IVA discriminado
04Factura B — consumidor finalCuándo hay que identificar al comprador
05Servicios con períodoconcept: 2 y las tres fechas obligatorias
06Nota de créditoAnular un comprobante con associatedVouchers
07Consultar padrónArmar el customer con los datos reales de ARCA
08Descargar el PDFA demanda, con espera si todavía se está generando
09Listar comprobantesFiltros, orden y paginado
10Emisión en loteSecuencial 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:

.env
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].