> ## Documentation Index
> Fetch the complete documentation index at: https://www.emissa.com.ar/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sandbox, planes y paso a producción

> Qué se cobra y qué no, por qué la cuota nunca bloquea una emisión, y qué falta para emitir en producción.

Qué cuesta, qué se cuenta como consumo, y qué falta para emitir en producción. Con
las dos reglas que casi nadie publica y una que hay que decir con todas las letras.

> [!NOTE]
>
> Los números de esta guía salen del modelo comercial. El comportamiento —qué
> consume cuota, qué pasa al excederse, qué devuelve una clave `live`— **se
> ejecutó**.

## El sandbox es gratis y no es un simulador

Homologación **ilimitada**, y ARCA entrega **CAE real**. Los CAE de
[el quickstart](https://www.emissa.com.ar/docs/guias/quickstart.md) y de las demás guías salieron de los servidores
del organismo. No hay mocks en el camino: la firma, el sobre SOAP y la respuesta son
los mismos que en producción.

> [!TIP]
>
> **Y la homologación no consume cuota.** No es una excepción del plan Sandbox:
> vale en todos. Cobrar por comprobantes de prueba castigaría exactamente la
> conducta que el sandbox existe para fomentar.

> [accordion] La medición: emitir en homologación y mirar la misma respuesta
>
> ```
> HTTP 201
> X-Cuota-Limite: 50
> X-Cuota-Usada: 0          ← cero, justo después de emitir
> X-Cuota-Restante: 50
> X-Cuota-Reinicio: 2026-08-01T03:00:00.000Z
> ```

## Lo que se cobra es el comprobante autorizado

No el request, no la creación. **El CAE.**

| Qué hacés | ¿Se cobra? | Por qué |
| - | - | - |
| Emisión autorizada por ARCA | **Sí** | Es el comprobante |
| Anulación (nota de crédito) | **Sí** | Es otro comprobante, con su CAE y su número |
| Rechazo de ARCA | No | El comprobante no existe |
| Consulta de padrón, constatación de CAE, PDF | No | Se miden, no se cobran |
| Cualquier cosa en homologación | No | No tiene consecuencia fiscal |

> [!TIP]
>
> **Tu factura depende de tus ventas, no de tus decisiones de arquitectura.** Si
> hacés tres consultas antes de emitir, o si reintentás por un timeout, la
> cuenta no cambia. Ésa es la diferencia con contar requests.

## Los planes

| Plan | Precio | Qué incluye | Excedente | API |
| - | - | - | - | - |
| **Sandbox** | **\$0** | 1 CUIT · homologación ilimitada + 50/mes de producción | — | Sí |
| **Panel** | **\$9.900/mes** | 1 CUIT · 50/mes | \$45 c/u | **No** |
| **Integración** | **\$34.900/mes** | hasta 3 CUIT · 1.000/mes agrupados | \$25 c/u | Sí |
| **Plataforma** | **\$2.900 por CUIT activo** | desde 10 activos · 150/mes **por CUIT activo**, en pool | \$15 c/u | Sí |
| **A medida** | Conversación | +500 CUIT · a convenir | — | Sí |

> [!TIP]
>
> Todos incluyen panel, **PDF A4 y ticket con QR de la RG 4892**, homologación y
> soporte por email. El PDF no es un módulo aparte.

> [!NOTE]
>
> **Los precios son en pesos y son finales**: lo que dice la lista es lo que se
> debita. No hay tipo de cambio en el medio, y no hay un impuesto que se sume
> después.

**El excedente unitario sube a medida que el plan baja** —$15, $25, \$45— y está
puesto así a propósito: a bajo volumen el costo de atención no baja en proporción.
Cincuenta comprobantes por mes dan el mismo trabajo de soporte que mil.

### Panel es el único sin API

Existe para quien factura desde la web y no integra nada: un monotributista, un
comercio, un estudio chico. Sin API el precio puede ser un tercio de Integración, y
quien no la usa no la paga.

> [!WARNING]
>
> **Si estás leyendo esta documentación, no es tu plan.** Crear una API key ahí
> se rechaza con `402 BILLING_PLAN_WITHOUT_API` —ver [los
> errores](https://www.emissa.com.ar/docs/guias/errores.md)— y el rechazo llega **antes de que la key exista**,
> no en cada llamada: una credencial se muestra una sola vez y se guarda, así
> que dejarla crear para después rechazar cada request te haría descubrir el
> límite cuando ya integraste.

Eso no contradice la regla 3 de más abajo. Lo que nunca se bloquea es la **emisión**
por exceder cuota; esto no es un exceso de uso, es una superficie que el plan no
incluye. Emitir desde el panel sigue sin bloquearse nunca, y el excedente se factura
igual.

## Regla 1 · `CUIT activo` es el que emitió, no el que aprovisionaste

Un CUIT cuenta en el período **sólo si emitió al menos un comprobante autorizado**.
Cargar un contribuyente y dejarlo dormido **no cuesta nada**.

> [!TIP]
>
> Para una plataforma con tenants que entran y salen, esto es la diferencia
> entre pagar por lo que se usa y pagar por slots vacíos.

> [accordion] La medición, y por qué el contador no se puede ensuciar
>
> Sobre la misma organización, a medida que aparecían emisiones autorizadas en
> producción:
>
> ```
> sin emisiones            cuitActivos: 0
> un CUIT emitiendo        cuitActivos: 1
> dos CUIT emitiendo       cuitActivos: 2
> ```
>
> Y `cuitActivos` se **deriva por consulta**, nunca se aprovisiona: no hay un contador
> que alguien pueda dejar mal.

## Regla 2 · En Plataforma el cupo va a un pozo común

Cada CUIT activo suma **150 comprobantes a una bolsa de la organización**. No es un
límite por tenant: es un límite compartido que crece con la cantidad de tenants que
facturan.

> [!TIP]
>
> Eso es lo que hace que la misma grilla sirva a un monotributista y a una
> plataforma con 300 tenants: **un monotributista es una plataforma con N=1.**

> [accordion] La medición: el límite se mueve con los CUIT activos
>
> En `GET /v1/consumo`, cambiando sólo la cantidad de CUIT activos:
>
> ```
> 1 CUIT activo   →  "limite": 150,  "cuitActivos": 1
> 2 CUIT activos  →  "limite": 300,  "cuitActivos": 2
> ```
>
> Y la cabecera de la emisión dice lo mismo, con dos CUIT activos:
>
> ```
> X-Cuota-Limite: 300
> X-Cuota-Usada: 1005
> X-Cuota-Restante: 0
> X-Cuota-Excedente-Unitario: ARS 15.00
> ```

## Regla 3 · La cuota es blanda. Nunca se bloquea una emisión

**Ésta es la que más conviene saber antes de integrar**, y está medida.

![Pedís una emisión habiendo pasado el límite del plan, se emite igual con CAE real, y el excedente se factura en la factura del mes.](https://mintcdn.com/emissa/4QpgM24I6Fz3ej59/images/diagramas/cuota-blanda.light.svg?fit=max\&auto=format\&n=4QpgM24I6Fz3ej59\&q=85\&s=1b76d12386c0ea243e52137484b8c31d)

![](https://mintcdn.com/emissa/4QpgM24I6Fz3ej59/images/diagramas/cuota-blanda.dark.svg?fit=max\&auto=format\&n=4QpgM24I6Fz3ej59\&q=85\&s=882676695c13869ac699e7002173f2a2)

Excederse de la cuota no frena nada: agrega un renglón a la factura

> [!WARNING]
>
> Es una decisión, no un olvido: **facturar es una obligación legal**, el costo
> marginal es cero, y en Plataforma el bloqueado no sería tu cliente sino
> terceros que no firmaron nada con nosotros.

> [accordion] La medición: 1002 comprobantes contra un límite de 1000
>
> ```
> HTTP 201
> X-Cuota-Limite: 1000
> X-Cuota-Usada: 1002
> X-Cuota-Restante: 0                        ← nunca negativo
> X-Cuota-Excedente-Unitario: ARS 25.00      ← aparece SÓLO si te excediste
>
> status: AUTHORIZED · cae: 86300697337704 · comprobante: 0001-00000138
> ```
>
> Se emitió igual, con CAE real.

### Lo que sí es duro

| Mecanismo | ¿Duro? | Qué pasa |
| - | - | - |
| Rate limit por segundo/minuto | **Sí** | `429`. Protege contra un loop roto |
| Cuota mensual | **No** | Se emite igual y se factura el excedente al unitario publicado |
| Mora sostenida | **Sí** | Suspensión, con 15 días de aviso. **Única causal de bloqueo** |

> [!NOTE]
>
> **Excedente ≠ mora.** Pasarte de la cuota es una línea más en la factura del
> mes. El ciclo completo está en [cómo se te cobra](https://www.emissa.com.ar/docs/guias/como-se-te-cobra.md).

## Las cabeceras de cuota, en cada emisión

| Cabecera | Qué dice |
| - | - |
| `X-Cuota-Limite` | Incluidos en el período, o `ilimitado` |
| `X-Cuota-Usada` | Comprobantes autorizados del período, éste incluido |
| `X-Cuota-Restante` | Nunca negativo |
| `X-Cuota-Reinicio` | ISO 8601 del primer instante del período siguiente |
| `X-Cuota-Excedente-Unitario` | **Sólo si te excediste**: a qué precio se factura cada uno |

> [!TIP]
>
> **Logueá `X-Cuota-Restante`** y vas a ver el excedente venir con semanas de
> anticipación, sin consultar nada.

> [accordion] Por qué el excedente lleva la moneda adelante
>
> Viene como `ARS 25.00`, no como un número pelado. Es a propósito: hasta el
> 2026-09-03 esta cabecera decía `USD 0.0120` mientras el cobro ya era en pesos, y un
> valor sin moneda no deja detectar ese desacople.
>
> Hoy es siempre `ARS`, y si algún día no lo fuera, lo vas a leer en la cabecera y no
> en un changelog.

## `GET /v1/consumo`

El detalle completo, con el desglose por CUIT.

> [accordion] La respuesta real
>
> ```json theme={null}
> {
>   "period": "2026-07",
>   "plan": "PLATAFORMA",
>   "organization": {
>     "limite": 300,
>     "usada": 1005,
>     "restante": 0,
>     "excedente": 705,
>     "excedenteUnitarioArs": 15,
>     "cuitActivos": 2,
>     "reinicio": "2026-08-01T03:00:00.000Z"
>   },
>   "taxpayers": [
>     {
>       "taxpayerId": "cms6p8guh0008urdcg83j2sun",
>       "cuit": "20437136697",
>       "billable": 1002,
>       "total": 1005
>     },
>     {
>       "taxpayerId": "tp-6-6-b",
>       "cuit": "30500001735",
>       "billable": 3,
>       "total": 3
>     }
>   ]
> }
> ```

Mirá la diferencia entre `billable` y `total` en el primer CUIT: **1002 facturables
sobre 1005 operaciones**. Los tres de diferencia son emisiones de homologación —
contadas, no cobradas.

El desglose por contribuyente existe porque una plataforma necesita saber el consumo
de cada tenant, para su propio recobro o para poner sus propios límites.

### El consumo no se puede corregir "a mano", y está enforzado

Cada operación deja un **evento crudo inmutable**, y las cuotas se calculan encima.
No hay un contador que alguien pueda incrementar o retocar.

> [!TIP]
>
> Para vos eso significa dos cosas: **tu factura es auditable hacia atrás**, y
> si alguna vez cambia la unidad de cobro, se puede recalcular el histórico y
> mostrarte los dos números antes de anunciar nada.

> [accordion] No es una convención: la base lo rechaza
>
> Intentando corregir eventos directamente en Postgres:
>
> ```
> UPDATE "UsageEvent" SET result='RECHAZADO' WHERE ...
> ERROR: UsageEvent es inmutable (MODELO-COMERCIAL.md §5, regla 1): UPDATE rechazado.
>        Las cuotas se calculan sobre los eventos, no se corrigen encima.
>
> DELETE FROM "UsageEvent" WHERE ...
> ERROR: UsageEvent es inmutable (...): DELETE rechazado.
> ```

## El paso a producción, como es

> [!WARNING]
>
> **Emitir en `PRODUCCION` está habilitado.** Hasta la 5.10 esta guía decía lo
> contrario, y era cierto: había un 422 `ARCA_PRODUCTION_NOT_SUPPORTED` puesto a
> propósito. Se levantó, y con él se fue el código de error.
>
> **Lo que emitís en `PRODUCCION` es un comprobante fiscal real.** Entra en tus
> registros ante ARCA, pesa en tu declaración y no se borra: se revierte con una
> nota de crédito. Para probar está `HOMOLOGACION`, que también emite con CAE real
> y no tiene consecuencia fiscal.

Los controles que **sí** quedan, y que son los que vas a ver:

| Clave | Contribuyente | Credencial | Respuesta |
| - | - | - | - |
| `emi_test_` | `PRODUCCION` | — | `403 API_KEY_WRONG_MODE` |
| `emi_live_` | `PRODUCCION` | sin cargar | `400 CREDENTIALS_REQUIRED` |
| `emi_live_` | `PRODUCCION` | cargada | emite, o `422` si ARCA rechaza |

> [!TIP]
>
> Un integrador que prueba con su clave de sandbox **nunca llega a emitir en
> producción por accidente**: ve un `403` que habla de modos y no de ambientes.

Y algo que Emissa **no** verifica, a propósito: que tengas el certificado
productivo, el punto de venta de tipo "Factura Electrónica – Web Service" y el
servicio autorizado en ARCA. Esas tres cosas viven del lado del organismo, y si
falta alguna te lo dice ARCA con el motivo concreto. Una guarda nuestra sólo podría
adivinar.

### Qué hace falta para producción

Tres cosas, y dos son trámites tuyos ante ARCA:

**1. Un certificado productivo**

Distinto del de homologación.

**2. El punto de venta dado de alta para «Factura Electrónica – Webservice»**

En el ambiente productivo. Ver [qué es un punto de
venta](https://www.emissa.com.ar/docs/guias/punto-de-venta.md).

**3. Que la emisión en PRODUCCION esté habilitada del lado de Emissa**

Desde la 5.10, lo está.

> [!TIP]
>
> Mientras tanto, **todo lo que construyas contra el sandbox sirve sin
> cambios**: es la misma API, los mismos códigos de error y el mismo circuito.
> Lo único que cambia es el ambiente del contribuyente y el modo de la clave.

> [accordion] La consecuencia que nadie adivinaría
>
> La cuota **sólo cuenta comprobantes de `PRODUCCION`**. Mientras producción estuvo
> deshabilitada eso quería decir que no había forma de consumir cuota emitiendo, y la
> única manera de llegar a un excedente era sembrar eventos a mano — que es exactamente
> cómo se midió la regla 3.
>
> **Desde la 5.10 eso cambió:** emitir en producción consume cuota de verdad. El
> sandbox sigue siendo gratis e ilimitado en lo que a cuota respecta, así que la
> frontera entre «probar» y «pagar» es la misma que la frontera entre «no tiene
> consecuencia fiscal» y «sí la tiene». No es una coincidencia: es el mismo límite
> mirado desde dos lados.

## Qué sigue

> [card] [Cómo se arma una integración](https://www.emissa.com.ar/docs/guias/integracion.md)
>
> El recorrido completo, de punta a punta.

> [card] [Cómo se te cobra](https://www.emissa.com.ar/docs/guias/como-se-te-cobra.md)
>
> El ciclo del día 1 y los dos caminos de pago.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.