Skip to content

Security

What we read, where it runs, how long we keep it, and who can see it.

Customer data is not used to train models. Finance products default to human approval. SOC 2 Type II is in progress — we will not imply a report we do not have.

RegionHetzner, Nuremberg (Germany)

Disclosuresecurity@nox.markets

01 — Scope / 3 deployment models

What this page covers, and what stays yours.

Your general ledger, CRM, HRIS, mailbox, and bank stay authoritative. We do not keep a second subledger of your business.

Region
A Hetzner data center in Nuremberg, Germany, on every tier. No other processing region is offered.
Tenancy
Logical isolation on shared infrastructure: a separate encryption context and a row-level tenant id on every customer table.
Enterprise tenancy
Dedicated VPC, or self-hosted in your own environment.
Systems of record
Yours. The invoice in QuickBooks is the invoice your customer got; we do not keep a parallel AR or AP ledger.
Payment cards
Never stored. Once checkout takes payment, Stripe processes cards as our payment processor. We hold the customer and subscription ids and the last four digits for display.
Training on customer data
Contractually forbidden, in the DPA, not only on this page.
Zero retention
An Enterprise option for run payloads. Every other plan follows the retention ladder below.

02 — Data classes / 8 classes

Every byte we persist belongs to one of these classes.

Product pages and the DPA inventory use the same names, so a questionnaire answer and a product page cannot describe different things.

Data classes nox.markets stores
ClassWhat it isStored on our infrastructure
account_dataWork email, display name, hashed password or identity-provider subject, billing email, Stripe customer id, company name, planYes
workspace_configProduct mappings, schedules, approval matrices, templates, and price lists typed into a hosted toolYes
connector_secretsOAuth refresh tokens, API keys pasted by the customer, bring-your-own-key model keysYes, encrypted as secrets — not plaintext in the application database
run_payloadThe input document, prompt context, and model or tool output of a single runYes, unless zero-retention is on or the deployment is self-hosted
run_metadataRun id, product slug, timestamps, status, credits consumed, SHA-256 of the payload, actorYes, even under zero-retention
audit_eventWho, what, when, from which IP, against which object idYes
support_dataTickets and the screenshots a customer attached to themYes
telemetry_self_hostedLicence check, version, heartbeat. No documents, no tokens, no promptsYes, in the licence service only

What we do not store

  • Full exports of a QuickBooks file, HubSpot portal, mailbox or drive. Only the objects a product pulled for a named run.
  • Card numbers, CVVs, or bank login passwords. Where Plaid is connected it holds the bank credentials; we receive the account and balance tokens the product is configured to read.
  • Biometric data, data about children, and — until a BAA is in force — protected health information. Acceptable use forbids those classes on every plan.
  • Fine-tuned model weights derived from a customer's documents.
  • A second copy of an invoice, bill or quote PDF after the workspace retention window, other than encrypted backups that age out on the same clock.

Until a business associate agreement is in force, protected health information is forbidden on every plan by the acceptable use policy. That is a product constraint, not a preference.

03 — Data flow / 3 models

Where the data goes depends on how the product is deployed.

The deployment model is on every product card in this language, not as jargon. Here is what each one means for your bytes.

  • hosted

    runs on nox.markets

    You type or upload into our app. The data lands in your workspace, is processed there, and the result stays in our app until you export it or a connected write-back exists. A quote builder that stores your price list and the finished PDF is the shape of it.

  • connected

    runs on nox.markets, acts in your tools

    You grant a scoped OAuth token. On the trigger you set, we pull the minimum objects the product's inputs require, process them — including, where the product uses a model, one call to a model subprocessor — write the outputs back to your system of record, and keep the run payload only for your workspace retention window.

    You can revoke the grant in your identity provider or in the dashboard. We delete the stored connector_secrets within 24 hours of a revoke or disconnect.

  • self-hosted

    you run it, we license it

    Available on Enterprise. Your data does not enter nox.markets production at all. The licence service receives a check, a version, and a heartbeat — no documents, no tokens, no prompts.

04 — Retention / 10 artifacts

Retention is a workspace setting with a ceiling per plan.

Audit retention and payload retention are different clocks. An auditor asking who approved a bill needs the audit event; an auditor asking to see the PDF needs the payload still on disk.

Retention ceilings by plan
ArtifactStarterGrowthScaleEnterprise
run_payload default30 days30 days90 days90 days
run_payload maximum30 days365 days365 days365 days, or 0 days with zero-retention
run_metadata30 days12 months36 months36 months, or term plus 12 months by MSA
audit_event30 days12 months36 months36 months, or term plus 12 months by MSA
connector_secretsUntil disconnect + 24hUntil disconnect + 24hUntil disconnect + 24hUntil disconnect + 24h
account_data / workspace_configAccount life + 30 daysAccount life + 30 daysAccount life + 30 daysMSA may extend for legal hold
Encrypted backups35-day rolling35-day rolling35-day rolling35-day rolling, or customer-managed
support_data24 months24 months24 months24 months
Billing records (tax)7 years7 years7 years7 years
Infrastructure logs (non-audit)90 days90 days90 days90 days

Deletion

A workspace admin can delete a run — payload and metadata — from the dashboard. Deletion is queued immediately and applied to primary storage within 24 hours.

Backups are not scrubbed on demand. Copies inside an encrypted backup age out on the 35-day backup clock. We would rather write that sentence than imply an instant global erase we cannot perform.

On account closure you can export configuration and run history — JSON and CSV, plus the original files where we still hold them — for 30 days. Primary delete follows; backups have expired by day 65. A legal hold on Enterprise pauses deletion for named objects.

Data residency

Every tier runs in the same place: a Hetzner data center in Nuremberg, Germany. We do not offer another processing region.

05 — Encryption / 9 controls

Disk encryption is table stakes. Secrets get a second layer.

Encrypting a volume protects a stolen disk. It does nothing about a stolen application credential, which is the attack that actually happens.

In transit
TLS 1.2 minimum, TLS 1.3 preferred. HSTS on every host.
At rest, disks
[PLACEHOLDER: disk and backup encryption on the Hetzner server in Nuremberg — confirm at deployment]
At rest, application
Envelope encryption for connector secrets, bring-your-own-key material, and any API key you paste.
Key management
[PLACEHOLDER: where the master key lives on the Hetzner server — confirm at deployment]
Cipher suites
Mozilla Intermediate or stricter. No TLS 1.0 or 1.1, no RC4, no 3DES.
Secrets store
Runtime secrets are not in git and not in CI plaintext. [PLACEHOLDER: secrets tooling on the Hetzner server — confirm at deployment]
Key rotation
Automatic annual rotation of the master key, plus rotation on compromise. A new data key on every secret write.
Customer-managed keys
Planned for Enterprise, target 2027-06-30. Until then we manage the master key.
Certificates
Automated through Let's Encrypt. No long-lived uploaded certificates on customer-facing endpoints.

What the second layer is

Connector secrets get a per-record data key, envelope-wrapped by a master key, so a database dump is not a token dump. There is no plaintext API.

We do not use a customer-supplied HSM at launch, and we do not split keys with the customer at launch. Both are Enterprise conversations after customer-managed keys ship.

What we will not claim

  • Outbound email is TLS in transit where the recipient's mail server supports it. We cannot encrypt the body at rest inside the recipient's mailbox.
  • A connected write to QuickBooks or HubSpot is encrypted in transit to that vendor. Their at-rest story is theirs, and we do not restate it as ours.
  • Self-hosted encryption is yours. We document a recommended baseline in the licence runbook. We do not attest to your environment.

06 — Access control / 3 fixed roles

Seats are unlimited, so roles are the access control.

Charging for seats would make your security model a budget decision. It is not one here — nobody is left out of the workspace to save money, so permissions have to do the work.

Login on Starter
Email and password, Google OAuth, Microsoft OAuth.
SAML
SAML 2.0 on Growth and above. Identity-provider- and service-provider-initiated. SSO can be forced.
SCIM
SCIM 2.0 on Scale and above. Create, deactivate, and map groups to roles.
MFA
Required for password accounts. Identity-provider MFA is accepted for SSO accounts; we do not second-factor them.
Sessions
7-day idle timeout, 30-day absolute, refresh token rotated.
IP allowlist
Growth and above.
Roles
Three fixed roles on Growth: owner, admin, member. Custom allow-list roles on Scale.
Staff access to payload
No standing access. Break-glass only: ticketed, MFA, capped at 4 hours, logged as an audit event.

The three roles on Growth

Fixed roles and what each one can do
RoleCan
ownerBilling, delete the workspace, transfer ownership, and everything an admin can do.
adminUsers, roles, SSO, IP allowlist, integrations, retention, all products, audit export.
memberRun and configure the products they are granted. Cannot connect a new OAuth app, cannot change retention, cannot see billing.

Scale custom roles are allow-lists, not deny-lists. The permissions that exist at launch are product run, product configure, integration connect, integration revoke, audit read, billing read, member invite, and settings write. No permission lets a member read another workspace.

Our own people

  • Background check before production access, in the US and where equivalent checks are lawful elsewhere.
  • Hardware-backed MFA (FIDO2 or equivalent) on our identity provider.
  • Production access is a separate reviewed group. It is not the default GitHub organisation role.
  • Break-glass access to a run payload requires a ticket, lasts at most 4 hours, and every query is logged as an audit event attributed to the staff user.
  • Staging is separate from production. Production data is not copied into it. Fixtures are synthetic.

07 — Audit logs

We log that a run happened and a hash of it. Not its contents.

Payload lives in its own store on its own clock. Mixing the two would mean your audit trail quietly became a second copy of every document.

What we log

Authentication including failures, MFA and SSO; role changes; invites; integration connect and revoke; retention changes; product activate and pause; run create and cancel; export of audit or run history; billing plan change; and staff break-glass.

How you get it out

CSV and JSON export from the dashboard on Growth and above. A SIEM stream over HTTPS on Scale and above.

Starter's 30-day audit window is not exportable to a SIEM; it is a filtered table in the UI. That is a stated limit and a reason to move up a plan, not a gap we hide.

08 — Model providers / 3 inference subprocessors

A model call happens only when the product needs one, and we name who receives it.

Posting a bill that already has a code, sending a template email, writing a CSV — none of those call a model. Extraction, classification, drafting and matching do.

What leaves the platform

When a call happens, what is sent is:

  • the minimum retrieved context the product needs — a vendor name, the line text, that vendor's codes from the last twelve months, not your whole company file;
  • the system instructions we wrote for that product.

Not sent: connector secrets, Stripe ids, any other tenant's data, data from products that do not use a model, or anything from a self-hosted deployment.

Retention and training at the provider

We execute zero-retention and no-training API terms with each model subprocessor where the endpoint offers them. If an endpoint cannot be put on no-training terms, we do not route customer data to it.

Zero retention at a provider is not the same as nobody can ever see this. Several providers keep a limited slice for abuse monitoring even under their zero-retention programme. We are not going to pretend that exception is absent.

nox.markets does not train on customer data, and does not use one customer's runs to improve another customer's products. Run counts, latency, credit burn and eval scores on our fixtures are how we operate the platform.

Platform subprocessors

These entities process customer personal data for all or most workspaces. Model providers are listed even though buyers below Scale never pick one. The same table, with its dated changelog, is on the trust center and in the legal subprocessor list.

Platform subprocessors that process customer personal data
Legal entityPurposeData classesProcessing locationContractIn production at launch
Hetzner Online GmbHServer hosting, database, and backupsAccount data, workspace config, connector secrets, run payload, run metadata, audit events, support data, website inquiriesGermany (Nuremberg)Data processing agreement — to conclude before launchYes
Zoho Corporation B.V.Email hosting for our mailboxesEmail you send us and our replies, including support requestsEU (Zoho EU data centers)Data processing addendum — to request before launchYes
Stripe, Inc.Payments, invoices, and tax on our own feesBilling identity, card last four, subscription state. No card number on our sideUSStripe DPANo — checkout records a waitlist and takes no payment
OpenAI, LLCModel inferencePrompt, retrieved context and completion, for products that call a modelUSDPA plus zero-retention or no-training terms where offeredNo — no product in this build calls a model
Anthropic, PBCModel inferencePrompt, retrieved context and completion, when routed thereUSDPA plus no-training or zero-retention terms where offeredNo — no product in this build calls a model
Google LLC (Google Cloud / Vertex AI)Model inferencePrompt, retrieved context and completion, when routed thereUSGoogle Cloud DPANo — no product in this build calls a model

Conditional subprocessors

Used only when a workspace turns that feature on.

Conditional subprocessors, used only when their trigger applies
Legal entityWhat turns it onDataProcessing location
Slack Technologies, LLCA Slack webhook is configured for new-inquiry alertsInquiry details: email, name, company, and the messageUS
Google LLCSign in with Google is enabledName, email address, and Google account idUS
Plaid Inc.The workspace connects a bank for a connected product that lists Plaid in its integrationsAccount, balance and transaction data the product is configured to readUS

The systems we connect to on your behalf — QuickBooks Online, Xero, HubSpot, Gmail — are your processors, not our subprocessors. We hold a token; they already have the data. They appear on a product’s integration list, not in these tables. We give 30 days notice before a new entity processes customer personal data, and DPA customers have a 15-day window to object.

09 — Availability / 4 plans

Two plans have an availability SLA. Two do not, and we say which.

Starter and Growth are best effort with no service credits. Claiming otherwise would be a contract we do not intend to honour.

Recovery objectives and availability SLA by plan
PlanRPO — data we may loseRTO — time to restoreAvailability SLA
Starter24 hours8 hours, business hoursNone. Best effort, no service credits
Growth24 hours8 hours, business hoursNone. Support response SLA only
Scale1 hour4 hours99.9% monthly
Enterprise15 minutes1 hour99.95% monthly, with credits

Continuous write-ahead log shipping for the primary database, encrypted snapshots every 24 hours, 35-day retention, and no backup copies outside Germany. Restores are tested quarterly into an isolated environment; the first test is planned for 2026-12-31. [PLACEHOLDER: standby and failover for the single Hetzner server — confirm at deployment]

10 — Incident response / 6 steps

The clock starts when a human confirms it, not when a regulator asks.

A personal-data breach reaches the workspace owner within 72 hours of confirmation. A P1 availability incident reaches you within 24 hours of the declaration.

The clock

  1. Detect — monitoring, a vendor notice, or a disclosure report.
  2. Declare internally within 1 hour of a human confirming it is real, not a pager false positive.
  3. Contain. Rotate credentials. Revoke tokens if a connector secret is in scope.
  4. Confirm or rule out personal-data involvement. This is where the 72 hours starts. We do not start that clock on every CPU spike, and we do not sit on a likely breach for a week waiting to be sure — if it is likely, we notify as likely and update when it is confirmed.
  5. Notify: who, what classes, what we know, what we do not know yet, and what we recommend you do. No speculation about root cause in the first notice.
  6. Post-incident report to affected Scale and Enterprise customers within 10 business days of close.

What counts, and what does not

Counts: unauthorised access to a run payload, a connector secret, or account data; ransomware; a subprocessor breach that includes our tenants; an employee reading payload without a ticket.

Does not count: a user locking themselves out; a model hallucination, which is a product-quality incident we log and fix rather than a data breach; a customer exposing their own OAuth grant.

Availability incidents are posted to the status page. A security breach is never first announced on social media.

11 — Disclosure

Report it privately and we will not send a lawyer after you.

Coordinated disclosure, acknowledged within three business days. There is no paid bounty programme yet, and we would rather say so than let you find out after the work.

Contact
security@nox.markets
security.txt
/.well-known/security.txt
Languages
English
Bounty
Not offered at launch. A paid programme is planned for 2027-06-30, after the first external penetration test.
Acknowledgement
Within 3 business days.
Safe harbour
Good-faith research that does not exfiltrate data beyond a proof of concept, does not degrade the service, and is reported privately first will not draw a legal threat from us.

Scope

In scope: production hosts under *.nox.markets, the API, authentication, tenant-isolation and IDOR issues, secret leakage, remote code execution, and stored cross-site scripting on app routes.

Out of scope: marketing-site issues with no authentication impact, SPF and DKIM nitpicks without a working spoof, automated scanner dumps with no proof of concept, social engineering of staff or customers, physical access, and denial of service.

Please do not: read another tenant's data beyond the one record that proves isolation is broken, run exploits against our staff, or ask us to decrypt a payload you exfiltrated. We will not pay a ransom.

12 — Vendor review / 15 questions

The fifteen questions that actually arrive on a vendor review.

Answers are short enough to paste into a SIG or CAIQ cell, and written so nothing has to be walked back on the follow-up call.

  1. Question 01

    Do you have SOC 2 Type II or ISO 27001 today?

    No. SOC 2 Type I is planned for 2027-05-31. SOC 2 Type II is planned for 2027-12-15, after a six-month observation window. ISO 27001 is planned for 2028-09-30. CCPA/CPRA compliance is an operational legal programme, not a certification. Current status always lives on the trust page. We will not send a SOC 2 in progress letter that implies a report exists.

  2. Question 02

    Where is data stored, and are you multi-tenant?

    A Hetzner data center in Nuremberg, Germany, on every tier; no other processing region is offered. Logical isolation on shared infrastructure, with a dedicated VPC or self-hosted on Enterprise. Every row carries a tenant id, and cross-tenant tests are part of release QA.

  3. Question 03

    Is customer data used to train models?

    No. Not by nox.markets, and not by the model subprocessors we route to, under the API terms we will actually sign. This is in the DPA, not only on the website.

  4. Question 04

    What data do you send to OpenAI, Anthropic or Google, and do they keep it?

    For products that use a model: the prompt, the retrieved context and the completion. Not OAuth tokens, not other tenants, not full system exports. We use no-training or zero-retention endpoints where they are offered. Providers may retain a limited slice for abuse monitoring even under zero retention, and we do not hide that. Below Scale we choose the vendor; the subprocessor list still names them.

  5. Question 05

    Encryption at rest and in transit? Who holds the keys?

    TLS 1.2 minimum and TLS 1.3 preferred in transit. AES-256 at rest. [PLACEHOLDER: key management on the Hetzner server — confirm at deployment] Application-level envelope encryption for connector secrets. We hold the customer master key at launch. Customer-managed keys are planned for Enterprise on 2027-06-30.

  6. Question 06

    SSO, SAML, SCIM?

    Google and Microsoft OAuth on Starter. SAML 2.0 on Growth and above. SCIM 2.0 on Scale and above. SSO can be forced. SCIM deprovisioning revokes sessions within 5 minutes.

  7. Question 07

    What are the roles, and can your staff read our documents?

    Three roles on Growth: owner, admin, member. Custom roles on Scale. Our staff have no standing access to run payloads. Break-glass access is ticketed, capped at 4 hours, requires MFA, and is logged. An Enterprise MSA can require that we notify you when payload is accessed.

  8. Question 08

    Audit logs: what, how long, can we stream them to a SIEM?

    Authentication, role changes, integration connect and revoke, runs as metadata plus a payload hash rather than a body, exports, and staff break-glass. Retention is 30 days on Starter, 12 months on Growth, 36 months on Scale and Enterprise. SIEM streaming is available on Scale and above.

  9. Question 09

    Backups, RPO, RTO?

    Encrypted snapshots daily, continuous write-ahead log shipping, 35-day retention, stored in Germany. RPO and RTO are 24 hours and 8 hours on Starter and Growth, 1 hour and 4 hours on Scale, 15 minutes and 1 hour on Enterprise. Restores are tested quarterly; the first test is planned for 2026-12-31.

  10. Question 10

    Independent penetration test?

    Annual, web and API, starting with a first test planned for 2026-12-15. A letter of attestation can be public; the full report is under NDA on Scale and above. We do not publish a pentest PDF on a marketing page.

  11. Question 11

    Vulnerability management and patching SLAs?

    Critical, meaning actively exploited or CVSS 9 and above and reachable: 24 hours. High: 7 days. Medium: 30 days. Low: 90 days. Dependencies are scanned in CI, and containers for application services are rebuilt rather than patched in place.

  12. Question 12

    Subprocessors, and how do we hear about changes?

    The list is public and is the same table on this page and in the legal subprocessor page. We give 30 days notice before a new entity processes customer personal data, with a 15-day objection window for DPA customers. The SaaS tools we OAuth into on your behalf are your processors, not our subprocessors.

  13. Question 13

    What happens to data when we cancel?

    A 30-day export window for configuration and run history in open formats. Primary deletion by day 30; backups are gone by day 65. Connected OAuth grants are revoked, and work already written to your general ledger or CRM stays there. Self-hosted data is on your disk. A purchased one-time licence survives churn, but the data still follows this clock.

  14. Question 14

    Incident notification timeline?

    A personal-data breach is notified to the workspace owner no later than 72 hours after we confirm it. A P1 availability incident is notified within 24 hours and appears on the status page. We do not delay customer notice until a press release exists.

  15. Question 15

    Background checks, MFA, and production access for your employees?

    Background checks before production access where lawful. Hardware-backed MFA on our identity provider. Production and staging are separate, and production data is not copied to staging. Production access is a reviewed group, not everyone in engineering.

13 — Documents / 6 documents

The paper behind the page.

Every control above is incorporated by reference into the DPA. These are drafts prepared for counsel review, and each one says so at the top.

Next step

Send the questionnaire. We answer it in writing.

Ask for the DPA, the subprocessor list, or the answers to a spreadsheet you have already been handed. If your MSA needs a person on a call, book one.

Starter and Growth are self-serve. This form is for the reviews that are not.