List your store on Natural Order
This post walks through how to list your store, what happens after approval, the two ways to connect your stock depending on your platform, and the new whole-cart handoff that drops the buyer on your site with everything ready to pay.
Why integrate
- You show up in geo-filtered matches. Every user has a wishlist with condition and max price. If your stock meets those criteria and you're nearby, we surface you as a buy option. The most qualified leads are now one click away from your checkout.
- You get whole carts, not single-card inquiries. When the buyer clicks “Buy whole cart” on the match, we send the assembled cart to your site. You close a sale with N cards in a single transaction.
- No fee, no lock-in, no commission. We don't charge per sale or per listing. We don't ask for exclusivity. If you want out, we deactivate your store and that's it.
- We sync what you already have. We don't ask you to upload stock by hand somewhere new. We work with the platform you already use.
Getting started
Head to naturalorder.app/stores/apply and fill out the form. We ask for your store name, contact info, country, physical address (we use it to compute distance to nearby buyers) and optionally your website.
To submit the form you need a Natural Order account — that way the email is verified and your account is tied to the store. This is what later lets you view and rotate your API key yourself, without depending on us sending you anything.
We review applications manually. We're looking for stores with real stock and verifiable operations. Typical turnaround is 1-3 business days.
Your API key lives in your dashboard
When we approve your store, we generate an API key. You see it once at naturalorder.app/dashboard/store the next time you log in. Copy it and store it (password manager or whatever you prefer). After that we can't show it to you again — only the prefix, which is useful to identify which key you're using.
From the same dashboard you can rotate your API key whenever you want. If you suspect it leaked, click “Rotate key”: we issue a new one, the previous one stops working instantly.
Keys are prefixed with nos_live_... and sent as a Bearer token in requests to our API. They're scoped to your store — they can't read or modify anyone else's data.
Two paths to connect your stock
The technical integration depends on what platform powers your store. There are two buckets: stores on a commercial platform (you share credentials and we handle the sync), and stores on a custom site (your dev pushes inventory via our API).
Commercial platforms — share credentials, done
If your store runs on a commercial platform (Shopify, Crystal Commerce, Jumpseller, and similar), the integration boils down to sharing whatever credentials that platform uses to expose your catalog. Once it's configured, we sync your inventory and pricing automatically — you don't have to touch anything again.
- Shopify: we use the public
/products.jsonendpoint every storefront ships with. Zero effort on your side. Live example: Magic Lair (Argentina). - Crystal Commerce: we ask for a Secret API Key you can generate in under 5 minutes from your panel. Live example: Magic Dealers (Argentina).
- Jumpseller: we use the public Storefront MCP endpoint (
/api/mcp) every Jumpseller store exposes by default. Zero effort on your side. Live examples: Chronomagic, PDA Chile, Rivendel El Concilio (all Chile). - Other platforms: if yours isn't listed, drop us a line — info@naturalorder.app. Most expose some way to read the catalog and we add an adapter when a real store asks for it.
Custom site — the push API
If your store runs on a custom site or a stack that doesn't map onto any commercial platform, we expose a documented push API. Your backend pushes inventory in atomic sessions:
- Open a sync session (one POST).
- Send your inventory in chunks of up to 1000 listings (several POSTs).
- Close with a finalize (another POST) — we atomically swap your old stock with the new one.
Each listing carries a scryfall_id (or set + collector_number), condition, foil/nonfoil, language, quantity, and price. The full docs with exact shape, validation, and rate limits live at naturalorder.app/developers#stores. A dev can wire this up in a couple of hours.
Cart Handoff: the key integration
Up to here, the integration gives you visibility. But the moment you actually close a sale is when the buyer clicks “Buy whole cart” on the match. Here's what happens:
- The buyer opens a match with your store and sees N cards you can sell them, with your prices and stock. They can exclude any they don't want.
- They click “Buy whole cart at [Your Store]”. We generate a single-use token, valid for 10 minutes.
- We open a new tab to your site at the URL you gave us (e.g.
https://your-store.com/nos/cart), with two query params:?nos_match=...&nos_token=.... - Your handler fetches our API with your API key + the token. We return the canonical list of cards — with the IDs from your system (the ones you pushed during inventory sync), the quantities the buyer wants, and any exclusions already filtered out.
- Your site adds those items to the user's cart and redirects to your checkout page. From there it's your normal process: payment, shipping, invoice. We step out of the way.
We don't process payments. We don't hold stock. We don't record the purchase. We're a deep-link with a verified payload: you still own the transaction end to end.
Security uses double verification: the token is only generated when a real buyer clicks from a match with your store, and to fetch it you need your own API key (another store's key won't work even if they somehow got the token). Technical details at naturalorder.app/developers#stores-cart.
For your dev
If whoever reads this post isn't the one implementing the integration, pass them these links:
- Inventory push API — listing schema, chunked sessions, finalize, errors
- Cart handoff — query string contract, fetch endpoint, Node.js handler example
- Rate limits — per-endpoint buckets
TL;DR
Listing your store on Natural Order means entering the discovery feed of buyers who are already looking for what you sell. If you're on a commercial platform (Shopify, Crystal Commerce, others), share credentials and we handle the sync. If you have your own site, your dev wires up the push API in a few hours.
When the buyer clicks, the assembled cart lands directly on your site. You close sales, not chats. No fee, no lock-in.