Skip to main content
POST
Emitir un comprobante

Authorizations

X-API-Key
string
header
required

API key de integración. El modo va en el prefijo: emi_test_ opera contra homologación, emi_live_ contra producción. Después, 64 hexadecimales.

Headers

Idempotency-Key
string
required

Clave elegida por el cliente, única por operación (un UUID sirve). Reintentar con la misma clave y el mismo cuerpo devuelve el comprobante original sin emitir uno nuevo. Vive 7 días. Máximo 255 caracteres.

Maximum string length: 255
Example:

"pedido-8421"

X-Emissa-Producto
string

El producto que origina el pedido (inmos, por ejemplo). Opcional, sólo con API key. Formato ^[a-z0-9-]{1,32}$; otro valor da 400 INVALID_INPUT. Queda en el comprobante, en el consumo y en el registro de pedidos.

Con una key sin producto es sólo atribución: no autoriza ni restringe nada. Con una key atada a un producto el pedido se etiqueta con el de la key aunque no mandes la cabecera, y si mandás otro valor la respuesta es 403 API_KEY_PRODUCTO_DISTINTO.

Pattern: ^[a-z0-9-]{1,32}$
Example:

"inmos"

Body

application/json
taxpayerId
string
required

Contribuyente desde el que se emite. Tiene que estar entre los que alcanza tu credencial: si no, 403 API_KEY_INSUFFICIENT_PERMISSIONS.

Example:

"cmfa1b2c30000"

cbteTipo
enum<number>
required

CbteTipo de ARCA: 1 Factura A, 2 ND A, 3 NC A, 6 Factura B, 7 ND B, 8 NC B, 11 Factura C, 12 ND C, 13 NC C.

Available options:
1,
2,
3,
6,
7,
8,
11,
12,
13
Example:

1

concepto
enum<number>
required

1 productos, 2 servicios, 3 ambos. Con 2 o 3, serviceFrom, serviceTo y paymentDueDate son obligatorios.

Available options:
1,
2,
3
Example:

1

receiverDocTipo
enum<number>
required

80 CUIT, 86 CUIL, 96 DNI, 99 consumidor final.

Available options:
80,
86,
96,
99
Example:

80

receiverDocNro
string
required

Consumidor final sin identificar va con "0".

Maximum string length: 20
Example:

"30500010912"

receiverName
string
required

Razón social del receptor. Obligatoria en Factura A y no se puede inventar.

Maximum string length: 255
Example:

"Cliente SA"

receiverVatConditionId
enum<number>
required

CondicionIVAReceptorId, obligatorio desde la RG 5616: 1 RI, 4 exento, 5 consumidor final, 6 monotributo, 7 no categorizado, 8 proveedor del exterior, 9 cliente del exterior, 10 liberado ley 19.640, 13 monotributista social, 15 no alcanzado, 16 trabajador independiente promovido.

Available options:
1,
4,
5,
6,
7,
8,
9,
10,
13,
15,
16
Example:

1

issueDate
string<date>
required

CbteFch, en yyyy-mm-dd. Es un día, no un instante. ARCA sólo acepta una ventana alrededor de hoy y exige que la serie no retroceda.

Example:

"2026-07-26"

items
object[]
required

Hasta 250, que es el máximo que FECAESolicitar admite por pedido.

Required array length: 1 - 250 elements
externalReference
string

Tu identificador para este comprobante — el cobro, la orden, el ticket. Única por contribuyente y ambiente: reusarla devuelve 409EXTERNAL_REFERENCE_ALREADY_USED`` con el id del comprobante que ya existe, así que sirve para preguntar "¿ya emití el de mi cobro X?".

Se busca con GET /v1/invoices/search?externalReference=.

No vence, a diferencia de Idempotency-Key, que dura 7 días y resuelve otra cosa: el reintento de un pedido.

Maximum string length: 64
Pattern: ^[A-Za-z0-9._:-]{1,64}$
Example:

"COBRO-8842"

receiverAddress
string

Domicilio del receptor, para el comprobante impreso. No viaja a ARCA y no afecta la autorización.

Maximum string length: 255
Example:

"Av. Santa Fe 1234, CABA"

currency
string
default:PES

MonId. Con PES la cotización tiene que ser 1.

Maximum string length: 3
Example:

"PES"

exchangeRate
number

MonCotiz.

Example:

1

saleCondition
enum<string>

Condición de venta, impresa en el comprobante. No viaja a ARCA: FECAESolicitar no tiene campo para esto, y la RG 1415 lo exige en el papel.

Si no se manda, el comprobante sale sin esa línea — no se supone CONTADO, porque suponerlo imprimiría un dato falso sobre una venta a plazo.

Available options:
CONTADO,
CUENTA_CORRIENTE,
TARJETA_DE_CREDITO,
TARJETA_DE_DEBITO,
CHEQUE,
TRANSFERENCIA,
OTRA
Example:

"CONTADO"

serviceFrom
string<date>

Obligatorio con concepto 2 o 3.

Example:

"2026-07-01"

serviceTo
string<date>

Obligatorio con concepto 2 o 3.

Example:

"2026-07-31"

paymentDueDate
string<date>

Vencimiento del pago. Obligatorio con concepto 2 o 3.

Example:

"2026-08-10"

taxes
object[]

Percepciones, impuestos internos, municipales. Nunca IVA.

Maximum array length: 20
associations
object[]

CbtesAsoc — comprobantes que éste referencia. Es lo que convierte una nota de crédito en la anulación de una factura concreta.

Maximum array length: 20

Response

Comprobante emitido, o el original si fue un reintento.

id
string
required

Id interno de Emissa. No es el número del comprobante: es lo que se usa en GET /v1/invoices/{id} y en la anulación.

Example:

"cmft8x2k30001"

taxpayerId
string
required

Bajo qué contribuyente se emitió.

Example:

"cmfa1b2c30000"

externalReference
string | null
required

La referencia de tu sistema, tal como la mandaste al emitir. (5.7) null si no mandaste ninguna, que es el caso de todo lo emitido desde el panel y de todo lo anterior a la 5.7.

Es única por contribuyente y ambiente: reusarla al emitir devuelve 409 EXTERNAL_REFERENCE_ALREADY_USED, con el id del comprobante que ya existe en details. Se busca con GET /v1/invoices/search?externalReference=.

Example:

"COBRO-8842"

environment
enum<string>
required

Contra qué ambiente de ARCA se emitió. Un comprobante de HOMOLOGACION no tiene validez fiscal, aunque traiga CAE.

Available options:
HOMOLOGACION,
PRODUCCION
Example:

"HOMOLOGACION"

origin
enum<string> | null
required

Por dónde entró el comprobante: API lo emitió una integración con API key, PANEL se cargó a mano desde el panel. Se estampa al emitir y no cambia.

null en los comprobantes emitidos antes de que se registrara el origen. No quiere decir PANEL: quiere decir que no se sabe, y ponerles un valor sería inventar el dato.

Available options:
API,
PANEL
Example:

"API"

producto
string | null
required

El producto que originó el pedido, de la cabecera X-Emissa-Producto que mandó quien emitió. Se estampa al emitir y no cambia: un reintento idempotente con otra etiqueta no lo reescribe.

null si no se mandó la cabecera, si se emitió desde el panel o si el comprobante es anterior a la etiqueta.

Example:

"inmos"

cbteTipo
number
required

El tipo de comprobante según ARCA: 1 factura A, 6 factura B, 3 nota de crédito A, 8 nota de crédito B. Es el campo autoritativo; cbteTipoNombre y letra se derivan de él.

Example:

1

cbteTipoNombre
string | null
required

La etiqueta de cbteTipo. null si el código no está en el catálogo local — el número igual es correcto.

Example:

"FACTURA_A"

letra
string | null
required

La letra, que sale de cbteTipo. Depende de la condición frente al IVA de emisor y receptor: entre responsables inscriptos es A, a consumidor final es B.

Example:

"A"

concepto
number
required

Qué se factura: 1 productos, 2 servicios, 3 ambos. Con 2 o 3 ARCA exige servicePeriod, y con 1 lo rechaza.

Example:

1

conceptoNombre
string | null
required

La etiqueta de concepto.

Example:

"PRODUCTOS"

salePoint
number
required

El punto de venta con el que se emitió. Cada punto de venta lleva su propia numeración correlativa.

Example:

1

number
number
required

El número correlativo dentro del punto de venta. Lo asigna Emissa pidiéndole a ARCA el último autorizado: no lo elige el cliente.

Example:

7

comprobante
string
required

Punto de venta y número, como se lee un comprobante argentino

Example:

"0001-00000007"

issueDate
string | null
required

Fecha del comprobante, YYYY-MM-DD. ARCA no acepta cualquier fecha: tiene una ventana alrededor del día de hoy y exige que la numeración sea cronológica dentro del punto de venta.

Example:

"2026-07-26"

emitter
object
required

Quién emite, congelado al momento de emitir.

receiver
object
required

A quién se le factura, congelado al momento de emitir.

currency
string | null
required

Moneda según ARCA: PES pesos, DOL dólares. Con una moneda distinta de PES hace falta exchangeRate.

Example:

"PES"

exchangeRate
string
required

Cotización de la moneda contra el peso. 1 cuando es PES; con otra moneda es la que ARCA va a usar para convertir.

Example:

"1"

totals
object
required

Los totales. totalAmount tiene que cerrar exacto.

vatBreakdown
object[]
required

El IVA por alícuota. Vacío en los comprobantes sin IVA discriminado (letra B o C).

taxes
object[]
required

Los tributos que no son IVA. Vacío si no hay ninguno.

servicePeriod
object | null
required

null en los comprobantes de productos (concepto 1).

saleCondition
string | null
required

La condición de venta tal como se mandó al emitir. null en los comprobantes emitidos sin informarla — no se supone CONTADO.

Example:

"CUENTA_CORRIENTE"

saleConditionNombre
string | null
required

La etiqueta de saleCondition, que es la que va impresa en el comprobante. null cuando no se informó, y también cuando el valor guardado no está en el catálogo.

Example:

"Cuenta corriente"

status
enum<string>
required

En qué quedó. AUTHORIZED es el único con validez fiscal. REJECTED: ARCA lo rechazó y no hay CAE. PENDING y UNKNOWN: no se sabe si ARCA lo autorizó —se cortó la comunicación— y hay que reconciliar con POST /v1/invoices/{id}/reconcile antes de reintentar, o se emite dos veces. CANCELLED: se anuló con una nota de crédito.

Available options:
AUTHORIZED,
REJECTED,
PENDING,
UNKNOWN,
CANCELLED
Example:

"AUTHORIZED"

cae
string | null
required

El CAE. null mientras el comprobante no esté autorizado.

Example:

"75123456789012"

caeExpiresAt
string | null
required

Hasta cuándo vale el CAE, YYYY-MM-DD. Es la fecha límite para entregar el comprobante al receptor, no para emitirlo: pasada esa fecha el comprobante sigue siendo válido pero se entregó tarde.

Example:

"2026-08-05"

cancelledByInvoiceId
string | null
required

Id de la nota de crédito que anuló este comprobante.

associations
object[]
required

A qué comprobantes hace referencia. Una nota de crédito sin esto no anula nada. Vacío en una factura.

optionals
object[]
required

Campos opcionales de ARCA, que dependen del régimen. Vacío en el caso corriente.

observations
object[]
required

Lo que ARCA observó junto con el CAE. No son errores: el comprobante se autorizó igual. Tratarlas como fallo hace creer que la emisión no salió.

rechazoArca
object | null
required

Por qué ARCA rechazó el comprobante. Sólo si status es REJECTED; null en cualquier otro estado. Es un rechazo fiscal, no un error de Emissa: ARCA contestó y dijo que no. Los textos son los de ARCA, literales, y sirven para que quien emite corrija el dato y reintente.

Con la misma forma que details.arca del error ARCA_WSFEV1_REJECTED y que data.rechazoArca de invoice.resolved. Un REJECTED con las dos listas vacías es un comprobante que el reconciliar no encontró en ARCA.

items
object[]
required

El detalle. No viaja a ARCA: se guarda para imprimir y para que el integrador recupere lo que mandó.

createdAt
string
required

Cuándo se creó el registro en Emissa, en UTC. No es issueDate: la fecha del comprobante es un dato fiscal y ésta es de auditoría.

Example:

"2026-07-26T18:30:00.000Z"

customer
object

La ficha del cliente guardada, con su estado actual. Difiere de receiver si el cliente cambió después de emitir.

arcaMetadata
object

Crudo de la respuesta de ARCA. Diagnóstico, no contractual.