PRÓXIMAMENTE afiPAPI ahora también como librería PHP — facturá ARCA desde tu propio hosting. Ver el adelanto →
Guía para novatos

afiPAPI, de cero

Sin vueltas y en criollo: cómo funciona, las cuatro palabras que hay que saber, y qué hace cada endpoint — para quien recién arranca.

Cómo funciona (en un minuto)

afiPAPI es un intermediario. Los servidores de ARCA son complicados de hablar (usan un protocolo viejo llamado SOAP y exigen certificados y credenciales temporales). afiPAPI se pone en el medio: vos le hablás fácil por HTTP con JSON, y ella se encarga de la parte difícil contra ARCA.

¿Cómo le hablás? Tu programa manda una petición HTTP a una dirección tipo http://localhost:5000/api/afip/<lo-que-quieras> con un JSON, y recibe un JSON de vuelta. El puerto (acá 5000) lo elegís al instalar.
Todas las respuestas tienen la misma forma: un sobre { "ok": ..., "data": ... }.
La regla de oro: mirá SIEMPRE el campo ok. Si es true, salió bien y lo que pediste está en data. Si es false, algo falló y el motivo está en data.error. Un "HTTP 200" no alcanza — puede venir 200 y adentro un ok:false.
Homologación vs. producción. Casi todos los endpoints toman un campo produccion. En false hablás con el ambiente de pruebas de ARCA (para practicar sin emitir nada real); en true, con el ambiente real. Empezá siempre en homologación (false) hasta que todo funcione.

Glosario rápido

Cuatro palabras que aparecen todo el tiempo:

PalabraQué es
CUITEl número que identifica al contribuyente (el que factura). Va sin guiones, como número.
Punto de ventaEl "cajón" numerado desde donde emitís (una caja, una sucursal, un sistema). ARCA los numera; lo abreviamos PV.
Tipo de comprobanteQué documento emitís, como número: Factura A = 1, Factura B = 6, Factura C = 11, notas de crédito/débito, etc.
CAEEl código que ARCA te devuelve cuando aprueba la factura. Es la "constancia" de que es válida — va impreso en el comprobante, con su fecha de vencimiento.
Token / signLa credencial temporal para hablar con ARCA. No te preocupes por ella: la API la obtiene, la guarda y la renueva sola después del login.

El camino feliz

La secuencia típica para emitir una factura son 3 pasos (más un chequeo opcional al inicio). Todo lo demás son consultas y ayudas alrededor de esto.

0
Chequeo (opcional)/ping o /health: ¿hay línea con ARCA? Si no, ni intentes.
1
Autenticarte/login: una vez por CUIT. La API guarda la credencial y la renueva sola.
2
Ver el último número/ultimo: para saber cuál sigue. (En realidad /emitir ya lo calcula solo, pero es útil verlo.)
3
Emitir/emitir: mandás los datos y ARCA te devuelve el CAE y el número. Listo, facturaste.

Arrancar y chequear

POST/login

Te conecta con ARCA. Le pasás tu CUIT y tu certificado digital (el archivo .pfx con su clave), y queda autenticado. Se hace UNA sola vez por CUIT: después la API guarda la credencial y la va renovando sola, así no tenés que autenticarte en cada factura.

Le mandás: el CUIT, la ruta del certificado y su clave, y si es producción o no.
Recibís: la confirmación de que quedaste logueado (la credencial la maneja la API por vos).

Detalle exacto: referencia de /login

GETPOST/ping

El semáforo antes de operar. Te dice si los servidores de ARCA (y, si querés, servidores tuyos como tu base de datos) están accesibles y con qué latencia. Sirve para decidir si conviene conectarse o mostrar "sin conexión" y reintentar.

Recibís: un campo afipAccesible (tu "¿puedo facturar?" de un vistazo) y el detalle de cada servidor.

Tiene su propia guía: /ping explicado en lenguaje natural ›

GET/health

Un chequeo de salud más completo. Te dice si la API está bien, si ARCA responde (con el estado de sus tres servidores internos: aplicación, base de datos y autenticación) y un resumen de cuántos CUIT tenés autenticados. Ideal para un tablero de "¿está todo OK?".

Diferencia con /ping: /ping es un chequeo liviano de "¿hay conexión?"; /health le pregunta a ARCA de verdad "¿estás funcionando?".

Detalle: referencia de /health

GET/status

¿Cómo está mi sesión con ARCA? Le pasás un CUIT y te dice si su credencial está activa, cuándo vence y cuántos minutos le quedan. Útil para saber si vas a poder operar o si conviene re-loguearte.

Detalle: referencia de /status

GET/cache

La lista de todo lo que tenés autenticado. Muestra qué CUIT están cargados y en qué ambiente. Es una herramienta de diagnóstico — la usás cuando algo no anda y querés ver el estado interno.

Detalle: referencia de /cache

Facturar

POST/ultimo

El último número que usaste. Le decís el punto de venta y el tipo de comprobante, y te dice cuál fue el último número autorizado por ARCA. Así sabés cuál sigue.

Dato para novatos: si nunca emitiste con ese PV + tipo, devuelve 0 — y eso está bien: quiere decir que la próxima factura será la número 1.

Detalle: referencia de /ultimo

POST/emitir

El corazón de todo: emitís un comprobante. Le mandás los datos (importes, IVA, tipo de comprobante, datos del cliente…) y ARCA te devuelve el CAE, su fecha de vencimiento y el número asignado. Eso es la factura autorizada.

La API te simplifica la vida: el número lo calcula sola (agarra el último y le suma 1), y maneja la credencial por vos.
Concepto: le decís si vendés productos (1), servicios (2) o ambos (3). Para servicios, ARCA pide además las fechas del período.
Notas de crédito/débito: para anular o ajustar una factura, sumás el "comprobante asociado" (a qué factura hace referencia).
Recordá la regla de oro: aunque venga HTTP 200, mirá ok. Si ARCA rechaza el comprobante, viene ok:false con el motivo. Un CAE en la respuesta = aprobado.

Detalle completo (todos los campos): referencia de /emitir

POST/consultar

Traer una factura que ya emitiste. Le das el punto de venta, el tipo y el número, y te devuelve todos sus datos más el CAE. Sirve para reimprimir, verificar o mostrar un comprobante viejo.

Si el número no existe, ARCA lo dice y la respuesta viene con ok:false.

Detalle: referencia de /consultar

POST/resumen-emitidos

Un listado de lo que emitiste en un rango de números (del X al Y), con un totalizador al final (cuántos, cuánto suman). Bueno para conciliar o armar un reporte.

Dos límites a tener presentes: (1) el tope es 1000 comprobantes por consulta; (2) solo trae lo emitido por esta API / webservice — no incluye lo hecho en "Comprobantes en Línea" ni las facturas que recibiste de otros.

Detalle: referencia de /resumen-emitidos

Consultar un CUIT

POST/padron/constancia

¿Quién es este CUIT y qué factura emite? Le das un CUIT (el tuyo o el de un tercero, ej. un cliente) y te dice su condición fiscal (monotributo, responsable inscripto, etc.), sus datos, y si está habilitado a emitir Factura A.

Para qué sirve: saber qué tipo de factura corresponde antes de emitir.
Ojo: el "puede emitir Factura A" es una deducción a partir de la condición fiscal, no un permiso oficial. La palabra final la tiene /emitir (ARCA rechaza si el tipo no corresponde). Además, el CUIT que consulta necesita tener habilitado ese servicio de padrón en ARCA.

Detalle: referencia de /padron/constancia

Listas de códigos (tablas de ARCA)

ARCA maneja todo con códigos (Factura B es el 6, DNI es el 96, 21% de IVA es el 5…). Estos endpoints te traen las listas oficiales y actualizadas de esos códigos, para llenar los combos de tu sistema o validar valores.

Todos se usan igual: les mandás { cuit, produccion } y te devuelven una lista de { Id, Descripcion }. Para novatos: los valores más comunes ya están en la tabla de códigos de la referencia; estos endpoints son cuando querés la lista completa y al día.
EndpointTe trae la lista de…
/puntos-ventaTus puntos de venta habilitados
/tipos-comprobanteTipos de comprobante (Factura A/B/C, notas, etc.)
/tipos-documentoTipos de documento (CUIT, DNI, CUIL…)
/tipos-conceptoConceptos (productos / servicios / ambos)
/tipos-ivaAlícuotas de IVA (21%, 10,5%…)
/tipos-monedaMonedas habilitadas
/tipos-tributoTipos de tributo (percepciones, otros)
/tipos-opcionalCampos opcionales
/condiciones-iva-receptorCondición de IVA del cliente (RG 5616)
/actividadesTus actividades económicas registradas

Detalle y ejemplo: referencia de las tablas ›

Moneda extranjera

POST/cotizacion

La cotización oficial de una moneda según ARCA (ej. el dólar). La usás cuando facturás en moneda extranjera: ARCA espera que informes el valor que él considera oficial, y este endpoint te lo da.

Detalle: referencia de /cotizacion

¿Y ahora?

Cuando ya tengas la idea general, saltá al detalle técnico: cada endpoint con su JSON exacto de entrada y respuesta.

Referencia técnica de endpoints › /ping en detalle › Ejemplos por lenguaje › Descargar afiPAPI ›