usellit.
Start free trial

Security

Tenant isolation

Every business is a separate tenant, and every row of business data carries its tenant. Isolation is enforced in the database by row level security, not by application code remembering to add a filter - so a missed WHERE clause returns nothing rather than returning somebody else's data.

We test this rather than assert it. An automated check creates two tenants, puts real records in both, then signs in as one and attempts to read, update, delete and take ownership of the other across every table. It also checks the opposite failure - that a tenant can still see its own data - because a database that denies everyone everything would pass an isolation test while being useless.

ERP credentials

Your NetSuite OAuth credentials are encrypted with AES-256-GCM before they are stored, using a key held only in the server environment. They live in a table with row level security enabled and no access policy at all, so they are unreachable from any browser session by construction rather than by discipline. Each environment has its own encryption key, so a compromise of one cannot decrypt another's.

Card data, and PCI scope

usellit does not store, process or transmit cardholder data, and is therefore out of PCI DSS scope. That is an architectural fact rather than a certificate: card details are captured by the payment terminal and go straight to the payment provider over their own encrypted channel. A card number never reaches a usellit server, so there is nothing for us to protect, leak or be audited on. We receive only the outcome of the payment and a masked reference - last four digits, card type, an authorization code - which is what a receipt needs and nothing more.

Be clear about what that does and does not do for you. It removes usellit from your cardholder data environment, which meaningfully narrows what you have to assess. It does not make you exempt: you still have PCI obligations for your own network, your terminals and how your staff handle cards, and your acquirer will still expect the relevant self-assessment. What we can say is that adding usellit does not widen that scope.

Environments

Production, sandbox and release preview are separate deployments with separate databases and separate keys. There is no shared table and no environment column to get wrong, so data cannot leak between them: there is no row to leak through. Non-production environments carry a permanent on-screen banner and a differently colored browser icon, so nobody does a day's work in the wrong place.

Access control

Four roles - admin, setup, view only, and point of sale - enforced in the database as well as the interface. Every action that moves money or changes configuration is attributed to a named user in an append-only audit log, which has no update or delete policy: records cannot be altered after the fact, including by the person who created them.

In transit and at rest

All traffic is HTTPS with HSTS. Databases are encrypted at rest by our infrastructure provider. Passwords are hashed by our authentication provider and are never visible to us.

The website

usellit.ai serves a strict Content-Security-Policy that permits no JavaScript at all, along with nosniff, a restrictive referrer policy and HSTS. There is no analytics, no advertising and no third-party script, so there is no third-party script to be compromised.

Reporting a vulnerability

Write to support@usellit.ai with enough detail to reproduce the issue. We will acknowledge within two working days and keep you updated. Please give us reasonable time to fix it before publishing, and do not access data that is not yours while testing. We will not pursue legal action against anyone acting in good faith under those terms.

Incidents

If a breach affects your data we will tell you without undue delay and, where we are your processor, within the timeframe the DPA requires, with what we know, what we are doing and what you may need to do.