invoicerr-app/invoicerr
192 issues need attention.
1 error and 191 warnings in the paths between 202 routes and 65 tables.
- ROUTES
- 202
- TABLES
- 65
- FILES READ
- 120
- RULES RUN
- 7/7
192 findings
POST /billing/webhooks/polar can reach polar_webhook_event without authenticating.
auth-before-dataPOST /billing/webhooks/polar → polar_webhook_eventGET /legal/documents has no validator or rate limiter attached.
public-entry-guardedGET /legal/status has no validator or rate limiter attached.
public-entry-guardedPOST /legal/accept has no validator or rate limiter attached.
public-entry-guardedGET /articles has no validator or rate limiter attached.
public-entry-guardedGET /articles/low-stock has no validator or rate limiter attached.
public-entry-guardedGET /articles/:id has no validator or rate limiter attached.
public-entry-guardedPOST /articles has no validator or rate limiter attached.
public-entry-guardedPATCH /articles/:id has no validator or rate limiter attached.
public-entry-guardedGET /company/sso has no validator or rate limiter attached.
public-entry-guardedGET /company/sso/domains has no validator or rate limiter attached.
public-entry-guardedPOST /companies has no validator or rate limiter attached.
public-entry-guardedPOST /companies/switch has no validator or rate limiter attached.
public-entry-guardedDELETE /companies/leave has no validator or rate limiter attached.
public-entry-guardedGET /companies/members has no validator or rate limiter attached.
public-entry-guardedGET /health has no validator or rate limiter attached.
public-entry-guardedGET /billing/seats has no validator or rate limiter attached.
public-entry-guardedGET /clients has no validator or rate limiter attached.
public-entry-guardedGET /clients/search has no validator or rate limiter attached.
public-entry-guardedGET /clients/duplicates has no validator or rate limiter attached.
public-entry-guardedGET /clients/:id/statement has no validator or rate limiter attached.
public-entry-guardedGET /clients/:id has no validator or rate limiter attached.
public-entry-guardedPOST /clients has no validator or rate limiter attached.
public-entry-guardedPATCH /clients/:id has no validator or rate limiter attached.
public-entry-guardedPOST /mcp has no validator or rate limiter attached.
public-entry-guardedGET /sirene/siret/:siret has no validator or rate limiter attached.
public-entry-guardedGET /company/info has no validator or rate limiter attached.
public-entry-guardedGET /company/email-templates has no validator or rate limiter attached.
public-entry-guardedGET /company/mail-settings has no validator or rate limiter attached.
public-entry-guardedGET /version has no validator or rate limiter attached.
public-entry-guardedGET /billing/status has no validator or rate limiter attached.
public-entry-guardedGET /billing/billing-email has no validator or rate limiter attached.
public-entry-guardedGET /invitations/can-register has no validator or rate limiter attached.
public-entry-guardedGET /invitations/is-first-user has no validator or rate limiter attached.
public-entry-guardedPOST /invitations/validate has no validator or rate limiter attached.
public-entry-guardedGET /account/transfers has no validator or rate limiter attached.
public-entry-guardedPOST /account/transfers/:id/accept has no validator or rate limiter attached.
public-entry-guardedPOST /auth-extended/set-password has no validator or rate limiter attached.
public-entry-guardedPATCH /auth-extended/preferences has no validator or rate limiter attached.
public-entry-guardedGET /payments/:documentId/sessions has no validator or rate limiter attached.
public-entry-guardedGET /projects has no validator or rate limiter attached.
public-entry-guardedGET /projects/:id has no validator or rate limiter attached.
public-entry-guardedPOST /projects has no validator or rate limiter attached.
public-entry-guardedPATCH /projects/:id has no validator or rate limiter attached.
public-entry-guardedGET /company/atcud-series has no validator or rate limiter attached.
public-entry-guardedPOST /billing/webhooks/polar has no validator or rate limiter attached.
public-entry-guardedGET /documents/schedules has no validator or rate limiter attached.
public-entry-guardedPOST /documents/schedules has no validator or rate limiter attached.
public-entry-guardedPATCH /documents/schedules/:id has no validator or rate limiter attached.
public-entry-guardedDELETE /documents/schedules/:id has no validator or rate limiter attached.
public-entry-guardedGET /documents/types has no validator or rate limiter attached.
public-entry-guardedGET /documents/email-templates has no validator or rate limiter attached.
public-entry-guardedGET /documents/types/:typeId/email-template has no validator or rate limiter attached.
public-entry-guardedGET /documents/types/:typeId has no validator or rate limiter attached.
public-entry-guardedGET /documents/types/:typeId/fields/:fieldKey/rows has no validator or rate limiter attached.
public-entry-guardedGET /documents/available-types has no validator or rate limiter attached.
public-entry-guardedGET /documents/required-identifiers has no validator or rate limiter attached.
public-entry-guardedGET /documents/b2g-routing has no validator or rate limiter attached.
public-entry-guardedGET /documents/declarations has no validator or rate limiter attached.
public-entry-guardedGET /documents/dashboard has no validator or rate limiter attached.
public-entry-guardedGET /documents/statistics has no validator or rate limiter attached.
public-entry-guardedGET /documents/transports has no validator or rate limiter attached.
public-entry-guardedGET /documents/references/:entity/search has no validator or rate limiter attached.
public-entry-guardedGET /documents/references/:entity/:refId has no validator or rate limiter attached.
public-entry-guardedGET /documents/references/:entity/:refId/fields has no validator or rate limiter attached.
public-entry-guardedPOST /documents/attachments/upload has no validator or rate limiter attached.
public-entry-guardedGET /documents/attachments/:fileRef has no validator or rate limiter attached.
public-entry-guardedPOST /documents/types/:typeId/actions/:actionId has no validator or rate limiter attached.
public-entry-guardedPOST /documents/types/:typeId/actions/:actionId/params/defaults has no validator or rate limiter attached.
public-entry-guardedGET /documents has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/totals has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/settlement has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/tax-warnings has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/correction-routes has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/pdf has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/formats/:syntax has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/archives has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/authority-events has no validator or rate limiter attached.
public-entry-guardedPOST /documents/:id/archives/:archiveId/verify has no validator or rate limiter attached.
public-entry-guardedPOST /documents/:id/share-link has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id/share-links has no validator or rate limiter attached.
public-entry-guardedDELETE /documents/:id/share-link/:tokenId has no validator or rate limiter attached.
public-entry-guardedGET /documents/:id has no validator or rate limiter attached.
public-entry-guardedGET /sso/lookup has no validator or rate limiter attached.
public-entry-guardedGET /company/branding has no validator or rate limiter attached.
public-entry-guardedGET /company/branding/logo has no validator or rate limiter attached.
public-entry-guardedGET /company/branding/preview has no validator or rate limiter attached.
public-entry-guardedGET /time-entries has no validator or rate limiter attached.
public-entry-guardedPOST /time-entries has no validator or rate limiter attached.
public-entry-guardedPATCH /time-entries/:id has no validator or rate limiter attached.
public-entry-guardedDELETE /time-entries/:id has no validator or rate limiter attached.
public-entry-guardedPOST /time-entries/generate-invoice has no validator or rate limiter attached.
public-entry-guardedPOST /clients/:clientId/portal-access has no validator or rate limiter attached.
public-entry-guardedGET /clients/:clientId/portal-access has no validator or rate limiter attached.
public-entry-guardedDELETE /clients/:clientId/portal-access/:tokenId has no validator or rate limiter attached.
public-entry-guardedDELETE /clients/:clientId/portal-access has no validator or rate limiter attached.
public-entry-guardedGET /public/documents/:token/pdf has no validator or rate limiter attached.
public-entry-guardedGET /company/channels has no validator or rate limiter attached.
public-entry-guardedGET /company-lookup/capabilities has no validator or rate limiter attached.
public-entry-guardedGET /company-lookup/capabilities/:countryCode has no validator or rate limiter attached.
public-entry-guardedGET /company-lookup has no validator or rate limiter attached.
public-entry-guardedGET /payment-methods has no validator or rate limiter attached.
public-entry-guardedGET /accounting-export has no validator or rate limiter attached.
public-entry-guardedGET /country-readiness/fully-supported has no validator or rate limiter attached.
public-entry-guardedGET /country-readiness/mention-window-alerts has no validator or rate limiter attached.
public-entry-guardedGET /country-readiness/:countryCode has no validator or rate limiter attached.
public-entry-guardedPOST /public/payments/:providerId/:companyId/webhook has no validator or rate limiter attached.
public-entry-guardedPOST /bank-reconciliation/statements has no validator or rate limiter attached.
public-entry-guardedGET /bank-reconciliation/statements has no validator or rate limiter attached.
public-entry-guardedGET /bank-reconciliation/statements/:id/lines has no validator or rate limiter attached.
public-entry-guardedPOST /bank-reconciliation/lines/:id/reconcile has no validator or rate limiter attached.
public-entry-guardedPOST /public/sdi/notifiche/:token has no validator or rate limiter attached.
public-entry-guardedPOST /public/sdi/notifiche has no validator or rate limiter attached.
public-entry-guardedGET /company/signing-certificates has no validator or rate limiter attached.
public-entry-guardedGET /custom-fields has no validator or rate limiter attached.
public-entry-guardedGET /custom-fields/resolved has no validator or rate limiter attached.
public-entry-guardedGET /documents/expense-categories has no validator or rate limiter attached.
public-entry-guardedGET /company/currency-rates has no validator or rate limiter attached.
public-entry-guardedGET /company/currency-rates/gaps has no validator or rate limiter attached.
public-entry-guardedGET /public/signatures/:token has no validator or rate limiter attached.
public-entry-guardedGET /public/signatures/:token/document has no validator or rate limiter attached.
public-entry-guardedPOST /public/signatures/:token/otp has no validator or rate limiter attached.
public-entry-guardedPOST /public/signatures/:token/sign has no validator or rate limiter attached.
public-entry-guardedGET /documents/received-invoices/reconciliation-settings has no validator or rate limiter attached.
public-entry-guardedGET /documents/received-invoices/upload/:fileRef/ocr has no validator or rate limiter attached.
public-entry-guardedGET /documents/received-invoices/:id/reconciliation has no validator or rate limiter attached.
public-entry-guardedPOST /documents/received-invoices/upload has no validator or rate limiter attached.
public-entry-guardedGET /documents/received-invoices/:id/file has no validator or rate limiter attached.
public-entry-guardedPDFConfig is not connected to anything.
no-orphan-datastoreCompany is not connected to anything.
no-orphan-datastoreClient is not connected to anything.
no-orphan-datastoreMailTemplate is not connected to anything.
no-orphan-datastoreQuote is not connected to anything.
no-orphan-datastoreQuoteItem is not connected to anything.
no-orphan-datastoreInvoice is not connected to anything.
no-orphan-datastoreInvoiceItem is not connected to anything.
no-orphan-datastoreRecurringInvoice is not connected to anything.
no-orphan-datastoreRecurringInvoiceItem is not connected to anything.
no-orphan-datastoreReceiptItem is not connected to anything.
no-orphan-datastoreReceipt is not connected to anything.
no-orphan-datastorePaymentMethod is not connected to anything.
no-orphan-datastoreSignature is not connected to anything.
no-orphan-datastoreCurrencyConversion is not connected to anything.
no-orphan-datastorePlugin is not connected to anything.
no-orphan-datastoreWebhook is not connected to anything.
no-orphan-datastoreinvitation_code is not connected to anything.
no-orphan-datastoreuser is not connected to anything.
no-orphan-datastoresession is not connected to anything.
no-orphan-datastoreaccount is not connected to anything.
no-orphan-datastoreverification is not connected to anything.
no-orphan-datastoreLog is not connected to anything.
no-orphan-datastorecompany_subscription is not connected to anything.
no-orphan-datastoreCurrencyRate is not connected to anything.
no-orphan-datastoreuser_company is not connected to anything.
no-orphan-datastorePartyIdentifier is not connected to anything.
no-orphan-datastoreArticle is not connected to anything.
no-orphan-datastoreProject is not connected to anything.
no-orphan-datastoreTimeEntry is not connected to anything.
no-orphan-datastorecompany_ownership_transfer is not connected to anything.
no-orphan-datastorelegal_acceptance is not connected to anything.
no-orphan-datastorelegal_document_release is not connected to anything.
no-orphan-datastorelegal_document_release_notification is not connected to anything.
no-orphan-datastoreapi_key is not connected to anything.
no-orphan-datastoreDocumentInstance is not connected to anything.
no-orphan-datastoreDocumentSchedule is not connected to anything.
no-orphan-datastoreDocumentPayment is not connected to anything.
no-orphan-datastorePaymentCheckoutSession is not connected to anything.
no-orphan-datastoreBankStatement is not connected to anything.
no-orphan-datastoreBankStatementLine is not connected to anything.
no-orphan-datastoreDocumentReminder is not connected to anything.
no-orphan-datastoreDocumentArchive is not connected to anything.
no-orphan-datastorePendingDocumentArchive is not connected to anything.
no-orphan-datastorePendingStorageErasure is not connected to anything.
no-orphan-datastoreDocumentAuthorityEvent is not connected to anything.
no-orphan-datastoreDocumentDownloadToken is not connected to anything.
no-orphan-datastoreDangerOtp is not connected to anything.
no-orphan-datastoreInstanceResetOtp is not connected to anything.
no-orphan-datastoreClientPortalToken is not connected to anything.
no-orphan-datastoreDocumentNumberSequence is not connected to anything.
no-orphan-datastorePecFilenameSequence is not connected to anything.
no-orphan-datastoreDocumentCountryActionRule is not connected to anything.
no-orphan-datastoreCountryIdentifierRequirement is not connected to anything.
no-orphan-datastoreB2gRoutingRule is not connected to anything.
no-orphan-datastoreCompanyChannelConfig is not connected to anything.
no-orphan-datastoreCompanyPaymentMethodConfig is not connected to anything.
no-orphan-datastoreCompanyCustomField is not connected to anything.
no-orphan-datastoreExpenseCategory is not connected to anything.
no-orphan-datastoreCompanySsoProvider is not connected to anything.
no-orphan-datastoreCompanySsoDomain is not connected to anything.
no-orphan-datastoreCompanySigningCertificate is not connected to anything.
no-orphan-datastoreCompanyAtcudSeries is not connected to anything.
no-orphan-datastoreBackupRun is not connected to anything.
no-orphan-datastore
Part of this repository was not read, so this report is incomplete. Read 120 of 1,127 files, schemas and routes first. Point Wyro at a single service directory to read one in full. Unread: backend/src/modules/logger/logger.controller.ts, backend/src/prisma/sync-schema.ts, backend/src/modules/health/health.controller.ts.
Free account, no card. The repository opens as an editable graph.
Add this check to the README
[](https://wyro.in/scan/invoicerr-app/invoicerr)It updates itself whenever the repository changes and links back to this report.
What this is
Wyro reads the repository’s routes and data models and checks the paths between them: whether a route can reach a table without passing a guard, whether a datastore holding personal data is exposed to a public read, whether an endpoint that issues credentials requires the credentials it issues.
It is rule-based, not a model. The same commit produces the same result every time, and it does not guess at business rules it cannot see. A rule with nothing to look at is reported as not having run — never as a pass.
This check runs on public source through GitHub’s own API and needs no account. A free account adds the editable architecture canvas, private repositories on paid plans, and a CI gate. No card required.