Saltar al contenido principal

Crear CFE

Emite un CFE de cualquier tipo soportado por DGI. Si la creación es exitosa, la API devuelve los datos internos del comprobante, CAE, hash y URL para el código QR.

Endpoint

POST https://api-test.facturaelectronica.com.uy/comprobantes/crear
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
X-Emisor: 219999830019

Campos principales del request

CampoRequeridoDescripciónTipo
sucursalNúmero de sucursal DGI del emisor. Debe ser mayor a 0.Int
giro_emisorNoGiro o actividad comercial del emisor que se informa en el comprobante.String
tipo_comprobanteCódigo de CFE según tabla DGI. Ej.: 101 eTicket, 111 eFactura.Int
forma_pagoCondicional1 contado, 2 crédito.Int
monedaSí, excepto e-remitoCódigo ISO 4217. Ej.: UYU, USD, EUR.String
tipo_cambioNoSi se omite, se usa cierre BCU del día anterior a fecha_comprobante.Decimal
cod_montos_brutosCondicionalIndica cómo vienen expresados los montos de las líneas.Int
fecha_comprobanteNoPor defecto, hoy. Formato AAAA-MM-DD.Date
fecha_vencimientoNoFecha de vencimiento del comprobante.Date
clienteCondicionalObligatorio para eFactura, eBoleta de entrada y tickets mayores a 5.000 UI.Obj
itemsLíneas del comprobante.Array de objetos
referenciasCondicionalObligatorio para comprobantes de corrección, como notas de crédito o débito.Array de objetos
descuentos_recargosNoDescuentos o recargos globales aplicados al comprobante completo.Array de objetos
adendaNoTexto adicional u observaciones que se agregan al comprobante.Obj
id_externoNoToken de idempotencia. Si se repite con los mismos datos, devuelve el resultado original.String
codigo_tipo_caeNoSelector funcional del tipo de CAE a usar. No es el identificador del CAE.Int

Selección de tipo de CAE

El campo opcional codigo_tipo_cae permite indicar qué tipo de CAE debe usar la creación del comprobante.

Compatibilidad

Si codigo_tipo_cae viene omitido o null, la API mantiene el flujo actual de selección automática de CAE.

Campo nuevo

CampoRequeridoDescripciónTipo
codigo_tipo_caeNoSelector funcional del tipo de CAE a usar. No es un identificador de libreta o CAE.Int

Valores permitidos

ValorComportamiento
omitido / nullMantiene el flujo actual de selección automática.
0Fuerza CAE normal.
1Fuerza CAE especial Exonerada.
2Fuerza CAE especial IVA Mínimo.
3Fuerza CAE especial Monotributo.
4Fuerza CAE especial Monotributo MIDES.

Ejemplo: mantener flujo automático

{
"tipo_comprobante": 111,
"sucursal": 4
}

Comportamiento: usa la lógica anterior, sin cambios.

Ejemplo: forzar CAE normal

{
"tipo_comprobante": 111,
"sucursal": 4,
"codigo_tipo_cae": 0
}

Selecciona solo CAEs normales.

Si no hay CAE normal disponible, la creación falla. No cae automáticamente en un CAE especial.

Ejemplo: forzar CAE exonerado

{
"tipo_comprobante": 111,
"sucursal": 4,
"codigo_tipo_cae": 1
}

Selecciona solo CAEs especiales de tipo Exonerada.

Validación

Valores válidos:

null, 0, 1, 2, 3, 4

Si se envía otro valor, la API devuelve un error de validación.

Ejemplo inválido:

{
"codigo_tipo_cae": 9
}

Si no hay CAE disponible

Si se pide un tipo específico y no hay libreta o CAE compatible, la API responde con el error actual de creación indicando el código solicitado.

Ocurrió un error al intentar obtener serie/número para el comprobante o no se encuentra disponible para el código de tipo de CAE solicitado [1].
Importante

codigo_tipo_cae selecciona el tipo funcional de CAE que la API debe usar. No representa el identificador de una libreta o CAE específico.

Objeto cliente

CampoRequeridoDescripciónTipo
cliente.tipo_docTipo de documento. Ej.: 2 RUT, 3 CI.Int
cliente.cod_pais_docCódigo país ISO 3166-1 alfa-2. Para Uruguay: UY.String
cliente.nro_docDocumento sin puntos ni guiones.String
cliente.denominacionNombre o razón social. Máximo 150 caracteres.String
cliente.correo_electronicoNoCorreo para envío de PDF. Puede contener varios separados por coma.String
cliente.direccionCondicionalObligatorio para eFactura de exportación.String
cliente.ciudadCondicionalObligatorio para eFactura de exportación.String
cliente.dep_prov_estadoCondicionalDepartamento, provincia o estado del receptor.String
cliente.paisCondicionalObligatorio para eFactura de exportación.String

Array items

CampoRequeridoDescripciónTipo
cantidadCantidad mayor a 0.Decimal
conceptoNombre del producto o servicio. Máximo 80 caracteres.String
precioPrecio unitario mayor a 0. Hasta 6 decimales.Decimal
unidadUnidad de medida. Si no corresponde, usar N/A.String
indicador_facturacionCódigo de tratamiento fiscal del ítem.Int
descuentoNoDescuento porcentual.Decimal
recargoNoRecargo porcentual.Decimal
descuento_mntNoDescuento en monto.Decimal
recargo_mntNoRecargo en monto.Decimal

Descuentos y recargos globales

El array descuentos_recargos permite informar descuentos o recargos aplicados al comprobante completo, no a una línea específica.

Diferencia con descuentos por ítem

Los campos descuento, recargo, descuento_mnt y recargo_mnt dentro de items afectan una línea puntual. En cambio, descuentos_recargos afecta el comprobante a nivel global.

CampoRequeridoDescripciónTipo
indicador_facturacionCódigo de tratamiento fiscal al que aplica el descuento o recargo.Int
tipo_movimientoD para descuento, R para recargo.String
tipo_desc_recTipo de valor informado: 1 monto fijo, 2 porcentaje.Int
codigoNoCódigo asociado al descuento o recargo. Si se informa, debe estar entre 1 y 999.Int
glosaTexto descriptivo del descuento o recargo. Máximo 50 caracteres.String
valorImporte o porcentaje del descuento/recargo, según tipo_desc_rec. Hasta 15 enteros y 2 decimales.Decimal

Valores de tipo_desc_rec

ValorSignificado
1Monto fijo
2Porcentaje

Ejemplo:

"descuentos_recargos": [
{
"indicador_facturacion": 3,
"tipo_movimiento": "D",
"tipo_desc_rec": 2,
"codigo": null,
"glosa": "Un descuento porcentual",
"valor": 10
},
{
"indicador_facturacion": 3,
"tipo_movimiento": "R",
"tipo_desc_rec": 1,
"codigo": 123,
"glosa": "Un recargo fijo",
"valor": 8
}
]

Adenda

El objeto adenda permite agregar texto adicional al comprobante. No modifica los totales ni el cálculo fiscal.

CampoRequeridoDescripciónTipo
adenda.textoNoObservaciones, mensajes comerciales, referencias internas u otro texto complementario.String

Ejemplo:

"adenda": {
"texto": "Gracias por su compra"
}

Ejemplo: emitir eTicket consumidor final

{
"giro_emisor": "SOFTWARE",
"sucursal": 1,
"tipo_comprobante": 101,
"forma_pago": 1,
"moneda": "UYU",
"cod_montos_brutos": 1,
"fecha_comprobante": "2019-02-18",
"items": [
{
"cantidad": 1,
"concepto": "Joystick Ergonomico",
"precio": 1356.3,
"indicador_facturacion": 3,
"unidad": "Un"
}
],
"adenda": {
"texto": "Gracias por su compra"
}
}

Ejemplo: emitir eFactura con receptor

{
"sucursal": 1,
"tipo_comprobante": 111,
"forma_pago": 1,
"moneda": "UYU",
"cod_montos_brutos": 1,
"fecha_comprobante": "2019-02-18",
"cliente": {
"tipo_doc": 2,
"cod_pais_doc": "UY",
"nro_doc": "219999830019",
"denominacion": "ACME S.A.",
"direccion": "RUTA 3",
"ciudad": "SAN JOSE DE MAYO",
"dep_prov_estado": "SAN JOSE",
"pais": "URUGUAY"
},
"items": [
{
"cantidad": 1,
"concepto": "Joystick Ergonomico",
"precio": 1356.3,
"indicador_facturacion": 3,
"unidad": "Un"
}
]
}

Respuesta de creación

{
"id": 488751,
"comprobante_tipo": 111,
"serie": "A",
"numero": 2209,
"importe_total": 1356.3,
"hash": "m9May0sG7BBzXWMPLdSrxOOGL6E=",
"cae_numero": 90180421560,
"cae_rango_inicio": 2001,
"cae_rango_final": 90000,
"cae_vencimiento": "2030-03-03T00:00:00",
"url": "https://www.efactura.dgi.gub.uy/consultaQR/cfe?..."
}
CampoDescripciónTipo
idIdentificador interno del comprobante en FEU.Int64
comprobante_tipoTipo de CFE emitido.Int
serieSerie asignada al comprobante.String
numeroNúmero fiscal asignado dentro de la serie.Int
importe_totalImporte total del comprobante emitido.Decimal
hashHash de seguridad del comprobante.String
cae_numeroNúmero de CAE utilizado.Int64
cae_rango_inicioInicio del rango autorizado por el CAE.Int
cae_rango_finalFin del rango autorizado por el CAE.Int
cae_vencimientoFecha y hora de vencimiento del CAE.DateTime
urlURL del QR o consulta asociada al comprobante.URL