ERP
naios-erpv0.29.1Your company's money inside NAiOS: quotes, orders, delivery notes and invoices with Verifactu, expenses, stock, cash management and a business copilot
Description
NAiOS ERP for any business: product and service catalog, the full quote→order→delivery note→invoice cycle with branded PDFs, series-based numbering, and Verifactu-compliant invoicing (chained immutable records and submission to the AEAT). Collections and overdue payments, expenses with their VAT (IVA), stock with alerts, quarterly summaries for your accountant, and an AI that answers “how much did we invoice in July?” or drafts a quote for you in conversation.
Features (8)
Chained immutable records, verification QR and submission to the AEAT: the legal requirement, handled out of the box
Quote → order → delivery note → invoice in one click, PDFs with your brand and sending by email
VAT per line, equivalence surcharge and IRPF: from sole traders to SLs with no unusual setup
Who owes you, what's due, expenses with their VAT, and the quarterly summary ready for your accountant
Inventory goes down when you invoice and up when you buy, with minimum-level alerts
Monthly, quarterly or annual fees per client: drafts are prepared automatically and you issue them in one click
Each client with its sales rep and %: commission is calculated automatically when you issue, with a monthly report and settlement
“Draft a quote for Acme”, “How much did we invoice in July?”, “Who owes me money?”
Changelog
- Expenses: the amount column becomes “Base + VAT − IRPF” and, when there is a withholding or disbursements, ends in the total payable on the invoice (#281). Previously the actual amount to be paid did not appear in the list.
- Online quote signature (#276): “Send for signature” on issued quotes and orders creates an envelope in NAiOS Firma; the client signs with a code and the document becomes accepted, with the signature record on its file. Shows “Signed” / “Awaiting signature” in the list.
- Client assets (#275): new block on the client file with installed equipment (product, serial number, purchase date, warranty, contract, notes); added manually or from an issued invoice (“Move to assets”); alert for expired or soon-to-expire warranties.
- Chat: the ERP data tools include an instruction so the assistant writes Excel files and reports only with what the queries return, and says “not on record in the ERP” when something is missing (#272).
- Quote margin (#267): cost column per line (preloaded from the catalog) and margin in € and % per line and in total; visible only to the editor, never on the PDF; can be turned off per company in My company.
- Discounts (#268): the client's usual discount applies to all new lines in the document, and each product can carry a default discount that applies to the line when selected (it takes precedence over the client's discount).
- Know if the client has read the document (#274): the email includes a “View document” button (public link with token, expires after 90 days, can be renewed from the file) and an open-tracking pixel. The list marks sent items as “Viewed” or “Not opened”, and the file shows “Sent on … · viewed on …”, with copy link and new link options.
- Quote and invoice lines: when typing the item, search now runs on the server by name or SKU; previously the dropdown only had the first 300 products, so variants were missing in large catalogs (#265).
- Clients: “Intra-EU client” checkbox on the file (#269). When selected on a quote or invoice, new lines are issued without VAT (reverse charge) and the PDF includes the legal note.
- Document client selector with search by name (#266).
- #234: when importing the catalog, the parent item row (the one other rows reference under “Parent item”) is recognized as such: it doesn't need a price and gives the parent its name, SKU, family and description. Previously it was rejected for “no price” and the parent was created from the reference, without family and with the SKU as its name. Parents created this way by a previous import are recognized and completed on reimport.
- #234: in the catalog, “Select all listed” checkbox in the header and bulk actions “Archive” and “Delete” next to “Move to family”. Delete permanently removes items that are not in any document, stock movement or contracted service; items in use are archived and you're told how many. An item with variants also removes its variants.
- #258: “Attribute” filter in the catalog (Payment: Monthly, Size: M…): shows the variants with that value and their items. The catalog search also finds items by variant label or attribute value. Same filter in the API for the chat (?attr=Name=Value).
- #258: catalog families now support up to 5 levels (previously family and subfamily). The catalog tree, parent family selector, filter (a family includes everything beneath it), the “A › B › C” path on each item, import (“Family” accepts the full path) and export all follow the new limit. The POS shows categories at the same depth.
- #251: each expense shows its number (#216) in the list, and the expense search finds it by typing that number. The duplicate invoice warning when uploading a PDF explains how to locate the existing expense.
- #186: “Reconcile Stripe invoice” now also works for months whose charges were recorded without commission (imported history): it offers “Record the commissions for this invoice”, which creates the month's expense with supplier Stripe, without VAT and already paid, and leaves the month reconciled. The “other commissions” part (Billing, Link…) can be separated. If the month has commissions recorded but the invoice shows more, you can choose between recording the difference or reconciling anyway. Also available from “Upload invoice PDF”.
- #243: the “Cash management” section moves to tabs, like Clients and suppliers: “Pending collection” and “Expenses” (including supplier payments), each with its count; the last one used is remembered per company, and Dashboard shortcuts open the right tab. Actual collection and payment deadlines are visible in both.
- #243: “Clients and suppliers” moves to tabs, like Documents: Clients and Suppliers with their counts, one list in view and the other one click away (previously they were stacked and, with many clients, Suppliers was far down). The last tab is remembered per company, and ?sec=customers&party=suppliers opens Suppliers directly.
- #241: attribute values (Size: S, M, L…) can be renamed from Catalog → Attributes → attribute → value → “Rename value”; existing variants change their name and label.
- Renaming an attribute also updates existing variants (previously the change was not reflected in them).
- #234: Import clients and suppliers from CSV or XLSX (Clients → Import, Suppliers → Import): column mapping using the headers of common programs, preview (new, updated by tax ID, errors), confirm and revert; template and export with the same columns.
- Import (catalog and files): CSV files in ISO-8859 / Windows-1252 are read correctly (accents no longer break); rows with more cells than columns (CSV without quotes) are flagged in review.
- #231: PDF footer by document type — quotes can have their own footer (empty = the invoice footer). Both footers can also be edited from Settings → Invoice identity, where they were previously looked for.
- Guide: exact columns of the catalog import CSV (products and services), how suppliers and clients are imported, and where contacts are imported (CRM).
- Disbursements in expenses (#224). Invoices from notaries, registries or accountants include amounts the supplier paid on your behalf that carry no VAT and no withholding: until now the expense did not reconcile and could not be recorded. New field “Disbursements / not subject” on the expense (create, edit and PDF upload): it is added to the total and kept out of the base, VAT and IRPF, so the 303 form is unaffected. The AI reads it from the PDF when the invoice breaks it down, the reconciliation view includes it and, if a positive amount remains to reconcile, it suggests it as a disbursement. The received-invoices book shows it in its own column, and Accounting books it to the expense account without a VAT portion, owed to the supplier.
- Tax ID (NIF) check (#221). When saving a client, a supplier or My company details, if the NIF has the Spanish format and the letter or check digit is wrong, you're warned before saving (with the value that would be correct). With the company's digital certificate, “Check with the AEAT” queries the Tax Agency register (NIF + name) from the file, in bulk for all clients or suppliers, or for the company itself from My company: identified, different name (with the exact register name, which you can adopt with one click), not identified, deregistered or revoked. The verdict is stored on the file and in the “AEAT” column of the list, and is cleared if you change the NIF or name. Read-only query, no tax effect; logged in the SIF Audit.
- Expenses (#212): the VAT portion can be corrected to the amount shown on the invoice (create, edit and PDF upload), within ±€0.05 of the calculation; editing other fields no longer recalculates it. New “Reconcile by rounding” on the expense: with payments recorded and up to €0.05 outstanding, it adjusts the VAT portion (or the base) and marks the expense as paid, with a trace in the activity log.
- Chat (#210): “record an expense” and “prepare a quote” are saved in the ACTIVE company (the one open in the ERP), not in the first workspace on your list; the response states which company it was saved in.
- Supplier payments (#204): each row's button now says “Mark as paid” and the row carries a “Pending” status label; previously the button said “Paid” and was confused with the status.
- ERP copilot with full coverage: it uses all the module's tools (read tools run directly; write tools are still proposals with Apply/Discard), including recurring billing and contracted services tools that were previously excluded. Seven new queries: client file, supplier file, pending supplier payments, document list by type/status/client, payment methods, monthly commissions and catalog search (#202).
- Company payment methods (My company → Payment methods): bank accounts, cards (with their last 4 digits), cash… Accounts already known to Cash management are added automatically. Method selector in “Record payment” for expenses and “Record collection” for invoices (with a free “Other” option), and a usual method per supplier preselected (#201).
- Suppliers and clients: “Delete” button on the file when they have no linked documents (if they do, archive only); “already exists” warning when creating one with the same name or NIF, with an option to create it anyway; when confirming an invoice PDF without a NIF, the supplier is also matched by name to avoid duplicates (#199).
- Partial payments on expenses (#183): “Record payment” with amount, date and payment method; the outstanding balance drops with each payment and the expense is marked paid once complete. Payment list per expense (manual ones can be removed).
- Installment plan (#183): by number of installments or by installment amount, with first date and frequency (monthly, bimonthly, quarterly, semi-annual, annual); “Supplier payments” shows each installment by its due date.
- Cash management 0.2.0: an expense accepts several bank charges while it has a balance outstanding (several card charges against a monthly invoice, installments); each confirmed charge records a partial payment. Accounting 0.4.1 books each partial payment separately.
- Import history (#179): “Invoices still pending collection” field (A3 invoice numbers) to leave those uncollected even if the rest are marked as collected.
- Expenses (#190): the due date can be earlier than the expense date (prepaid card payment, with the invoice arriving later). When uploading the PDF, that due date is kept with a gentle notice instead of being erased.
- Import history (#179): Documents → “Import history” reads the A3 “Sales invoice summary by date” report (PDF) and creates the issued invoices in a separate historical series with their original dates and numbering, matching clients by name and asking for the NIF of new ones; no Verifactu or billing records (they were already filed there), with entries, VAT book and collections; re-uploading it does not create duplicates.
- Documents → Filters: “Hide cancelled”.
- Upload invoice PDF (#186): an invoice in another currency (dollars…) is converted to euros at the ECB official exchange rate for its date; the original amount and the rate are recorded in the description, and amounts remain editable. If the rate is unavailable, you're warned and the amounts are left unconverted.
- Intra-EU supplier (VAT ID from another EU country): the invoice is recorded without VAT under reverse charge; “Reverse charge” checkbox in the PDF dialog (also tickable manually for non-EU suppliers) and on the supplier file. Accounting self-assesses VAT as it does with Stripe.
- Stripe collection (#186): two commissions per charge, “Transaction commission” and “Other Stripe commissions”, each as its own expense so they reconcile by type with the monthly Stripe invoice.
- “Reconcile Stripe invoice” in Money (or when uploading its PDF, which the ERP recognizes): the monthly invoice is not recorded as an expense; its total is compared with the month's commissions, you're warned if they don't match, and its number is stamped on the commissions with the PDF as supporting document.
- The Stripe supplier is set to reverse charge: Accounting self-assesses VAT (472/477) on each commission, as the 303 form requires for an intra-EU service.
- Payment gateway collection (#186): in “Record collection”, “Stripe / gateway” method and “Gateway commission” field. The collection is recorded at the full amount (the invoice is settled) and the commission is automatically recorded as an expense to supplier Stripe Payments Europe (no VAT, reverse charge), already paid via withholding.
- Accounting books the collection as it would be done manually: bank for the net amount, gateway supplier for the commission and client for the full total; the commission expense settles that supplier. The ERP copilot explains the rule (the invoice to the client is always issued by the company; the Stripe receipt is not an invoice).
- Received invoices in PDF: in Money → Expenses, “Upload invoice PDF” saves the PDF, extracts its text and the AI proposes the expense (supplier by NIF, number, dates, base, VAT, IRPF, total) with confidence per field. The proposal opens in a dialog with the PDF alongside, and a person validates it: nothing is recorded automatically.
- Mandatory reconciliation (base + VAT − IRPF = invoice total), duplicate warning per supplier and number, due date from the PDF or the supplier's terms, and the PDF stays attached to the expense (📎 in the list and “View PDF” in its menu). Scanned PDFs (no text) open an empty form with the PDF alongside.
- Supplier payments (#180): new block in Money showing what is pending payment by due date bracket (overdue, this week, next 30 days, later, no due date) and the list of unpaid expenses sorted by due date, with a “Paid” button.
- An expense can be marked as paid manually (with date) and undone from its menu; Cash management reconciliation still marks it automatically. Cash management 0.1.1 projects expenses by their due date.
- Payment due date on expenses (#180): when recording or editing an expense, you enter the due date stated on the supplier's invoice. If left empty and the supplier has agreed terms, it is calculated automatically (expense date + terms).
- The expense list and the supplier file show the due date, with a ⚠️ warning when it has passed and is still unpaid and “in N d” when it's close. When importing a Facturae, the due date in the XML is used.
- Issue date visible (#179): when issuing a quote, order, delivery note or invoice, the dialog shows the issue date (today by default) and lets you change it before confirming. Useful for recording invoices from earlier months with their actual date.
- Rules: the date can never be in the future or earlier than the last invoice issued in the same series (sequential and chronological numbering); if it's from another year, the invoice goes into that year's series. With Verifactu in production, the date is always today's. The POS, recurring billing and batch issuing still use today's date.
- The copilot knows the company's business activities (IAE codes): “draft a quote for Acme for training” or “record €40 for domain in consulting” create the document or expense under that activity (by code or name; if you don't name one, the main activity). The business and quarterly summaries show the breakdown by activity under the consolidated total.
- The POS can have an activity per till (POS 0.3.1): its sales are classified without going through “Assign activity”.
- PDF at a glance: “PDF preview” on any draft (saves and shows how it will look, with a DRAFT watermark; the number and QR appear on issue), a PDF icon on each row of the list, and the PDF opens inside NAiOS with Download (clean name, FA-2026-0001.pdf) and Open in new tab buttons.
- On the issued invoice, the verification QR and the VERI*FACTU legend sit right below the totals, not anchored to the bottom with half a page left blank.
- Module guide: how to run the Verifactu test without polluting numbering (F2 for €1 with no client, then cancel it; do not create a test series), what each item on the My company checklist means (NIF warning with representative certificate, probe, accepted submissions), and how to turn it off, return to testing or switch to production.
- Verifactu: the system producer (Netretina AI SL, NIF B21924543) is built into the SistemaInformatico block of each record, without having to fill it in platform by platform; the installation number is derived from each platform's domain (NAIOS-<domain>) unless you set your own.
- Verifactu, real test: “Test connection with the AEAT” in My company sends a query to the test environment with your certificate (records nothing and has no tax effect) and tells you whether the certificate, password, server and NIF are correct; the result is kept in the Audit log.
- A company in TEST mode always submits to the AEAT test environment: the platform switch only holds production. An invoice accepted in testing is still what unlocks production.
- When uploading the certificate, the ERP opens and checks it: wrong password, unreadable file or expired certificate are rejected immediately; the expiry, holder and type (personal/representative or seal) are read from the certificate itself, with no manual entry. Warning if the holder's NIF is not the company's.
- Each certificate type goes through its own AEAT server (seals via www10, the rest via www1), with the option to force it in My company.
- The official chain differs by environment: when moving to production it starts from scratch with the AEAT, and a record is never sent to an environment other than its own. The waiting time the AEAT requires between submissions is respected, and server errors come with their reason.
- In the activity, choosing “+ Create new series…” opens the series form directly (prefix, next number and digits) without having to press Save first, and the selector explains what it does (ticket #95).
- Delete drafts: whoever manages the company can delete a draft (quote, order, delivery note or invoice) from the editor or with the trash icon in the list; a draft has no number or tax record, so numbering doesn't change. Issued documents are still not deleted (cancel or rectify). Recurring drafts keep “Discard”, which also marks the period. Recorded in the company log.
- Numbering series with custom format: each series sets how many digits the number has (leading zeros, e.g. 6 → 2026/000006), and if the prefix ends in “/” or “-” no extra hyphen is added; this lets you continue exactly the numbering the accountant was using. Existing series don't change (4 digits and a hyphen, as before).
- Activities: “Delete” permanently removes an activity not yet used in any document or expense (if it is in use, “Archive” still applies); warning when creating an activity with the same code and name as another; “+ Create series…” from the activity also asks for the next number and digits.
- Activities (IAE codes) within a single company: in My company → Activities you add each code with its invoice series and quote series; each document and each expense carries its activity (main one preloaded), the activity selects the series when issuing, carries over when converting and to corrective invoices, and can also be changed on issued documents without touching the number.
- Activity filter for documents and expenses, activity axis in reports and a new “By activity” report; the quarterly summary adds the breakdown by activity under the consolidated total (the 303 form remains one); the issued and received books include an “Activity” column at the end; “Assign unassigned items” classifies earlier entries in bulk.
- Item variants (size, color, format…): attributes and values per company, “Generate variants” creates the matrix of combinations with automatic SKUs; each variant is an item with its own price, stock and EAN and inherits family, type, taxes, supplier and description from the parent; the parent is not sold.
- Catalog with the parent collapsible (count and total stock), parent file with its variants and the year's sales, “Sales by variant” report.
- Import and export with columns Parent item + attributes (Size, Color…): creates missing parents, attributes and variants.
- Import or update the catalog from CSV/XLSX, an Office sheet or the Knowledge base: automatic column mapping, row-by-row preview (new, updated by SKU or EAN, error), missing families and suppliers are created automatically, and it can be reverted.
- CSV template and catalog export (CSV or Office sheet) with the same columns, for editing outside and reimporting.
- Item families (family › subfamily) as a master shared with the POS: tree in the Catalog, filter, family manager (icon, color, order, archive), Family field with search on the file, and multi-select “Move to family”.
- Automatic migration: the old text “category” becomes families, and POS categories are unified with the ERP ones (on conflict, the POS one wins and it is logged).
- “Sales by family” report.
- Search and collapsible filters above each list: documents (number, client or description; dates, amounts, overdue only), pending collections, expenses, catalog (type, low stock, archived), clients and suppliers (archived) and commissions (sales rep, status); they are remembered in the browser and shown as chips.
- New Reports section: sales by client and by product, invoiced/collected/expenses by month, debt aging, expenses by supplier, quotes and conversion rate, commissions by sales rep, VAT by quarter and recurring services forecast; period (month, quarter, year, custom), table, CSV and Office sheet.
- Sidebar: Suite block with “NAiOS CRM” to go to the CRM (and the CRM has a “NAiOS ERP” link back).
- Dashboard: the ERP home page (first sidebar entry) with invoiced, collected, pending and overdue amounts, expenses, margin, open quotes, monthly recurring revenue and commissions; charts by month and quote funnel, top clients, VAT for the current quarter, and lists of overdue items, expiring quotes, services to issue and latest documents; 30/90/365-day period.
- Quick actions from the home page: new invoice or quote, new expense, pending collections, taxes and new client.
- Look and feel: document type as a colored pill and date on each row; sections presented as cards.
- A physical product starts with stock control (the POS deducts it and the SGA Warehouse manages it); services and hours do not.
- Every ERP client has its file in the company CRM: when created, it is searched for (NIF, email or name) and, if not found, is created as a “client” with ERP origin and no marketing consent; if it was a prospect or lead, it becomes a client. The client is linked and offers “360 file”.
- Can be disabled per company in My company → CRM space.
- Referral commissions: when a collaborator (company sales rep) brings in someone who pays their NAiOS subscription, the commission enters the same monthly report and is settled with “Settle”, like those on invoices.
- A commission may have no ERP invoice (“referral” line): it counts in the month of payment and is not changed when recalculated.
- When adding a sales rep, company people appear with their name and title from Empresas (“Zeus Gargallo · CBDO”).
- Sales rep commissions (#137): list of sales reps per company with their default % (linked to their NAiOS user by email, even if they are not company members) and, on each client's file, “Sales rep and commission” with an optional own %.
- When each invoice is issued, its commission is locked (base excluding VAT × %): changing the rep or % afterwards does not touch what was issued; corrective invoices subtract using the rep and % of the original, and cancelled ones don't count. It never blocks issuing.
- If the client has no sales rep but is linked to the CRM, the commission goes to the owner of their CRM file when that owner is a registered sales rep.
- Commissions section: report by month and sales rep with detail per invoice, warning for invoices without a rep, “Recalculate” (does not touch what is settled), “Settle”, CSV and Office sheet. Users who don't manage the company see only their own commissions.
- My company → Commissions: which month they count in (on issue or when the invoice is fully collected) and on what base (the whole invoice or only contracted service fees).
- Contracted services: from each client's file you contract a catalog product with a frequency (monthly, quarterly, semi-annual or annual), billing day 1–28, its own price and end date; recurring fee and 12-month forecast KPIs on the file.
- Recurring billing: the ERP prepares the draft for each calendar period by itself (erp_subscription_runs ledger with UNIQUE per period: nothing is billed twice) and alerts via the bell; Invoices → Recurring tab with “Prepare now”, “Issue all”, discard and Office sheet.
- Optional automatic issuing per company (My company → Recurring billing), F1 only and with red confirmation; clients without a NIF stay as drafts with a warning. Platform switch recurring_enabled and its own erp-recurring leader lock.
- Chat tools: erp_customer_services and erp_recurring_status (read) and erp_add_customer_service (contracts with confirmation; never generates or issues). Recurring fees in the Cash management forecast.
- Verification: with advance notice, automatic issuing waits for the billing day; amounts for upcoming items, forecast, file and Cash management include VAT (and prepared drafts not yet issued remain in the forecast); cancelling with pending periods invoices them and ends by itself; individual “Issue” of a recurring item rereads the client's NIF; drafts after cancellation are marked and excluded from “Issue all”; alerts link to the company; default dates use Madrid time.
- FACe: AUTOMATIC submission through the SSPP service (SOAP+mTLS transport modeled on VeriFactu, signed Facturae in base64) — “Send to FACe” button that records the registration number automatically.
- Platform gate face_send_enabled (default OFF) + service URL: the flow is ready, and live sending is enabled after validation in the FACe test environment with a certificate. The exact envelope is estimated against the official WSDL (verified=false).
- FACe (opt-in PER COMPANY, never by default): the three DIR3 codes on the public-sector client's file, Facturae with AdministrativeCentres and mandatory SIGNATURE, and the submission record with its statuses (prepared → uploaded → registered/rejected → paid)
- Honest v1: NAiOS prepares and signs; the file is uploaded to face.gob.es and the registration number is recorded here — automatic transport will arrive with the first live public-sector client.
- E3a: official VERI*FACTU hash (Order HAC/1177/2024) verified against the test vectors published by the AEAT, in double chain with the internal one.
- SOAP envelope compliant with the official schemas (validated with full XSD): Breakdown, Chaining, SistemaInformatico, corrective invoices and cancellation.
- Platform switch for submission (off by default): the queue holds records with an honest status until E3b validation.
- AcceptedWithErrors recorded as accepted with a warning — only a clean acceptance unlocks production mode.
- Verification QR with the date in official dd-mm-yyyy format.
- E0–E5: catalog, commercial documents, Verifactu invoicing (test mode), collections, expenses, stock and copilot.