Skip to content

Frequently asked questions

9 questions

Do you connect to QuickBooks?

No. There is nothing to authorize in your client's QuickBooks. You export three standard QuickBooks Online reports (Sales by Product/Service Detail, Transaction List by Customer with shipping and billing addresses, and the customer contact list) or fill in our one-file template, and upload them.

Why does the address matter so much?

A sale generally belongs to the state where the customer receives it, usually the ship-to address; the billing address is only a fallback when no delivery address is known. QuickBooks Online reports can show a customer's default address, or a blank, instead of the ship-to typed on the invoice, so Nexus Auditor records where each sale's address came from and flags results where more than 10% of sales rest on default addresses. Addresses that cannot be placed in a state are listed so you can fix them.

Which taxes and places does it cover?

State sales and use tax: economic nexus for every state with a sales tax plus DC, physical nexus in the client's home state (recording other offices, employees and inventory is coming), and the Alaska Remote Seller Sales Tax Commission threshold for the local taxes of its member cities and boroughs. New Mexico's gross receipts tax and Hawaii's general excise tax are treated as those states' sales taxes. States where localities administer their own sales tax, such as Colorado's self-collecting home-rule cities, are marked but not evaluated. Five separate business taxes (Washington B&O, Ohio CAT, Texas franchise, Delaware and Oregon gross receipts) are listed as not evaluated, and income taxes are not covered.

How current is the law?

Each state's economic nexus rule shows its source and the date it was last checked; all were rechecked in September 2026. Changes are added as new versions with effective dates: sales are counted under the rules in force on their dates, the threshold in force on the measurement date decides, and a threshold met only under an earlier version is marked for review. Rules where sources disagree or are silent carry a lower confidence rating, which lowers the finding's confidence.

What does a finding show?

The status for the state; each test the state applies (sales, and transactions where it still counts them) against its threshold with the rule's comparator; every measurement window; what counted, including the state's sales basis, marketplace and resale treatment, and exempt or resale claims without a valid certificate; the rule versions applied with their sources; and the reasons behind the confidence level.

Is this a filed return or a legal opinion?

No. Nexus Auditor is decision support for your professional judgment. It does not register, file or remit anything, and its results are not legal advice.

Who can see a client's data?

Each firm has its own workspace, and firms are isolated from each other in the database. Everyone in a firm, including guests, can see its clients; roles decide who can change data, and only owners and admins can undo an import.

What files can we upload?

CSV, XLSX or XLS files up to 25 MB and 250,000 rows each. Files are stored when you upload them, but no sales are recorded until you review the check and confirm, and an owner or admin can undo a confirmed import.

What does it cost?

Early access is by invitation while we work with a small group of firms. Pricing will be published before general availability.

Open full FAQ page
Documentation
Browse documentation

Modules / AI and operations

Supabase Cloud

Provision a managed Postgres project and wire the kit onto Supabase.

Setup and configuration

Create a Management API token at supabase.com/dashboard/account/tokens, export SUPABASE_ACCESS_TOKEN, then run pnpm supabase:provision -- --org <slug> --name <name> --region <region>. Without --yes it is a dry run and prints the plan; creating a project can be billable on paid plans. With --write-env it fills DATABASE_URL (session pooler) and STORAGE_* in the root .env without overwriting existing keys unless --force is passed. --migrate runs pnpm --filter @supastack/db db:migrate against the session pooler afterwards.

Choose the pooler deliberately. The session pooler (aws-0-<region>.pooler.supabase.com:5432, user postgres.<ref>) supports prepared statements — use it for migrations and long-lived servers. The transaction pooler (port 6543, pgbouncer) is for serverless functions and drops prepared statements; the kit's postgresClientOptions in packages/db detects port 6543, ?pgbouncer=true, or DATABASE_POOLER=transaction and sets prepare:false automatically. Direct connections (db.<ref>.supabase.co:5432) are IPv6-only on cloud — prefer the pooler from IPv4 networks.

Manual path: create the project in the dashboard, copy the pooled connection string from Connect → Transaction/Session pooler, set DATABASE_URL with sslmode=require, and run the migrate script yourself.

This kit uses Better Auth — not Supabase Auth — so auth tables, sessions, and providers live entirely in the kit's schema; Supabase only supplies Postgres and S3-compatible storage.

DATABASE_URL=postgres://postgres.<ref>:<password>@aws-0-<region>.pooler.supabase.com:5432/postgres?sslmode=require
STORAGE_PROVIDER=s3
STORAGE_ENDPOINT=https://<ref>.supabase.co/storage/v1/s3
STORAGE_REGION=<region>
STORAGE_BUCKET=<bucket>
STORAGE_ACCESS_KEY_ID=<s3 key>
STORAGE_SECRET_ACCESS_KEY=<s3 secret>

Implementation workflow

For Supabase Storage, set STORAGE_PROVIDER=s3 with the endpoint https://<ref>.supabase.co/storage/v1/s3 and your project region; the kit enables forcePathStyle automatically for custom endpoints. Create S3 access keys in Dashboard → Storage → S3 connection settings — the Management API cannot mint them.

Backups: the free plan keeps daily backups; Pro adds point-in-time recovery. For your own dump use pg_dump against the session pooler or direct host.

Verification and troubleshooting

Run pnpm supabase:doctor after provisioning: it reports server version, SSL, pooler mode vs prepared statements, pending Drizzle migrations, and — critically — any public tables exposed via PostgREST (RLS disabled or anon/authenticated grants) with the exact fix SQL. --fix-rls applies them in a transaction. Common failures: 'prepared statement already exists' means you connected through :6543 without the prepare:false the kit applies; 'too many connections' means you are exhausting the pooler — lower maxConnections.