Ir al contenido

Facturación Electrónica OSE - Perú

Technical name: l10n_pe_cs_edi

Name
Facturación Electrónica OSE - Perú
Summary
Mejoras a la facturación electrónica de Odoo para Perú y conexión con Nubefact OSE
Description
Mejoras a la facturación electrónica de Odoo para Perú y conexión con Nubefact OSE: - Mejoras a detracciones - Mejoras a la generación de documentos UBL 2.1 - Soporte para facturas, boletas, notas de crédito y débito
Author
Cloudia
Copyright
Copyright (c) 2025-Present Cloudia Systems S.A.C.
License
OPL-1
Version
18.0.1.7
Dependencies
  • sale
  • account_debit_note
  • l10n_pe_reports
  • l10n_pe_cs_api_partner

1. Configuration

CloudiaFact OSE

  1. Open ContabilidadConfiguraciónAjustes.
  2. In Facturación Electronica Peruana, set Proveedor de firma to CloudiaFact.
  3. For tests, keep Entorno de prueba checked. The module fills Usuario SOL with the public SUNAT test user MODDATOS and makes user/password readonly while test + CloudiaFact are on.
  4. In production, uncheck the test flag and enter your real Usuario SOL / Clave SOL and Certificado (PE).
CloudiaFact signature provider in Accounting settings
CloudiaFact sends UBL 2.1 XML to Nubefact OSE (demo or production). Do not use IAP/Compras dentro de la aplicación if you must go through this OSE.

Purchase journals

On each purchase journal, Configuración avanzada:

  1. Restrict Tipos de documentos admitidos (América Latina) to the LATAM types that journal may use.
  2. Tick Permitir en el informe de compras de PLE 8.1/8.2 (ahora RCE 8.4/8.5) when the journal should enter those purchase reports.

New PE purchase journals default to types 01, 07, 08, 14 and the PLE flag on. Existing PE purchase journals receive the same defaults when the module is installed.

Purchase journal document type control and PLE flag
Vendor bills on this journal can only use the tagged document types. Untagged journals are excluded from PLE 8.1/8.2 (RCE 8.4/8.5) TXT exports.

Free invoices: pick fiscal position Transferencia Gratuita on the customer invoice (Otra Información). The module creates this position (it does not auto-apply).

2. User instructions

Send a customer invoice to the OSE

  1. Create a customer factura, boleta, credit note or debit note as usual.
  2. Check Tipo de operación (for example [0101] Venta interna).
  3. Post. Electronic invoicing runs with the rest of Odoo PE EDI through CloudiaFact.
  4. When the OSE accepts the XML, Facturación electrónica shows Enviado.
Posted customer invoice sent to CloudiaFact OSE
Posted invoice with Facturación electrónica: Enviado, inverse rate 1 USD = … PEN, and Solicitar la cancelación de EDI. Extra PE fields are on Facturación Electrónica Peruana.

Cancel a sent document

  1. On a posted invoice that is Enviado, use Solicitar la cancelación de EDI.
  2. Enter Razón de cancelación and complete the two-step Cloudia OSE void (same flow as SUNAT/Digiflow cancel).

Only request a cancel when you truly need to void a sent document. The button is on the sent invoice; do not use it just to test.

Customer portal ZIP

When Facturación electrónica is Enviado, the customer portal invoice page shows Descargar el archivo ZIP de EDI (XML + CDR).

Inverse exchange rate

  1. On invoices in USD, EUR or GBP vs company PEN, the form shows 1 USD = x.xxxxxx PEN (not Odoo’s default inverted rate).
  2. Credit notes copy the origin invoice rate. Debit notes from the debit-note wizard do the same.

Due date in draft

Fecha de vencimiento is editable while the move is Borrador and readonly after Publicado.

Credit notes: reversed entry

Customer and vendor credit notes show Asiento Revertido pointing at the origin invoice.

Operation type and detracciones

Tipo de operación is a filterable selection. Withhold types appear only when all of these are true:

  1. At least one invoice line has a product with detracción percentage greater than 0.
  2. The tax amount in company currency is greater than 0.
  3. The invoice total in company currency is at least 700.

Then the list is limited to [1001] Operación sujeta a detracción, [1002] hidrobiológicos, [1003] transporte de pasajeros and [1004] transporte de carga (defaults to 1001). If those conditions are not met, a 1001–1004 value falls back to [0101] Venta interna.

Factura gratuita

  1. Set Posición fiscal to Transferencia Gratuita.
  2. On Facturación Electrónica Peruana, Código de leyenda / Leyenda lock to TRANSFERENCIA GRATUITA DE UN BIEN Y/O SERVICIO PRESTADO GRATUITAMENTE (catalog 1002).
  3. Invoice line taxes are restricted to the free-tax group. Clearing the fiscal position unlocks the legend and restores normal taxes.
Free-taxed invoice with locked SUNAT legend
Legend locked after choosing Transferencia Gratuita. Line taxes only accept free taxes.

Credit note reason 13 (quotes)

  1. On a posted invoice, open Nota de crédito.
  2. Set Razón del crédito to Corrección del importe neto pendiente y/o de la fecha o fechas de vencimiento… (catalog 13).
  3. The Cotizaciones page lists Número de Cotización, Fecha Vencimiento and Monto (prefilled from receivable installments).
  4. Confirming creates a nota de crédito with a description line Corrección de importe y/o fecha de vencimiento plus those quote lines. Use Descartar if you only needed to inspect the page.
Credit note wizard Quotes page for reason 13
Reason 13 unlocks Cotizaciones. Do not click Revertir unless you intend to create the credit note.

Vendor bills: document type and number

  1. Tipo de Documento must be one of the journal’s allowed LATAM types. Otherwise Odoo raises: El tipo de documento … no está permitido en el diario …
  2. For PE types 01, 03, 07 and 08, the number is rewritten to spaceless SERIE-CORRELATIVO (8-digit correlative). Short series get the document-type letter; a duplicated prefix after stripping spaces is dropped. Example: F E01-311FE01-00000311.
  3. UBL XML import of a vendor bill applies the XML ID through the same normalizer.

PLE purchase TXT (RCE 8.4 / 8.5)

PLE 8.1 and 8.2 exports include only purchase journals with the flag above, and emit the series without spaces (so FE01-00000311 stays FE01, not a truncated value).

Invoice PDF

PE customer invoices and credit notes print with the Cloudia layout:

  1. Legal box: RUC, document type, spaceless number.
  2. SEÑORES (RUC partner) or CLIENTE; columns Código, Descripción, Cant., Unid., V/U, P/U, Importe.
  3. SON amount in letters; Cuota lines when payment is crédito; QR + digest when signed.
  4. Footer with portal URL and the SUNAT validator. Notes: referencia, pago, cancel reason, related document, refund reason, incoterm, legend.
Cloudia legal invoice PDF for a sent factura
Printed representation of F001-00000026: legal box, SEÑORES, line columns, SON, cuota, QR and SUNAT/portal footer.

Sales down payments

For PE companies, the down-payment wizard description is Anticipo (not “Down Payment”). Final invoices send those advances in the UBL as prepayments.

XML sent to CloudiaFact is UBL 2.1. Internal tagging (allowance charges, generator comment) is not a separate user workflow.

Facturación Electrónica OSE - Perú

Nombre técnico: l10n_pe_cs_edi

Nombre
Facturación Electrónica OSE - Perú
Resumen
Mejoras a la facturación electrónica de Odoo para Perú y conexión con Nubefact OSE
Descripción
Mejoras a la facturación electrónica de Odoo para Perú y conexión con Nubefact OSE: - Mejoras a detracciones - Mejoras a la generación de documentos UBL 2.1 - Soporte para facturas, boletas, notas de crédito y débito
Autor
Cloudia
Copyright
Copyright (c) 2025-Present Cloudia Systems S.A.C.
Licencia
OPL-1
Versión
18.0.1.7
Dependencias
  • sale
  • account_debit_note
  • l10n_pe_reports
  • l10n_pe_cs_api_partner

1. Configuración

CloudiaFact OSE

  1. Abra ContabilidadConfiguraciónAjustes.
  2. En Facturación Electronica Peruana, elija CloudiaFact como Proveedor de firma.
  3. Para pruebas, deje marcado Entorno de prueba. El módulo completa Usuario SOL con el usuario público de pruebas de SUNAT MODDATOS y deja usuario/clave de solo lectura mientras coinciden prueba + CloudiaFact.
  4. En producción, quite el entorno de prueba e ingrese su Usuario SOL / Clave SOL reales y el Certificado (PE).
Proveedor de firma CloudiaFact en Ajustes de Contabilidad
CloudiaFact envía XML UBL 2.1 a Nubefact OSE (demo o producción). No use IAP/Compras dentro de la aplicación si debe pasar por este OSE.

Diarios de compra

En cada diario de compra, pestaña Configuración avanzada:

  1. Restrinja Tipos de documentos admitidos (América Latina) a los tipos LATAM que ese diario puede usar.
  2. Marque Permitir en el informe de compras de PLE 8.1/8.2 (ahora RCE 8.4/8.5) si el diario entra en esos reportes de compras.

Los diarios de compra PE nuevos usan por defecto los tipos 01, 07, 08, 14 y el flag PLE activo. Los diarios PE existentes reciben lo mismo al instalar el módulo.

Control de tipos de documento y flag PLE en el diario de compras
Las facturas de proveedor de este diario solo admiten los tipos marcados. Sin el flag, el diario no entra en los TXT PLE 8.1/8.2 (RCE 8.4/8.5).

Facturas gratuitas: elija la posición fiscal Transferencia Gratuita en la factura (Otra Información). El módulo crea esta posición (no se aplica sola).

2. Instrucciones de usuario

Enviar una factura de cliente al OSE

  1. Cree la factura, boleta, nota de crédito o débito como siempre.
  2. Revise Tipo de operación (por ejemplo [0101] Venta interna).
  3. Publique. La facturación electrónica PE de Odoo sale por CloudiaFact.
  4. Cuando el OSE acepta el XML, Facturación electrónica queda en Enviado.
Factura de cliente publicada y enviada al OSE
Factura publicada con Facturación electrónica: Enviado, tasa inversa 1 USD = … PEN y Solicitar la cancelación de EDI. El resto de campos PE está en Facturación Electrónica Peruana.

Anular un documento ya enviado

  1. En una factura Publicado y Enviado, use Solicitar la cancelación de EDI.
  2. Indique la Razón de cancelación y complete la anulación en dos pasos de Cloudia OSE (el mismo flujo que SUNAT/Digiflow).

Use la cancelación solo para anular un documento realmente enviado. El botón ya aparece en la factura enviada; no lo pulse para probar.

ZIP EDI en el portal

Si Facturación electrónica está en Enviado, el portal del cliente muestra Descargar el archivo ZIP de EDI (XML + CDR).

Tipo de cambio inverso

  1. En facturas USD, EUR o GBP frente a PEN de la compañía, el formulario muestra 1 USD = x.xxxxxx PEN (no la tasa invertida de Odoo).
  2. Las notas de crédito copian el tipo de cambio de la factura origen. El asistente de nota de débito hace lo mismo.

Fecha de vencimiento en borrador

Fecha de vencimiento se puede editar en Borrador y queda de solo lectura después de Publicado.

Notas de crédito: asiento revertido

Las notas de crédito de cliente y proveedor muestran Asiento Revertido hacia la factura origen.

Tipo de operación y detracciones

Tipo de operación es una selección filtrable. Los tipos de detracción aparecen solo si se cumplen los tres:

  1. Alguna línea tiene un producto con porcentaje de detracción mayor que 0.
  2. El impuesto en moneda de la compañía es mayor que 0.
  3. El total en moneda de la compañía es al menos 700.

Entonces la lista se limita a [1001] Operación sujeta a detracción, [1002] hidrobiológicos, [1003] transporte de pasajeros y [1004] transporte de carga (por defecto 1001). Si no se cumplen, un valor 1001–1004 vuelve a [0101] Venta interna.

Factura gratuita

  1. Ponga Posición fiscal en Transferencia Gratuita.
  2. En Facturación Electrónica Peruana, Código de leyenda / Leyenda quedan fijos en TRANSFERENCIA GRATUITA DE UN BIEN Y/O SERVICIO PRESTADO GRATUITAMENTE (catálogo 1002).
  3. Los impuestos de línea se restringen al grupo gratuito. Al quitar la posición fiscal se libera la leyenda y vuelven los impuestos normales.
Factura gratuita con leyenda SUNAT bloqueada
Leyenda bloqueada al elegir Transferencia Gratuita. Las líneas solo admiten impuestos gratuitos.

Nota de crédito motivo 13 (cotizaciones)

  1. En una factura publicada, abra Nota de crédito.
  2. En Razón del crédito elija Corrección del importe neto pendiente y/o de la fecha o fechas de vencimiento… (catálogo 13).
  3. La pestaña Cotizaciones muestra Número de Cotización, Fecha Vencimiento y Monto (precargados desde las cuotas por cobrar).
  4. Al confirmar, la NC lleva una línea Corrección de importe y/o fecha de vencimiento más esas cotizaciones. Use Descartar si solo estaba revisando la pantalla.
Asistente de nota de crédito, pestaña Cotizaciones del motivo 13
El motivo 13 abre Cotizaciones. No pulse Revertir salvo que vaya a crear la nota de crédito.

Facturas de proveedor: tipo y número

  1. Tipo de Documento debe ser uno de los tipos LATAM permitidos del diario. Si no, Odoo muestra: El tipo de documento … no está permitido en el diario …
  2. Para tipos PE 01, 03, 07 y 08, el número se reescribe a SERIE-CORRELATIVO sin espacios (correlativo de 8 dígitos). Una serie corta recibe la letra del tipo; un prefijo duplicado tras quitar espacios se elimina. Ejemplo: F E01-311FE01-00000311.
  3. La importación UBL de una factura de proveedor aplica el ID del XML con el mismo normalizador.

TXT PLE de compras (RCE 8.4 / 8.5)

Los exportes PLE 8.1 y 8.2 solo incluyen diarios de compra con el flag anterior, y emiten la serie sin espacios (así FE01-00000311 queda FE01, no un valor recortado).

PDF de la factura

Las facturas y notas de crédito de cliente PE se imprimen con el layout Cloudia:

  1. Recuadro legal: RUC, tipo de documento, número sin espacios.
  2. SEÑORES (si el contacto es RUC) o CLIENTE; columnas Código, Descripción, Cant., Unid., V/U, P/U, Importe.
  3. SON en letras; líneas de Cuota si el pago es crédito; QR + digest cuando está firmado.
  4. Pie con URL del portal y el validador SUNAT. Notas: referencia, pago, motivo de cancelación, documento relacionado, motivo de emisión, incoterm, leyenda.
PDF legal Cloudia de una factura enviada
Representación impresa de F001-00000026: recuadro legal, SEÑORES, columnas de línea, SON, cuota, QR y pie portal/SUNAT.

Anticipos de venta

En compañías PE, la descripción del asistente de anticipo es Anticipo (no “Down Payment”). La factura final envía esos adelantos en el UBL como prepagos.

El XML hacia CloudiaFact es UBL 2.1. El etiquetado interno (cargos/descuentos, comentario de generador) no es un flujo de usuario aparte.