Simulador de ARCA
El simulador es una ARCA de mentira para probar tu integración desde el primer día: no necesita certificado, ni clave fiscal, ni que ARCA esté andando. Responde siempre igual y te deja forzar a propósito un rechazo, un timeout, una falla de autenticación o una numeración desfasada, que en homologación es imposible provocar a voluntad.
Nada de lo que emite el simulador tiene validez fiscal ni existe en ARCA. Los comprobantes quedan marcados como Simulado y se imprimen con la marca de agua «MUESTRA».
Activarlo
En Configuración → Certificado (o en la tarjeta «Ambiente de tu cuenta») tocá Probar en el simulador. Lo puede hacer el Titular o un Administrador, y solo desde la consola: cambiar de ambiente cambia a dónde hablan todas tus integraciones, así que nunca se hace con una clave.
- Tu cuenta, tus claves de API y el MCP pasan a usar el simulador al instante.
- Se puede volver a homologación (la ARCA real de pruebas) cuando quieras; y a producción con las mismas reglas de siempre (certificado de producción vigente).
- Una cuenta que ya emitió en producción no puede volver al simulador (candado para no mezclar numeraciones).
Qué simula
| Qué | Cómo responde |
|---|---|
| Emisión | Autoriza con un CAE de mentira (empieza con 0000) y numeración correlativa por punto de venta y tipo |
| Puntos de venta | 1 y 2 habilitados, 3 bloqueado; 4 para exportación |
| Conexión y certificado | Siempre en verde; «no hace falta certificado» |
| Catálogos y cotización de exportación | Unos pocos países, monedas (DOL a 1000, 060 a 1100), Incoterms e idiomas |
| Consulta de un comprobante | Devuelve lo que se «autorizó»; sirve para reconciliar un incierto |
FCE (GET /v1/fce/obligation) |
Una sociedad (CUIT que empieza con 30, 33 o 34) cuyo último dígito es 0–4 está obligada desde $5.549.862; cualquier otro CUIT no |
Padrón (GET /v1/taxpayers/{cuit}) |
Datos inventados según el último dígito del CUIT: 0–3 responsable inscripto · 4–6 monotributo · 7 exento · 8 sin impuestos (no categorizado) · 9 no existe (AS-1022). Los que empiezan con 30, 33 o 34 son sociedades. Si el penúltimo dígito es 9, la CUIT figura inactiva; si es 8, limitada (sirve para probar cómo se muestran las alertas) |
Constatación (POST /v1/purchase-invoices/{id}/constatar) |
Aprueba (A) si el CAE tiene 14 dígitos; lo rechaza (R, observación 21) si termina en 9 o no tiene 14 dígitos |
La numeración sigue a los comprobantes ya guardados, así que reiniciar el servicio no la rompe.
Forzar un resultado: las marcas
Poné una marca en el nombre del receptor (es un texto libre; no afecta ninguna validación):
{
"puntoVenta": 1,
"receptor": {
"docTipo": "dni",
"docNro": "30111222",
"condicionIva": "consumidorFinal",
"nombre": "Cliente de prueba [sim:rechazo]"
},
"items": [{ "descripcion": "Servicio", "precioUnitario": 1000 }]
}
| Marca | Qué pasa | Qué probás en tu sistema |
|---|---|---|
| (ninguna) | Se autoriza | El camino feliz |
[sim:rechazo] |
422: ARCA rechaza el comprobante («Rechazo simulado», con humano y arca) |
Mostrar el motivo y permitir corregir y reenviar con otra Idempotency-Key |
[sim:timeout] |
202 con estado incierto: ARCA lo registró pero la respuesta no llegó. A los ~20 s «aparece» y, al consultarlo, pasa a autorizado |
La regla de oro: no reemitir; consultar o repetir con la misma clave |
[sim:timeout-perdido] |
202 incierto: el pedido se perdió y ARCA nunca lo tuvo. Pasados 5 minutos, al consultarlo pasa a rechazado y el número queda libre |
Que no reemitas antes de tiempo y que resuelvas un incierto que termina mal |
[sim:caida] |
202 incierto: no se pudo hablar con ARCA |
Un corte de red durante la emisión |
[sim:wsaa] |
424: falla la autenticación («certificado vencido»). No queda incierto: nada se envió |
Distinguir «no se emitió» de «no sabemos» |
[sim:10016] |
Otro sistema «se llevó» el número: Comprobado reintenta solo una vez y autoriza con el número siguiente | Que no te importe el número que pediste |
[sim:observacion] |
Se autoriza con un aviso (avisos[]) |
Mostrar observaciones de un comprobante aprobado |
[sim:lento] |
Responde a los 3 segundos | Timeouts y spinners de tu cliente |
Las marcas se pueden combinar con el nombre real («Ana Pérez [sim:observacion]»). Valen también en los lotes (columna nombre), en el MCP y en la consola.
Un test de punta a punta
# 1. Un incierto que se resuelve solo
curl -s -X POST https://TU-DOMINIO/v1/invoices -H "Authorization: Bearer $COMPROBADO_KEY" -H "Idempotency-Key: demo-1" \
-H "Content-Type: application/json" \
-d '{"puntoVenta":1,"receptor":{"docTipo":"dni","docNro":"30111222","condicionIva":"consumidorFinal","nombre":"Demo [sim:timeout]"},"items":[{"descripcion":"x","precioUnitario":1000}]}'
# → 202 { "id": "inv_…", "estado": "incierto" }
# 2. Esperá ~20 s y consultalo (o repetí el POST con la MISMA clave): lo reconcilia
curl -s https://TU-DOMINIO/v1/invoices/inv_… -H "Authorization: Bearer $COMPROBADO_KEY"
# → { "estado": "autorizado", "cae": "0000…" }
Límites
- El simulador no valida contra ARCA: acepta cosas que ARCA rechazaría (por ejemplo, un CUIT que no existe en el padrón). Antes de salir a producción, probá también en homologación, que es la ARCA real.
- Lo «autorizado» vive en memoria: si el servicio se reinicia en medio de un incierto simulado, ese comprobante deja de existir para el simulador.
- No importa comprobantes (Importar de ARCA): no hay nada que traer.