> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Revenue by Location (in-store), Square Online

> Revenue by Location (in-store): how your revenue splits across each Square location. How to read it, why it matters, and how to act on it.

**Card class:** [Hero](/nerve-centre/overview#card-classes-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> Per-location revenue rollup, multi-location Square merchants need per-store visibility.

## At a glance

> A per-location breakdown of revenue, one bar per Square location, over the last 30 days. For any multi-location Square merchant this is the view that answers the question the headline cannot: which store is carrying the business and which is lagging. Because every Square order is tagged with a stable `location_id`, the split is exact and native. The web storefront usually appears as its own fulfilment location, so this card sits alongside the channel view to give you both the where-by-store and the where-by-channel picture.

|                                |                                                                                                                                                                                                                                                                         |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**             | `SUM(total_money.amount)` grouped by Square `location_id`. Each order's customer-paid total is attributed to the location it belongs to, from the Square Orders API and Locations list.                                                                                 |
| **Channel / source treatment** | **Location-driven, not channel-driven.** This splits by store, not by `source.name`. Web orders typically roll up under a dedicated online fulfilment location; in-store sales attach to the physical store that rang them.                                             |
| **Currency / unit**            | Currency per location, rendered as a horizontal bar chart ranked high to low. Each location is pinned to a single currency, so per-location figures are clean even when the account spans currencies.                                                                   |
| **Time window**                | `30D` (rolling last 30 days)                                                                                                                                                                                                                                            |
| **Alert trigger**              | none. This is a composition card. For a store going quiet, see [Active Locations](/nerve-centre/kpi-cards/square-online/active-locations); for a sharp mix swing, see [Channel Mix Shift (vs prior)](/nerve-centre/kpi-cards/square-online/channel-mix-shift-vs-prior). |
| **Roles**                      | owner, operations, finance                                                                                                                                                                                                                                              |
| **Single-currency advantage**  | Square pins each location to one currency, so unlike a blended total, each bar is a clean figure in that store's own currency.                                                                                                                                          |
| **Why it pairs with channel**  | Location and channel are different axes. A weak store and a weak channel can look the same in the headline; reading both tells them apart.                                                                                                                              |

## Calculation

Calculated automatically from your Square Online data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

## Worked example

A US bakery group on Square. Three retail cafes plus a Square Online storefront for nationwide gift boxes, which rolls up under its own web fulfilment location. The window is the 30 days to 12 Apr 26.

| Location                             | `location_id` | Revenue       | Share    | Note                |
| ------------------------------------ | ------------- | ------------- | -------- | ------------------- |
| Cafe, downtown flagship              | LOC\_001      | \$82,400      | 41.0%    | Highest footfall    |
| Cafe, midtown                        | LOC\_002      | \$54,100      | 26.9%    | Steady              |
| Cafe, suburban                       | LOC\_003      | \$28,980      | 14.4%    | Down on prior month |
| Square Online Store (web fulfilment) | LOC\_WEB      | \$35,496      | 17.7%    | Gift boxes          |
| **Revenue by Location (this card)**  |               | **\$200,976** | **100%** |                     |

Three things to notice:

1. **One store is quietly slipping.** The suburban cafe at 14.4% is the smallest physical site and, on a month-over-month read, the only one declining. The headline revenue looks fine because the flagship is strong, so this is exactly the kind of single-store softening that only a per-location view exposes. The action is to investigate that one site, not the whole business.
2. **The web location is a peer, not a footnote.** At \$35,496 the online storefront out-earns the suburban cafe. Treating web as just another location on this card keeps it visible and comparable, rather than buried in a generic online bucket. For the channel-by-channel view, pair with [Revenue by Channel](/nerve-centre/kpi-cards/square-online/revenue-by-channel-pos-online-invoices).
3. **The split is exact because of `location_id`.** Square tags every order with a stable location identifier, so there is no estimation here. That precision is what makes per-location decisions, staffing, ranging, even closure, safe to act on directly from this card.

## Sibling cards merchants should reference together

| Card                                                                                                                         | Why pair it with Revenue by Location                                                                                                                        |
| ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Revenue by Channel (POS / Online / Invoices)](/nerve-centre/kpi-cards/square-online/revenue-by-channel-pos-online-invoices) | The other axis of the same revenue. Location answers which store; channel answers which surface. A weak number on one is not the same as the other.         |
| [Active Locations](/nerve-centre/kpi-cards/square-online/active-locations)                                                   | Confirms whether a low-revenue location is genuinely trading or has gone quiet. A store with near-zero revenue may be inactive rather than underperforming. |
| [Channel Mix Shift (vs prior)](/nerve-centre/kpi-cards/square-online/channel-mix-shift-vs-prior)                             | A POS-to-online shift often traces to one location closing or reducing hours. This card tells you which store moved.                                        |
| [Total Revenue](/nerve-centre/kpi-cards/square-online/total-revenue)                                                         | The headline this card decomposes. Location shares should sum back to the total.                                                                            |
| [Total Orders](/nerve-centre/kpi-cards/square-online/total-orders)                                                           | Pairing revenue and order count per location reveals whether a store moved on footfall or on basket size.                                                   |
| [Average Order Value](/nerve-centre/kpi-cards/square-online/average-order-value)                                             | A location with high revenue but low order count is running a higher basket, useful context when comparing very different store formats.                    |

## Reconciling against Square

**Where to look in the Square Dashboard:**

[Square Dashboard, Reports, Sales by location](https://squareup.com/dashboard/sales/reports). Set the same 30-day window and read the gross sales per location. Each location's figure should match this card closely. Square's per-location reporting is native and reliable, so this is usually the cleanest reconciliation of any Square card.

Other Square Dashboard views that *look* like the same number but aren't:

* **Reports, Sales by location, gross sales**: this is the right reconciliation, location by location.
* **Sales summary, All locations**: the combined total, the headline this card breaks down, not the per-store split.
* **Sales summary, grouped by source**: the channel split, a different axis. A single store can sell across more than one source.
* **Dashboard home, Today's sales (per location)**: single-day, location-local time, too short for a 30-day comparison.

**Why our number may legitimately differ from Square Dashboard:**

| Reason                                                                                                                                                                                       | Direction of divergence               |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| **Web location mapping**. How the Square Online storefront rolls up to a fulfilment location must be consistent. If the dashboard attributes web sales differently, the web row will differ. | Differences in the web fulfilment row |
| **Gross vs net**. This card is gross. If the dashboard column is net of refunds, per-location figures read lower.                                                                            | Square net lower than this gross card |
| **Time-zone**. Square reports in each location's local time zone; Vortex IQ runs on UTC. Orders near the window boundary fall on different sides per location.                               | Boundary days off by a few orders     |
| **Sync lag**. The most recent orders take a short cycle to reach our index.                                                                                                                  | Self-resolves within minutes          |

**Cross-connector reconciliation:**

| Card                                                                                                                         | Expected relationship                                   | What causes legitimate divergence                                                                                                                                                                         |
| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Total Revenue](/nerve-centre/kpi-cards/square-online/total-revenue)                                                         | Location revenue should sum to total revenue            | Both read the same Orders API. A gap means an order was not attributed to a known `location_id`, which is rare since Square tags every order.                                                             |
| [Revenue by Channel (POS / Online / Invoices)](/nerve-centre/kpi-cards/square-online/revenue-by-channel-pos-online-invoices) | The two axes cover the same revenue, sliced differently | A single store can sell across POS and invoices, and the web location maps to the online channel, so the two cards partition the same total along different lines. They should both sum to Total Revenue. |
| [`google_analytics.ga_revenue_trend`](/nerve-centre/kpi-cards/google-analytics/revenue-trend)                                | GA4 sees only the web location                          | Physical-store revenue never reaches GA4, so GA4 should approximate only the web fulfilment row of this card, minus the usual tracking gap. Treat Square as the source of truth.                          |

**Why this card matters for Square merchants:** Square's single-currency-per-location model and stable `location_id` tagging make per-store revenue a clean, exact measurement, including the web storefront as its own location. Multi-location operators get a precise like-for-like store comparison natively, which is why a per-location revenue rollup earns a hero slot for any merchant running more than one site.

***

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  A revenue-by-location breakdown is most meaningful for multi-location merchants where each site is tagged on the order. The location model differs per platform, but the intent, compare stores like for like, is the same. These links are provided where a comparable concept exists, not as a reconciliation.

  * [`shopify.revenue-by-location`](/nerve-centre/kpi-cards/shopify/revenue-by-location)
  * [`bigcommerce.revenue-by-location`](/nerve-centre/kpi-cards/bigcommerce/revenue-by-location)
</details>

## Known limitations / merchant FAQs

**How is each order assigned to a location?**
By the Square `location_id` carried on every order. In-store sales attach to the physical store that rang them; web sales roll up under the online fulfilment location. The tagging is native and stable, so the split is exact rather than estimated.

**Does my online store show up as a location here?**
Yes, typically as its own web fulfilment location. That keeps online revenue visible and comparable next to your physical stores. For the channel-based view (POS vs online vs invoices) rather than the store-based view, use [Revenue by Channel](/nerve-centre/kpi-cards/square-online/revenue-by-channel-pos-online-invoices).

**One location shows almost no revenue. Is something broken?**
Possibly, or it may simply be inactive. A store that has closed or paused trading will show near-zero revenue but is not underperforming, it is not trading. Check [Active Locations](/nerve-centre/kpi-cards/square-online/active-locations) to tell a quiet store from a genuinely weak one before acting.

**My account spans more than one currency. Are these bars comparable?**
Each Square location is pinned to a single currency, so every bar is clean in its own currency. But comparing a USD store directly against a GBP store is comparing different units. Use the per-location filter and compare like currencies, the card does not apply FX conversion.

**Is this gross or net of refunds?**
Gross, consistent with [Total Revenue](/nerve-centre/kpi-cards/square-online/total-revenue). Refunds are not deducted per location. For a net view, pair with [Refund Rate](/nerve-centre/kpi-cards/square-online/refund-rate), or read Square's net sales by location in the dashboard.

**Should the location figures add up to Total Revenue?**
Yes. Every order belongs to exactly one location, so the per-location revenue should sum to [Total Revenue](/nerve-centre/kpi-cards/square-online/total-revenue) for the same window. A gap would mean an order lacked a recognised `location_id`, which is rare on Square.

**Why is there no alert?**
Because the right per-location mix is a property of how you have structured your business, not an event. A flagship will always out-earn a satellite store. To catch a store going quiet, watch [Active Locations](/nerve-centre/kpi-cards/square-online/active-locations); to catch a sharp channel swing, watch [Channel Mix Shift (vs prior)](/nerve-centre/kpi-cards/square-online/channel-mix-shift-vs-prior).

***

### Tracked live in Vortex IQ Nerve Centre

*Revenue by Location (in-store)* is one of hundreds of KPI pulses Vortex IQ tracks across Square Online and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English.

[Start for free](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
