Up to 200 documents per month
Gs. 1,000,000 per year (2 months free)
Stamp from the Odoo invoice and let ECAV sign, send and reconcile with the DNIT. A module for Odoo 17 connected to the ECAV SIFEN gateway, the same one ECAV's own Odoo systems already use in production.
Odoo does not talk to the DNIT on its own. The ecav_sifen_client module builds the document from the invoice, on top of the Paraguayan localization l10n_einvoice_py, sends it to the ECAV SIFEN gateway and applies the result that comes back. The gateway signs it with your certificate, sends it to the DNIT and stores the CDC, the signed XML and the KuDE.
For the person invoicing, the flow is:
When several documents are sent together they go in a single request, so the gateway groups them into the same SIFEN batch.
Besides stamping, from Odoo you can void a document with the “Anular” button and its reason, and send the other SIFEN events (range invalidation, buyer confirmation, transport data and receiver events). Each event is logged with its result, because a document can have several over its life.
What we do not cover today: e-Kuatia'i, the DNIT's simplified regime, and export or import invoices. If you are not sure e-Kuatia'i is enough for you, we explain it on the SIFEN page.
Before stamping you need the DNIT requirements sorted out: .p12 certificate, enablement, timbrado and CSC. In Odoo they are loaded like this:
sk_test_ or sk_live_) go on the company's “ECAV API” page.Certificates expire, so a daily cron warns you before the .p12 runs out.
The invoice state in Odoo comes from the state the gateway reports. The SIFEN code only describes what happened; it does not decide the state. These are the states:
| State in Odoo | What it means |
|---|---|
| In process | Queued, not signed yet. |
| Signed | It already has a CDC and XML; the DNIT verdict is still missing. |
| Authorized | Approved by SIFEN. It generates the KuDE. |
| Approved with remarks | Valid, with a remark from the DNIT. It generates the KuDE. |
| Rejected | SIFEN rejected it; the chatter shows the code and the explanation. |
| Cancelled | Voided or invalidated. |
| Error | Technical error, with no SIFEN verdict. |
Two safeguards prevent the costliest mistake, issuing the same number twice. Odoo does not let you reset to draft an invoice the DNIT already holds in progress or approved: you fix it with a credit note or the cancellation event. And once the CDC is issued, its security code is kept: confirming the invoice again does not produce a different CDC for the same number. Resending a CDC the DNIT already knows is rejected as a duplicate and can end with the issuer RUC being blocked.
If the rejection comes from your own data (a receiver detail, an amount), you fix it and issue again. The module's response catalog carries 350 SIFEN codes with their explanation.
Each approved invoice has its signed XML and its KuDE as a PDF, the graphical representation of the document, downloadable from the invoice itself. The DNIT result lands in the chatter with an icon per category (success, pending, error, informational), so the history of each invoice reads without leaving Odoo.
On the customer form, the “Consultar en el padrón” button brings the name, check digit and status from the DNIT public registry, the same one behind the free RUC lookup tool. Payments also get a PDF receipt that Odoo builds and that is not a tax document.
The module ships three access profiles. The User prepares documents and sees the SIFEN state, but does not issue. The Issuer adds the “Timbrar” and “Anular” buttons and the bulk actions. The Administrator adds the fiscal configuration. That way you separate who enters invoices from who sends them to the DNIT.
To test, set the company environment to test and use an sk_test_ key: the gateway sends to the DNIT test environment and nothing you issue there has fiscal effect. When everything works, you switch to production with an sk_live_ key. The first month of ECAV SIFEN is free and asks for no card.
If your system is not Odoo, or if another system (a point of sale, an e-commerce site) has to issue without going through Odoo, use the SIFEN API: it is the same gateway the module uses. If you do not use Odoo yet and want a full ERP, look at ECAV ERP, the Odoo ERP with Paraguayan localization. And if you do not need an ERP, the portal lets you issue with nothing to install.
The plans are those of ECAV SIFEN, by monthly document volume, with the first month free and no card. A document the DNIT rejects does not use up quota. There is more detail on pricing.
Up to 200 documents per month
Gs. 1,000,000 per year (2 months free)
Up to 500 documents per month
Gs. 2,000,000 per year (2 months free)
Unlimited documents (fair use) · VAT included
Gs. 3,000,000 per year (2 months free)
Fair use on Business: above 3,000 documents a month we reach out to make sure you are on the best plan.
ECAV's SIFEN modules are for Odoo 17.
The base l10n_einvoice and l10n_einvoice_py (Paraguayan localization), ecav_sifen_client (the SIFEN client) and ecav_api_client (the gateway connection and credentials).
No. The module only builds the document. Signing, sending to the DNIT and custody of the batch are done by the ECAV gateway. You load the certificate on the Odoo company.
The document stays in process and is not lost: the query cron asks again every 10 minutes, and the gateway retries when the DNIT is down.
Yes, with the “Anular” button and a mandatory reason. The cancellation event is sent to SIFEN within the deadline the DNIT sets.
Yes. With the environment on test and an sk_test_ key the gateway uses the DNIT test environment, and the first month is free.
From Gs. 100,000 a month depending on document volume, with the first month free. See the plans above and pricing.