Skip to content
pluginloom

Security

Data handling and security

How Encadena keeps records unalterable, detects edits, protects your certificate, and why records stay after uninstalling or a GDPR erasure request.

Last updated by the PluginLoom team

Records cannot be edited#

The law requires that records cannot be changed without the software detecting it (RD 1007/2023 art. 8.2.a, BOE (opens in a new tab), checked October 24, 2026). Encadena:

  • stores records and events in tables it only inserts into, never updates or deletes;
  • chains each record to the previous one with a SHA-256 huella (Orden HAC/1177/2024 arts. 7 and 13);
  • adds a keyed seal (HMAC) over each stored row, so an edit made straight in the database is found even where the huella does not cover the field;
  • checks the last record before creating a new one (Orden art. 7.i) and the whole chain every day and on demand;
  • shows an alarm on every admin screen when a check fails (Orden arts. 6.f and 7.j), and in NO VERI*FACTU mode writes the anomaly to the event register.

Invoicing never stops because of an alarm: the AEAT says billing must not be interrupted for this reason (FAQ for developers, item 15.2).

Records are generated in order#

A lock makes sure records are created one at a time and in the order invoices are issued, so two orders paid at the same moment cannot break the chain.

Your certificate and license key#

Both are stored encrypted (libsodium XChaCha20-Poly1305 or AES-256-GCM). The certificate password is never stored. Define ENCADENA_ENCRYPTION_KEY in wp-config.php to keep the encryption key out of the database.

Uninstalling keeps your records#

Records and event records must be kept for the legal period, even after changing software (Orden art. 8.3). Uninstalling removes settings, the certificate, the license and the activity log, but keeps the records. If you have exported and archived everything, defining ENCADENA_DELETE_RECORDS_ON_UNINSTALL as true in wp-config.php also removes the tables.

Personal data requests#

Invoices carry the customer's name and, for full invoices, their tax ID. The WordPress personal data exporter includes them. The eraser keeps them and says why: the business must keep invoices by law (GDPR art. 17.3.b). In VERI*FACTU mode a copy of each record goes to the AEAT. A suggested privacy-policy paragraph is added under Settings > Privacy.

Was this page helpful?