Whether a firearm, magazine, box of ammo, or knife can legally land on a doorstep depends on the state, county, and even the city — and those rules change with every legislative session. Get it wrong and you're facing real liability.
Checking by hand doesn't scale, and bolting a slow lookup onto checkout costs you sales. RestrIQ makes the call instantly, accurately, and invisibly — so the right thing happens automatically, every order.
Your store sends RestrIQ the shipping ZIP code and the products in the cart. That's the whole question.
You get back a clear yes or no for each item — with the exact law cited whenever something can't ship.
Blocked? RestrIQ suggests a compliant fix — like a 10-round magazine — so a dead end becomes a sale.
No SDK to learn, no servers to babysit, no big migration. If your system can make a web request — and they all can — you're basically done. Drop one call into your checkout and RestrIQ handles the rest.
# Ask: can these items ship to ZIP 90210? curl "$RESTRIQ_URL"/check \ -H "Authorization: Bearer $RESTRIQ_KEY" \ -d '{"destination":{"zip":"90210"}, "upcs":["234567890123"]}' # Answer (in microseconds): { "shippable": false, "results": [{ "upc": "234567890123", "shippable": false, "reasons": ["Magazine capacity over 10 rounds restricted in CA"] }] }
Not a developer? Forward this to whoever runs your store — or watch for our upcoming plug-and-play partner integrations.
One API call sits in front of every order and stops a non-compliant shipment before it leaves — saving you the return freight, and the fines, on orders that never should have gone out. In less time than the page takes to paint.
Tens of microseconds per decision — under 50µs on average, with no database call or third-party hop inside the engine. A 100-item cart is still a single request, resolved in microseconds.
All United States & Territories with federal, state, and local rules. All U.S. ZIP codes mapped, and the most specific rule wins — a city ordinance overrides the state default automatically.
Products are matched by characteristics, not individual SKUs. Add a new product and the right restrictions apply automatically — scale your catalog, not your compliance workload.
We match official CA/MA/MD/DC state rosters to UPCs every day, and track each product's expiration individually. When a listing lapses, it's restricted automatically — automation no other shipping-compliance API offers.
Rules activate and expire on schedule. Pass an effective_date to validate against the rules in effect on a future ship date — never ship a product the day after it's restricted.
A block isn't just "no." You get the cited reason and suggested modifications — replace a magazine, swap a variant — so your team knows when a compliant workaround exists.
Firearms and their accessories are the hardest regulated category to get right — so it's the one we cover deepest. The same engine handles your other regulated products.
If a law restricts it, we track it.
Firearms are the hard mode — everything else is a warm-up. The engine classifies products by their characteristics and maps them to jurisdiction rules; it doesn't care what the item actually is. New category, new statute, new effective date? We load the rules — your integration doesn't change a single line. That's the whole trick.
One JSON endpoint. Pass a reference and it's echoed back, so checks map cleanly to your orders. Every response carries a Server-Timing header for your own monitoring. Live docs, a try-it console, and an OpenAPI spec for client generation.
POST /check HTTP/1.1 Authorization: Bearer eyJhbGciOiJSUzI1NiJ9… Content-Type: application/json { "destination": { "zip": "90210" }, "upcs": ["123456789012", "234567890123"], "reference": "ORDER-4521" }
200 OK · Server-Timing: check;dur=0.041 { "shippable": false, "results": [ { "upc": "123456789012", "shippable": true }, { "upc": "234567890123", "shippable": false, "reasons": ["Mag capacity >10; CA Penal Code §32310"], "modifications": [{ "type": "mag_capacity_reduce", "required": true, "note": "Replace with 10-round magazine" }] } ], "reference": "ORDER-4521" }
One endpoint, zero ops. Drop in a single call and you're live — we run the uptime, scaling, and updates on US nodes. The fastest way to get started.
Run our high-performance engine in a container in your own environment, right next to your applications, for the lowest latency possible. Great for offline or bulk use — nothing leaves your network.
| Capability | RestrIQ | Others |
|---|---|---|
| Decision latency | <50µs | DB / 3rd-party round trips |
| Pricing model | Flat rate | Per-request / per-shipment |
| Self-host option | Yes | No |
| Modifications | Yes | No |
| Roster automation | Yes | No |
| Customer data retained | None | Often stored |
| Legal defense* | Yes | No |
* FFLGuard legal defense applies to firearms and related products.
We track every legislative session, roster update, and effective date across all United States & Territories, and push the changes for you — zero-downtime, no redeploys, no spreadsheets.
Unlimited API requests on every tier — priced by store count, hosting, and whether you maintain your own catalog. No per-request or per-shipment fees, ever.
How you connect: RestrIQ is an API you add to your store, so you or your developer build the integration — most teams are live in minutes. No dev team? Our partners offer plug-and-play integrations with popular platforms, so you can switch RestrIQ on without writing a line of code.
Tell us what you sell and where — we'll set you up with a demo, an API key, and pricing.