JAI CRM
Home Release notes Shopify, both ways, and the invoice it deliberately does not raise

Shopify, both ways, and the invoice it deliberately does not raise

A shop order is paid at the checkout. Raising an invoice for it here would put the same sale in the books twice.

14 days free · nothing to install · your data exports whenever you want

SellingBuyingDeliveringAccounting

What connects to what

Settings → Integrations → Shopify. Paste the shop address and an Admin API token from a custom app you make in your own Shopify admin, test it, and choose what to bring across. Nothing new is invented to hold any of it: the catalogue lands in Inventory and the orders land in Sales, in the modules that already hold those things.

Collections become categories. Shopify’s collections are flat (there is no parent and child in their model at all), so a collection named “Clothing > Shirts” becomes Shirts under Clothing, which is the convention merchants already use and the only signal there is. A hyphen inside a word is left alone, so T-Shirts stays one name. Products become items, matched on SKU. Locations become warehouses, matched on name where one already exists so an existing warehouse is not duplicated. A product’s vendor becomes a vendor in the pool, unapproved: Shopify does not vet them and neither should we.

Six things worth knowing

⛁

A variant is an item

A shop’s stock and SKU live on the variant, not the product: “T-shirt” has no SKU, “T-shirt / Red / M” does. So a product with real options becomes a parent holding no stock, with one item per combination underneath holding its own. A single variant with no options stays a plain item, because a parent above every simple product is clutter.

⚡

Orders arrive in seconds

Add the webhook address the settings screen shows you and paste the app’s signing secret, and an order appears the moment it is placed. Without the secret an unsigned webhook cannot be told from anybody else posting to that address, so it is refused rather than trusted.

☺

The buyer is matched, not duplicated

On email first, then phone. Somebody who already buys from you by other means does not become a second customer because they later used the shop. A buyer who is new arrives as a customer with the person on it as a contact, so there is somebody to address a quotation to and somebody to ring.

⇄

Stock pushes back (when you say so)

Once items are matched on SKU, what is free to sell here can be sent to the shop so it stops selling what you do not have. Stock reserved against an order is not offered, which is why the shop may show fewer than the item page does. That is the point of it. It is off until you turn it on, and it refuses to stay on without both a warehouse to push from and a location to push into.

📦

A shipment marks the order fulfilled

Create a shipment with a tracking number in Inventory and Shopify is told, with the carrier and a live tracking link for the nine couriers we recognise. It happens after the dispatch is recorded, never during. If the shop is slow or down, the goods still went out.

⌗

Extra fields map to your own

A Shopify metafield can fill any custom field you have made on the item. Give it as namespace.key, choose the field, done.

The invoice it will not raise

A Shopify order arrives here as a confirmed sales order and stops there. No invoice is raised and nothing is marked paid.

That is deliberate, and it is the part most integrations get wrong. The money was taken at the checkout by somebody else’s gateway. Raising an invoice here would put the same sale in your books twice, and marking it paid would invent a receipt into a bank account that never saw one. The sales order records what was sold and to whom; what you do about the paperwork is a decision you make, not something an import assumes on your behalf.

Photographs: theirs or yours

A setting, because there is no right answer. Point at Shopify’s CDN and nothing is copied: fast, no disk used here, and if the product is deleted from the shop the picture goes with it. Or keep a copy on this server: it survives the product being deleted, it prints without a network, and it uses disk.

Copying happens after a sync rather than during one, so twenty pictures do not hold a database transaction open behind them. A picture that will never download is left pointing at their CDN rather than retried by every sweep from now on. Either way the item has its photograph.

Does this affect anything existing?

Nothing changes until you connect a shop, and the plugin has to be switched on in Settings before it appears at all. Since 7 Oct 2026 Shopify is an integration, free on every plan, in Settings, Integrations.

Two things are worth knowing before you turn the stock push on. The first push overwrites what Shopify believes it has, so if your counts here are not right yet, that is an outage on your storefront. Set your stock, check it, then switch it on. And an existing warehouse whose name matches a Shopify location is adopted rather than duplicated, which is what you want, but worth checking if you have two warehouses named the same thing.

If the app is uninstalled from your Shopify admin, we are told, and the connection is switched off here rather than left calling a shop that will refuse every request.

Pricing

Start with what you need. Grow into the rest.

Per user, per month. Every plan carries the whole product’s foundations (custom fields, roles, reports, documents and notifications) and differs only in how many modules are switched on. Change plan whenever you like; nothing is re-entered and nothing is lost.

CRM + Sales Documents

Leads, customers and deals, with quotations and GST invoices

₹149 / user / month

Pay annually
+ 18% GST: ₹175.82 / user / month incl. GST

Start 14-day trial
  • Leads, customers, companies and deals
  • Quotations, sales orders and GST invoices
  • Your own mailbox, with replies filed against the record
  • Reports, dashboards and exports
  • Documents, folders and sharing
  • Exhibitions: visiting card scanning, and what each fair earned
  • Integrations: IndiaMART, Just Dial, Tally, Google Drive and Dropbox
7 modules switched on
  • CRM
  • Sales documents
  • Settings
  • Reports & analytics
  • Documents
  • Notifications
  • Exhibitions

1 GB storage per workspace (organisation)

CRM + Sales Documents + Subscriptions + Warranty

For a business that bills on a cycle and stands behind what it sells

₹299 / user / month

Pay annually
+ 18% GST: ₹352.82 / user / month incl. GST

Start 14-day trial
  • Everything in CRM + Sales Documents
  • Recurring billing, plans, add-ons and coupons
  • Warranty registration and claims
  • Items and stock, which warranty is held against
  • Recurring revenue reporting
  • Integrations: IndiaMART, Just Dial, Shopify, Tally, Google Drive and Dropbox
10 modules switched on
  • CRM
  • Sales documents
  • Subscriptions
  • Warranty
  • Inventory
  • Settings
  • Reports & analytics
  • Documents
  • Notifications
  • Exhibitions

1 GB storage per workspace (organisation)

Only want this one module?

Individual modules are sold on their own alongside the plans. See every module’s price.

What about storage?

A single module includes 1 GB of storage per workspace (organisation) and Full Suite includes 5 GB per workspace (organisation): documents, attachments, file versions and photographs, counted together for everyone in it, not per user. Add more at any time in tiers, or move to Full Suite and take the larger allowance with it. Nothing is deleted if you run close; uploads are refused with a reason, and what you already have stays exactly where it is.

Annual or monthly?

Both. Annual works out cheaper per month and is charged once at the start; monthly costs a little more and can be stopped at the end of any cycle. The card shows the per-user-per-month figure on both, so the two are comparable at a glance rather than by arithmetic.

See it with your own data

Start free, import a spreadsheet of your customers, and raise a real GST invoice in the first ten minutes. No card, no sales call.