Crosslist from Shopify to Square — Sync Your Catalogue to the Till
There is no official Shopify-to-Square tool and Square will not take a Shopify export. Here is exactly what transfers, how Square's two-object catalogue works, and how to keep both in step.
- A Square listing is two objects, not one. The
ITEMholds the name, description, category and images; theITEM_VARIATIONholds the price, SKU and stock. Every price or stock update has to target the variation — aimed at the item it succeeds and changes nothing, which is the quietest way to ship a price change that never happened. - Square money is in minor units. A £12.99 product goes over the wire as 1299. Get that wrong by hand in a CSV and you list a £12.99 item at £1,299.
- There is no official Shopify-to-Square migration tool, and Square will not accept a Shopify export. Square’s own documentation states that only Square’s Excel and CSV templates are supported and that “custom templates aren’t supported”. Doing this by hand means exporting from Shopify, re-mapping every column into Square’s template, and then re-adding every image by hand, because images do not travel through Square’s CSV at all.
- The trap nobody warns you about: options. Square allows 6 item options per item; Shopify allows 3. Coming this direction that is a non-issue — but it means the return journey is lossy, so decide your system of record before you start, not after.
- Square is an unusually forgiving destination. It has no fixed category taxonomy — a category is just an object you create — and no required per-category attributes. There is nothing to map into and nothing to fail validation against, which is the opposite of pushing a catalogue to eBay or Etsy.
- What actually transfers: title, description, price, SKU, stock, images and a category. What does not: Shopify’s multi-variant structure (FLUF maps one product to one Square item with one variation), collections, metafields, SEO fields, and order history.
- Sync direction is one-way on sold-detection. An item that sells on Shopify is cleared from Square automatically. An item that sells on Square is not yet detected — you mark it sold in FLUF and FLUF clears everything else.
- Cost: FLUF Connect is £1 for 7 days, then plans from £9/month (Starter). There is no free plan.

On this page
- Why put a Shopify catalogue into Square
- How to crosslist from Shopify to Square
- What transfers, field by field
- The variant problem, and how FLUF handles it
- Categories: the part that is easier than you expect
- Images, stock and the two calls that are allowed to fail
- Editing, versioning and why a stale write fails
- Doing it by hand, and why you probably should not
- What syncs and what does not
- What each platform costs you
- A real workflow, before and after
- Mistakes that cost money
- What FLUF Connect costs
- Sources and verification
Why put a Shopify catalogue into Square
Because most retail is still not online. US e-commerce was 17.1% of total retail sales in the second quarter of 2026, seasonally adjusted (US Census Bureau, released 18 August 2026). Read the other way round, roughly 83% of American retail still happens in front of a person — at a counter, a market stall, a pop-up, a fair, a warehouse door.
A Shopify store is superb at the 17%. It is not what you want in your hand at a craft market with patchy signal and a queue. Square is: a card reader, a phone, an item library that already knows your prices, and — critically — a plan that costs nothing per month if all you need is to take payments and hold a catalogue.
The two are not really competitors in this configuration. Shopify keeps the online store, the checkout, the international selling and the app stack. Square becomes the till. What you need is for both to be looking at the same inventory, which is the part neither company will do for you.
Two things that stop this before it starts
Square runs in eight countries only, and it cannot sell in a second currency in any configuration. If your Shopify store is outside that list, or prices in more than one currency, this page is not for you — the detail is on Square vs Shopify.
How to crosslist from Shopify to Square
- Create a FLUF Connect account and start the £1 seven-day trial.
- Connect Shopify. FLUF authenticates against your store with API credentials — a server-side connection, so nothing depends on your browser being open.
- Connect Square. Square uses OAuth: you approve FLUF from inside your own Square account. FLUF then resolves your primary location and your store currency. The location matters more than it sounds — Square tracks stock per location, and a catalogue with no resolvable location cannot receive inventory.
- Import your Shopify catalogue into FLUF. This reads your products, variants, prices, stock levels and images.
- Review the category mapping. Square’s categories are yours, not a fixed tree, so this is mapping onto whatever structure your Square account already uses — or creating one.
- Select products and crosslist. For each product FLUF creates a Square
ITEMwith oneITEM_VARIATION, writes the stock count against your location, and uploads the images. - Check the first ten in Square’s dashboard before you push the rest. Ten items is a cheap way to find out that your description formatting or your SKU scheme needs a tweak.
What happens behind the scenes
Square’s data model is the thing that shapes this entire integration, and it is worth understanding because it explains most of what follows. A Square listing is two objects, not one. The ITEM carries the name, description, category and images. The ITEM_VARIATION carries the price, the SKU and the stock. FLUF creates both in a single call and keeps both identifiers, because price and stock writes have to target the variation — aim them at the item and they succeed silently while changing nothing.
Two more details that matter in practice. Square money is in minor units — integer pence or cents, not decimals — so a £12.99 product is sent as 1299. And every create carries an idempotency key, which is what stops a retried request from producing two identical items in your library.
What transfers, field by field
| Shopify field | Square field | Transfer status | Notes |
|---|---|---|---|
| Title | ITEM.name |
✅ Automatic | Square’s limit is 512 characters — far above anything Shopify will hand it |
| Description | ITEM.description |
✅ Automatic | Square’s description field is plain text and preserves newlines. HTML is stripped rather than rendered |
| Price | ITEM_VARIATION.price_money |
✅ Automatic | Converted to minor units. Currency comes from your Square account, not from Shopify |
| SKU | ITEM_VARIATION.sku |
✅ Automatic | If the Shopify product has no SKU, FLUF generates a stable one so the item is still matchable later |
| Stock quantity | Inventory count at your location | ✅ Automatic | Written as a separate call after the item exists. A stock-write failure is logged, not treated as a failed listing |
| Images | ITEM.image_ids |
✅ Automatic | Uploaded best-effort. The first image becomes the item’s icon in the Square POS app |
| Product type / collection | ITEM.categories |
⚡ Smart mapped | Square categories are merchant-defined. Since December 2023 an item can belong to several |
| Variants (size, colour…) | — | ⚠️ One variation only | See the section below — this is the significant limitation |
| Barcode | ITEM_VARIATION.upc |
⚠️ Manual | Square requires 12–14 digits; a non-conforming barcode is better omitted than rejected |
| Shopify collections | — | ❌ Not transferred | Collections are a Shopify merchandising construct with no Square equivalent |
| Metafields | — | ❌ Not transferred | |
| SEO title and description | — | ❌ Not transferred | Square Online has its own SEO fields; they are not populated from Shopify |
| Compare-at price | — | ❌ Not transferred | |
| Customers and order history | — | ❌ Not transferred | This is inventory crosslisting, not a migration |
Legend: ✅ automatic · ⚡ smart mapped · ⚠️ needs your attention · ❌ not available.
Square’s field limits, for reference
| Field | Limit |
|---|---|
| Item name | 512 characters |
| Item description (plain, deprecated) | 4,096 characters |
| Item description (HTML) | 65,535 characters |
| Variation name | 255 characters |
| Variations per item | 250 |
| Item options per item | 6 |
| Barcode (UPC) | 12–14 digits |
| Images per item | No documented limit |
| Total catalogue size | No documented limit |
Source: Square CatalogItem and CatalogItemVariation references, checked 27 August 2026. Two of those rows are worth reading carefully: Square publishes no maximum images per item and no maximum catalogue size. If you see a comparison page quoting 1,000 or 10,000 as a catalogue cap, it has misread Square’s batch limits — 1,000 objects per batch and 10,000 per request — as a limit on the library itself.
The variant problem, and how FLUF handles it
This is the one thing to understand before you push anything.
Shopify’s product model is one product with many variants — a t-shirt in five sizes and three colours is one product with fifteen variants. Since 15 October 2025 Shopify allows up to 2,048 variants per product for all merchants, with no plan gating (Shopify changelog), capped at three options.
Square’s model is structurally similar — up to 250 variations per item, driven by up to six item options. But FLUF’s crosslisting model is one product, one listing, which maps to one Square item with exactly one variation carrying the price, SKU and stock.
What that means in practice:
- If your Shopify products are single-variant — one SKU, one price, one stock number, which describes most vintage, art, furniture, one-off and made-to-order catalogues — this is a clean, complete transfer. Nothing is lost.
- If your Shopify products are multi-variant, each FLUF product becomes one Square item. Where your inventory is already organised as one FLUF product per sellable SKU, you get one Square item per SKU, which is correct and sellable but flattens the size-and-colour grid your Shopify customers see into a list.
For a market stall this is frequently the better shape — you tap “Blue Hoodie L” rather than tapping a product then two option pickers while someone waits. For a deep apparel catalogue it is a real limitation and you should know about it before you push a thousand items, not after.
The direction that actually loses data
Worth stating even though it is the reverse of this page’s direction, because it determines which platform should be your system of record. Square permits six item options; Shopify permits three, hard. Shopify’s own migration documentation is blunt about the consequence: products with more than three options import with no options at all. Not an error, not a warning — they simply arrive flat (Shopify help centre).
So: build the catalogue in Shopify and push to Square, not the other way round. Going this direction, the structural loss is recoverable. Going the other, it is silent.
Categories: the part that is easier than you expect
If you have ever pushed a catalogue to a marketplace, category mapping is the step you brace for. A missing required attribute fails the listing outright; a leaf category has its own permitted values; a colour that is not on the approved list is a rejection rather than a warning.
Square does none of that. Square has no product taxonomy at all. A category on Square is simply another catalogue object that the merchant created, sitting in the same object model as items, discounts, taxes and measurement units. There is no tree to map into, no leaf nodes, no required per-category parameters, and nothing to fail validation against.
Two practical consequences. First, a Shopify catalogue can go into Square without the attribute archaeology that a marketplace demands — if the destination category exists in your Square account, FLUF maps to it; if it does not, the item still lists. Second, since December 2023 an item can belong to several categories at once: the old single category_id field is deprecated in favour of a categories array with an ordinal per membership (Square CatalogItem reference). If you are still writing to category_id in a home-grown script, you are writing to a deprecated field.
The flip side is that Square gives you no structure for free. Whatever organisation your Square library has is organisation you built. If your Shopify store leans on collections to merchandise, expect to recreate that shape deliberately rather than inherit it.
Images, stock and the two calls that are allowed to fail
A Square item is created in one request, but the things that make it useful in a shop are not part of that request. Stock is written separately, against a location. Images are uploaded separately and attached afterwards. FLUF treats both as best-effort rather than fatal, and that design choice is worth explaining because it changes what you will see.
If the image upload fails — a slow origin, a rate limit, an unusual file — the item still exists and is still sellable. You get a Square tile with no picture rather than a missing product. If the stock write fails, the same: the item is listed, the failure is logged, and the count can be corrected. The alternative design, where either failure aborts the whole create, produces a much worse outcome at a market: half your catalogue missing because a CDN was slow twenty minutes ago.
What that means for you is a small habit. After a first bulk push, sort your Square library by image and look for grey tiles. It is a two-minute check that catches the one category of problem this design deliberately lets through.
On limits: Square publishes no maximum number of images per item and no maximum catalogue size. The first image becomes the item’s icon in the POS app, so the ordering of your Shopify images decides what your staff see on the till — which is not always the same photograph you would lead with online. A clean, well-lit, cropped shot beats a moody lifestyle image on a 4-inch tile.
Editing, versioning and why a stale write fails
Square uses optimistic concurrency. Every catalogue object carries a version, and an update must present the version it is modifying. If someone changed the price on the till while FLUF was preparing an edit, the version has moved and the write is rejected rather than silently overwriting their change.
This is the right behaviour and it occasionally looks like a bug. An edit that fails immediately after you changed something in Square’s own dashboard is the system protecting the more recent change. FLUF re-reads and retries; the practical advice is simply not to bulk-edit the same items in both places at the same moment.
Creates carry an idempotency key derived from the product, which is what prevents a retried request — after a timeout, say — from leaving two identical items in your library. Duplicate items in a POS catalogue are worse than they sound: staff pick whichever one is on top, and half your stock decrements against an item nobody is watching.
Doing it by hand, and why you probably should not
There is no official Shopify-to-Square connector. Square has a Shopify-shaped hole where Shopify has a Square-shaped importer — Shopify wants your business, so it built Store Migration to pull catalogues out of Square. Nothing pushes the other way.
The manual route is Square’s generic bulk item import, and its constraints are specific:
- .xlsx or.csv only, using Square’s own template. Square’s documentation states plainly that “custom templates aren’t supported” — you cannot hand it a Shopify export (Square help centre).
- 30,000 items per upload.
- Two modes: Modify, or Replace — and Replace deletes your existing catalogue first. Choosing the wrong one on a live library is not a recoverable afternoon.
- Images do not import. Every one is re-added by hand.
- Square explicitly warns that opening its export in a spreadsheet mangles SKUs — scientific notation, dropped leading zeros. If your SKUs are numeric, that corruption is silent.
And the Shopify export has its own hazards. It is one row per variant. Shopify warns that “sorting your CSV file in a spreadsheet program can cause product variants or image URLs to become disassociated”. Images in the export are URLs, not files, and they only resolve while the original store is live. Any product with more than 100 variants triggers an emailed export rather than a download, and large exports can time out (Shopify help centre).
None of that is impossible. It is simply a day of spreadsheet work that has to be repeated every time the catalogue changes — which is the actual argument for a sync layer rather than a one-time export.
What syncs and what does not
| Behaviour | Supported | Detail |
|---|---|---|
| Create a Square item from a Shopify product | Yes | Item plus variation, stock, images, category |
| Edit a live Square item | Yes | Read-modify-write against Square’s object version |
| Delete a Square item | Yes | |
| Sells on Shopify → removed from Square | Yes | The direction that stops you overselling |
| Sells on Square → cleared from Shopify | No | Square sold-detection is not wired. Mark it sold in FLUF and FLUF clears the rest |
| Square order sync | No | Square revenue does not appear in FLUF’s order figures |
| Automated relisting | No | Not applicable to Square |
| Offer management | No | Square has no offer mechanic |
| Multi-variant grid | No | One product, one Square item, one variation |
The row that deserves emphasis is the one-way sold-detection. It is a deliberate position rather than an oversight: FLUF drives Square’s catalogue, inventory and delist paths reliably, and emits sold-signals only where it can read a genuine sale. For a shop-counter use case this is usually the right way round anyway — the stock you sell at the till is stock you were standing next to, and marking it sold in FLUF takes a moment.
The cost of adding Square, in one line
Adding Square as an in-person channel in the UK costs £0 a month and 1.75% per tap. Adding Shopify POS Pro to your existing plan costs £69 per location per month and 1.7% per tap — five basis points of card rate against £828 a year. You would need to be taking well over £1.6m a year at that counter for the rate to repay the subscription.
That is the whole of the cost argument for this direction. If you want the full plan-by-plan and country-by-country breakdown — including the fact that the answer inverts in the United States — that belongs on Square vs Shopify rather than here.
A real workflow, before and after
Before. You run a Shopify store. Twice a month you do a market. The night before, you export a product CSV, open it in a spreadsheet, cut it down to what fits in the van, re-map the columns into Square’s template, upload it, then spend an hour dragging images onto items so the POS tiles are not grey rectangles. At the market you sell eleven things. On Monday you go back into Shopify and decrement eleven stock counts by hand — or you forget, and sell one of them again online the following Thursday to someone who then gets an apologetic refund.
After. The catalogue lives in FLUF. Shopify and Square are both channels. New stock goes out to both. You sell eleven things at the market, mark them sold in FLUF on the drive home, and Shopify is decremented before you have unloaded the van. Anything that sells on Shopify during the market disappears from the Square till by itself.
The refund you did not have to issue is the entire return on this. Overselling is expensive twice — once in the refund and once in the review.
Mistakes that cost money
Using Square’s Replace import mode on a live catalogue. It deletes everything first. Modify is almost always what you meant.
Assuming price updates land on the item. Price and stock live on the variation. A write aimed at the item succeeds and changes nothing — the quietest possible failure, and the reason FLUF stores both identifiers.
Opening a Square export in Excel. Numeric SKUs become scientific notation and leading zeros vanish. Square warns about this and people do it anyway.
Building the catalogue in Square first. If you ever want it in Shopify, the three-option cap will flatten anything with four or more options and will not tell you. Shopify is the safer system of record.
Expecting a Square sale to clear your other channels. It does not yet. Mark it sold in FLUF.
What FLUF Connect costs
FLUF Connect is £1 for 7 days, then plans from £9/month (Starter). The rest of your first month is charged after the seven days, so you are not paying more, just not all of it up front. There is no free plan.
Automation — relisting, offer management and bulk operations — is included in every plan, not sold as a paid add-on. Square is one of {channel_count} channels FLUF drives, so the same catalogue can also reach marketplaces from the same place. Full details on the pricing page.
Sources and verification
- Square catalogue model and limits: Catalog API overview; CatalogItem; CatalogItemVariation; BatchUpsertCatalogObjects. All checked 27 August 2026.
- Square import: bulk item import.
- Shopify product model and export: variant-limit changelog, 15 October 2025; exporting products; migrating from Square.
- Pricing figures quoted in passing: Shopify POS pricing; Square UK pricing.
- Retail context: US Census Bureau quarterly e-commerce report, 18 August 2026.
Neither Square’s support centre nor Shopify’s help centre publishes last-updated dates on its articles, so figures drawn from them are marked as checked on 27 August 2026 rather than dated. Both companies geo-serve pricing; country-specific figures say which country they are for.
Related guides
Frequently Asked Questions
Yes, with a sync layer. There is no official Shopify-to-Square connector — Shopify built a migration tool to pull catalogues out of Square, but nothing pushes the other way. FLUF Connect drives both as channels, so your Shopify catalogue populates a Square item library and stays in step with it, including clearing a Square item when the product sells on Shopify.
No. Square's documentation states that only Square's own Excel and CSV templates are supported and that custom templates aren't supported, so a Shopify export has to be re-mapped column by column into Square's template. Images do not travel through Square's CSV at all and have to be re-added by hand, and the Replace import mode deletes your existing catalogue before loading the new one.
Title, description, price, SKU, stock quantity, images and a category. Shopify collections, metafields, SEO fields, compare-at prices, customers and order history do not — this is inventory crosslisting rather than a migration. Prices are converted to Square's minor units, so £12.99 is sent as 1299, and the currency comes from your Square account rather than from Shopify.
FLUF maps one product to one Square item with exactly one variation carrying price, SKU and stock. Single-variant catalogues — vintage, art, furniture, one-offs — transfer cleanly with nothing lost. Multi-variant products become one item per sellable SKU, which flattens the size-and-colour grid into a list. At a market stall that is often the better shape, because you tap the item rather than the item plus two option pickers.
Yes. Square tracks stock per location, so FLUF resolves your primary location when you connect and writes inventory counts against it. A Square account with no resolvable location can hold a catalogue but cannot receive stock, which shows up as items that list correctly and then read as unavailable at the till.
Not in the way a marketplace does. Square has no product taxonomy at all — a category is just another object you created, with no leaf nodes and no required per-category attributes. There is nothing to fail validation against, which makes Square an unusually forgiving destination. Since December 2023 an item can also belong to several categories at once.
Not automatically yet. Square sold-detection is not wired, so you mark the item sold in FLUF and FLUF clears it from your other channels. The other direction does work automatically: an item that sells on Shopify is removed from Square without you doing anything, which is the direction that stops you overselling online while the stock is in a van.
Almost certainly because it was aimed at the item rather than the variation. A Square listing is two objects — the item holds name, description, category and images, the variation holds price, SKU and stock — and a price write against the item succeeds while changing nothing. FLUF stores both identifiers for exactly this reason. A rejected edit is different and usually means the object version moved because someone changed it on the till.
Square publishes no maximum catalogue size and no maximum number of images per item. Be careful with figures you see elsewhere: the 1,000 and 10,000 numbers in Square's API documentation are objects per batch and objects per request, not a limit on the library. The one real cap on the manual route is 30,000 items per CSV upload.
FLUF Connect plans start at £9/month on Starter, with Seller at £29/month and Pro at £99/month; every plan is unlimited on listings and marketplaces, and the tiers differ by which automations they include and how often we check your channels for sales. There is no free plan. On the platforms themselves, adding Square in the UK costs £0 a month plus 1.75% per tap, against £69 per location per month for Shopify POS Pro at 1.7% — so for most single-counter sellers Square is the cheaper way to add in-person selling.
