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"] }] }
Forward this to your developer or whoever maintains your website — or use one of our partners’ plug-and-play 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 external calls in the decision path. 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 can 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 RestrIQ 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? Use one of our partners’ plug-and-play integrations with popular platforms and 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.