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
sucursalSíNú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_comprobanteSíCó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
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
itemsSíLí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

Objeto cliente​

CampoRequeridoDescripciónTipo
cliente.tipo_docSíTipo de documento. Ej.: 2 RUT, 3 CI.Int
cliente.cod_pais_docSíCódigo país ISO 3166-1 alfa-2. Para Uruguay: UY.String
cliente.nro_docSíDocumento sin puntos ni guiones.String
cliente.denominacionSíNombre 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
cantidadSíCantidad mayor a 0.Decimal
conceptoSíNombre del producto o servicio. Máximo 80 caracteres.String
precioSíPrecio unitario mayor a 0. Hasta 6 decimales.Decimal
unidadSíUnidad de medida. Si no corresponde, usar N/A.String
indicador_facturacionSíCó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_facturacionSíCódigo de tratamiento fiscal al que aplica el descuento o recargo.Int
tipo_movimientoSíD para descuento, R para recargo.String
tipo_desc_recSíTipo 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
glosaSíTexto descriptivo del descuento o recargo. Máximo 50 caracteres.String
valorSíImporte 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",
"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",
"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

Empresa suspendida​

La creación de nuevos comprobantes requiere que la empresa emisora indicada en X-Emisor no esté suspendida. Si está suspendida, la API devuelve HTTP 400 con el motivo en detalle. El rechazo no crea un comprobante ni consume numeración.

La suspensión puede deberse a distintos motivos; por ejemplo, falta de pago del servicio. El mensaje en detalle informa el motivo o las indicaciones de contacto correspondientes.

Si id_externo corresponde a un comprobante ya existente de la misma empresa emisora, se devuelve el resultado existente, sin crear otro comprobante, incluso si la empresa está suspendida. Las consultas de comprobantes existentes siguen disponibles.

Consultá el formato de respuesta y las acciones sugeridas.