A build-to-order ERPNext app that stamps SAT-compliant CFDI 4.0 invoices through FacturAPI/PAC, validates the SAT catalogs, and handles complemento de pago and cancellation flows end to end. ECOSIRE builds, installs, and supports it after a scoping call. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $499.00 USD; request a quote for a scoped proposal.

A build-to-order ERPNext app that stamps SAT-compliant CFDI 4.0 invoices through FacturAPI/PAC, validates the SAT catalogs, and handles complemento de pago and cancellation flows end to end. ECOSIRE builds, installs, and supports it after a scoping call.
Aucun paiement maintenant. Ceci envoie une demande de devis à notre équipe — nous vous recontacterons par e-mail avec les tarifs et les prochaines étapes.
Any Mexican business running ERPNext quickly hits a wall at invoicing time. The SAT requires every Sales Invoice to be stamped as a CFDI 4.0 (Comprobante Fiscal Digital por Internet), with a certified PAC applying the digital seal, a valid uso CFDI, a matching regimen fiscal for both emisor and receptor, correct RFC formatting, and — for anything not paid on the spot — a separate Complemento de Pago (REP) when the money actually arrives. ERPNext core has no notion of any of this. Its Sales Invoice, Payment Entry, and Customer DocTypes were never designed for the SAT catalogs, so accountants end up double-keying every invoice into a portal or a third-party desktop tool, reconciling by hand, and hoping the cancellation window and acuse are handled correctly.
CFDI 4.0 XML stamping through FacturAPI acting as your certified PAC, triggered on Sales Invoice `on_submit` via `hooks.py` doc events
SAT catalog validation for `c_UsoCFDI`, `c_RegimenFiscal`, `c_FormaPago`, `c_MetodoPago`, and `c_ObjetoImp` enforced through link/select fields backed by `SAT Catalog` DocTypes
RFC validation with a pattern check for both emisor and receptor before any payload reaches the PAC
Complemento de Pago (REP) auto-generated from Payment Entry `on_submit` when `metodo_pago` is PPD, linked back to the source CFDI UUIDs
Full SAT cancellation flow with motivo de cancelacion (01–04) and substitution-UUID handling, exposed as a document action and whitelisted method
`CFDI Log` DocType recording one row per stamping attempt with UUID (folio fiscal), timestamp, status, error message, and returned XML/PDF
ECOSIRE builds a proper Frappe app (erpnext_mx_cfdi) that closes that gap by wiring ERPNext directly to FacturAPI, which acts as your certified PAC. We add the SAT-specific fields where they belong — custom fields and child DocTypes on Sales Invoice, Payment Entry, and Customer for uso_cfdi, regimen_fiscal, forma_pago, metodo_pago, objeto_impuesto, and RFC — plus new DocTypes such as CFDI Log (one row per stamping attempt with UUID, status, and the returned XML/PDF) and SAT Catalog records so c_UsoCFDI, c_RegimenFiscal, c_FormaPago, and c_ClaveProdServ values are validated against real allowed lists instead of free text. RFC format is checked with a validated pattern before anything is sent, so malformed tax IDs never reach the PAC.
Technically, the stamping is driven by hooks.py doc events. On Sales Invoice on_submit, a server-side handler assembles the CFDI 4.0 payload, calls FacturAPI over HTTPS, stores the returned UUID (folio fiscal), the sealed XML, and the PDF back on the document, and writes a CFDI Log entry — all inside idempotent, retry-safe logic so a network blip never produces a double-stamp. Payment Entry on_submit generates the Complemento de Pago automatically when metodo_pago is PPD. Cancellations follow the SAT motivo-de-cancelacion flow (01–04, including substitution UUID) exposed as a whitelisted method and a document action. Whitelisted REST methods let you stamp, fetch, or cancel programmatically; client scripts surface stamping status, the UUID, and one-click XML/PDF download in the Sales Invoice form; role-based permissions and a dedicated CFDI role profile keep stamping and cancellation limited to your fiscal team; and a scheduler event reconciles any invoice left in a pending or error state against FacturAPI so nothing silently falls out of sync.
Because this is build-to-order, you are not downloading a generic marketplace add-on and hoping it fits. After a short scoping call we confirm your PAC/FacturAPI account, your emisor certificates (CSD), your series/folios, your regimen fiscal, and the exact invoice and payment flows you use. We then build the app against your ERPNext version (Frappe/ERPNext v15 or v16), test it on a staging copy of your data with your real customers and product catalog, and only cut over to production after you sign off on UAT. Typical delivery is 2–4 weeks from confirmed scope, and you receive the full app source in a Git repository you own, so nothing about your compliance stack is a black box.
Needs every ERPNext Sales Invoice to become a SAT-compliant CFDI 4.0 without re-keying into a separate portal, with correct uso CFDI, regimen fiscal, and RFC validated before stamping.
Owns month-end close and SAT reconciliation; wants complemento de pago handled automatically, cancellations tracked with the right motivo, and a clean audit trail of every UUID and its status.
Runs the Frappe bench and wants a clean, versioned app with proper DocTypes, permissions, and whitelisted APIs — not brittle customizations — that upgrades cleanly on v15/v16.
Runs invoicing for one or several Mexican entities and needs FacturAPI-based stamping wired into ERPNext so filing stays compliant without buying yet another standalone facturacion tool.
Achetez la licence sur ecosire.com et téléchargez le ZIP de l'application Mexico CFDI E-Invoicing (FacturAPI) for ERPNext depuis le tableau de bord de votre compte.
Extrayez le ZIP dans le dossier d'applications de votre banc ou exécutez « bench get-app » avec le chemin d'accès à l'application extraite.
Exécutez `bench --site SITE_NAME install-app APP_NAME` suivi de `bench migrate` pour installer Mexico CFDI E-Invoicing (FacturAPI) for ERPNext et appliquer son schéma.
Ouvrez les paramètres de licence ECOSIRE sur votre site et activez votre clé de licence. Nécessite les applications gratuites ecosire_connect et ecosire_license_client.
| Critère | ÉCOSIRE | Construction personnalisée | Concurrent | Odoo natif |
|---|---|---|---|---|
| CFDI 4.0 stamping in ERPNext | Native to your Sales Invoice via FacturAPI/PAC on submit | Possible but you design and maintain the PAC integration | Sometimes, often for an older CFDI version or generic setup | |
| SAT catalog validation | uso CFDI, regimen fiscal, forma/metodo de pago validated against SAT catalogs | Depends entirely on what your developer builds | Partial; catalogs may be stale or free-text | |
| Complemento de pago (REP) | Auto-generated from Payment Entry for PPD, linked to source UUIDs | Must be specified and built from scratch | Varies; often manual or unsupported | |
| Cancellation flow | Full SAT motivo 01–04 with substitution UUID | Build-your-own; easy to miss substitution rules | Basic cancel, may lack motivo/substitution handling | |
| Fit to your business | Scoped to your entities, series, regimen, and flows | Fully custom but you carry all requirements risk | Generic — you adapt your process to the app | |
| Source ownership | Full app in a Git repo you own | You own it; you also maintain it alone | Usually closed or license-locked | |
| Support and updates | Post-go-live window plus optional SAT-update retainer | Only if you retain the original developer | Vendor-dependent, shared roadmap | |
| Delivery model | Build-to-order, tested on staging, UAT sign-off, 2–4 weeks | Long, variable; scope creep common | Instant install but generic fit |
This is build-to-order. Typical delivery is 2–4 weeks from confirmed scope. After a scoping call we finalize your PAC account, certificates, series/folios, and invoice flows, then build, test on staging, and cut over only after your UAT sign-off. Timeline depends on how many entities and payment flows you run.
No. ECOSIRE builds, installs, and supports it for your specific ERPNext setup. It is not an off-the-shelf Frappe Cloud download. You receive the full app source in a Git repository you own once it is delivered.
We build against your version — Frappe/ERPNext v15 or v16. We confirm the exact version during scoping and target it so the app installs cleanly on your bench and upgrades predictably.
Yes. FacturAPI acts as your certified PAC and stamps under your emisor certificates (CSD). You provide the FacturAPI account and CSDs; we wire ERPNext to it, load your SAT catalog values, and configure sandbox and live modes. We can advise on FacturAPI setup during scoping.
Yes. Payment Entry submission auto-generates the Complemento de Pago (REP) for PPD invoices and links it to the source CFDI UUIDs. Cancellations follow the SAT motivo-de-cancelacion flow (01–04), including substitution UUID, exposed as a document action and a whitelisted method.
Every build includes a post-go-live support window for bug fixes and stamping issues. Because you own the Git repository, your team or ECOSIRE can extend it later. We offer ongoing support and SAT/CFDI regulatory-update retainers separately if you want us to track PAC and SAT changes for you.
No. We test on a staging copy of your data with your real customers and product catalog, provide a documented rollback plan, and only cut over to production after you sign off on UAT. Stamping logic is idempotent and retry-safe to prevent duplicate CFDIs.
A build-to-order ERPNext app that stamps SAT-compliant CFDI 4.0 invoices through FacturAPI/PAC, validates the SAT catalogs, and handles complemento de pago and cancellation flows end to end. ECOSIRE builds, installs, and supports it after a scoping call.