What you’ll set up
This tutorial takes a US-based SaaS seller from zero to a correctly taxed invoice. You’ll set your seller jurisdiction, connect TaxJar for real jurisdiction-level rates, declare the states where you have nexus, watch economic-nexus thresholds, and generate an invoice that collects the right combined state + local rate — and 0% where you have no obligation.US sales tax only engages when the seller is US-based and the buyer’s billing
country is
US (or unset). Buyers outside the US are invoiced with no US sales
tax (tax_type: export).Step 1: Set your seller jurisdiction and connect TaxJar
Your seller jurisdiction is your primary legal entity’s country. The easiest way to set it is at signup — pass"country": "US" to POST /auth/register
(or pick United States in the signup form) and invoices present US sales
tax from day one. Already registered? Update the primary entity’s country in
Settings. The env defaults below are the fallback when neither is set.
US rates depend on the buyer’s state, county, city, and special districts, so
accurate rates come from a provider. Recurso integrates TaxJar.
.env
Without TaxJar, Recurso does not guess — US invoices carry 0% marked
sales_tax_stub. There are no silently wrong rates. Fine for development; not for
production billing.Step 2: Declare your nexus states
Nexus is your obligation to collect in a state. Recurso collects only in the states you declare — a sale to a buyer anywhere else is invoiced at 0% with an auditable note (tax_type: no_nexus).
Read your declared states back any time with
GET /v1/settings/tax/nexus.
Step 3: Monitor economic-nexus thresholds
Beyond physical presence, most states establish economic nexus once your sales or transaction count into that state crosses a threshold (commonly $100k or 200 transactions, but it varies). Recurso tracks year-to-date sales and transactions per state and tells you how close you are:crossed: true state is auto-established as economic nexus during the read
(idempotent), so Recurso starts collecting there — you should then register with
that state. Monetary fields are in USD cents.
See the nexus status endpoint for the full
response shape.
Step 4: Generate a correctly taxed invoice
Create a US customer with a full billing address —state and zip drive the
lookup — then let invoicing run automatically at period end.
tax_type:
Verify your setup
1
Provider enabled
Startup logs show
TaxJar provider enabled (not the 0% stub).2
Nexus declared
GET /v1/settings/tax/nexus returns your states; the gate is on.3
Thresholds visible
GET /v1/settings/tax/nexus/status returns per-state proximity; note the
dataset_certified caveat.4
Invoice taxed correctly
A buyer in a nexus state shows
tax_type: sales_tax with a real rate; a buyer
elsewhere shows no_nexus at 0%.Next steps
US Sales Tax Reference
The full behavior matrix and provider details
Nexus Status API
Endpoint reference for economic-nexus monitoring
Quickstart for US SaaS
The end-to-end USD + Stripe billing path
Testing & Sandbox
Point TaxJar at its sandbox and test the full path