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

# Promotions and Discounts

## Introduction

Shopify owns discounts; Global‑e owns cross-border pricing. In practice the two layers meet on every product page and in every checkout, so the method you choose for a promotion determines whether it will be visible — and correct — in the countries Global‑e operates.

This page is a decision layer: it tells you which promotion method applies to which market, and links to the procedures that carry out each one.

### Which Layer Owns What

See the ownership table in [Shopify Native — Integration Features](/shopify-native#integration-features).

<h2 id="before-you-start">
  Before You Start: Identify the Pricing Model of Each Market
</h2>

Every Global‑e operated market uses one of three pricing models. Promotion behaviour is different in each, so this is the first thing to establish with your CSM.

| Model | Who calculates the shopper price | How to run a markdown |
| - | - | - |
| **PCE (Prices Calculated by Global‑e)** | Global‑e's Price Calculation Engine pushes a price list to Shopify | Discount code / automatic discount, or Global‑e fixed-price file |
| **CBS (Prices Calculated by Shopify)** | Shopify, using a country coefficient + FX margin supplied by Global‑e | Discount code / automatic discount, or Shopify-side price management |
| **Fixed Prices** | Prices supplied to Global‑e in a fixed-price file | The promotional price must be supplied in the fixed-price file |

### Which Pricing Settings You Can Edit

See [Global‑e and Shopify Markets — Market Hierarchy](/global-e-and-shopify-markets#market-hierarchy).

### When Prices Are Recalculated

See [Integration — Marketing Feeds, Timing](/integration-shopify-native#marketing-feeds-liquid-storefronts).

<h2 id="choosing-a-promotion-method">
  Choosing a Promotion Method
</h2>

| Your goal | Recommended method | CSV required? |
| - | - | - |
| Same % discount in all markets | Shopify discount code or automatic discount | No |
| Discount visible at checkout only | Shopify discount code or automatic discount | No |
| Strikethrough (compare-at) price visible on PDP/PLP in operated markets | Fixed-price file with `price` + `compare_at_price` (PCE / fixed markets); Shopify-side price management (CBS markets) | Yes for PCE / fixed markets |
| Different discount depth per market or per currency | Fixed-price file (per-currency rows) or Shopify market catalogues (CBS only) | Usually yes |
| Fixed-amount discount (for example, 10 off) internationally | Convert to a percentage discount | No |
| Products/countries already covered by a fixed-price file | Fixed-price file | Yes — mandatory |
| Free shipping | Shopify free-shipping discount code, or Global‑e free shipping thresholds | No |

<h2 id="method-a-shopify-discounts">
  Method A - Shopify Discounts
</h2>

Shopify discount codes and automatic discounts are fully compatible with Global‑e and are the recommended default. They are applied on top of the localised cross-border price, in the shopper's currency, and are honoured in the Global‑e checkout.

**Guidelines**

* Use percentage-based discounts for international campaigns. Fixed-amount codes can be miscalculated when the promotion currency, store currency and shopper currency differ.
* If storefront strikethrough is required, use [Method C](/promotions-and-discounts#method-c-fixed-price-file) — or [Method B](/promotions-and-discounts#method-b-shopify-side-price-management) for CBS markets.
* Validate stacked-code scenarios with Global‑e before launch.
* Merchants using bundles should handle discount spreading with Shopify's Cart Transform API and validate the result with Global‑e.
* Verify third-party discount and markdown apps with Global‑e before launch. For any country covered by a fixed-price file, app-driven price changes are ignored.

<h2 id="method-b-shopify-side-price-management">
  Method B - Shopify-Side Price Management (CBS Markets Only)
</h2>

For markets priced by Shopify (CBS), you can manage promotional prices with your usual Shopify tooling — market catalogues, bulk price editors, price list apps, scheduled price changes.

* If a country is listed in a fixed-price file, the fixed price wins (see Method C).
* Shopify-side price management applies only to markets whose prices are calculated by Shopify. To check whether this applies to a given country, see [Global‑e and Shopify Markets](/global-e-and-shopify-markets). Moving a country between pricing models is a configuration change performed by Global‑e.

<h2 id="method-c-fixed-price-file">
  Method C - Global-e Fixed-Price File (CSV)
</h2>

Use a fixed-price file when you need an explicit sale price (and optional strikethrough) per country or per currency, or when the products/countries are already managed as fixed prices. Fixed prices override Shopify price lists set via API, regardless of country or currency restrictions.

See [Choosing a Promotion Method](/promotions-and-discounts#choosing-a-promotion-method) above.

### Compare-at Price Consistency

If a product has a Global‑e fixed price and a `compare_at_price` on the Shopify base product, a strikethrough may be displayed even when the product is not on sale. Either remove the compare-at price on the base product, or supply `compare_at_price` explicitly in the file for all fixed-price countries.

### Preparing and Uploading the Price File

See [Fixed Price Management — Setting Up Your Price Sheet](/integration-shopify-native#setting-up-your-price-sheet) for the sample file, field definitions, and the exact per-country and per-currency row formats.

### Scheduling the Price File

See [Fixed Price Management — Submitting Price Sheets](/integration-shopify-native#submitting-price-sheets).

### Upload Status, Notifications and Validation Errors

See [Tracking File Status](/integration-shopify-native#tracking-file-status) and [Fixing Validation Errors](/integration-shopify-native#fixing-validation-errors).

### Ending a Promotion

See [Fixed Price Management — Setting Up Your Price Sheet](/integration-shopify-native#setting-up-your-price-sheet).

### Uploading via API

See [Fixed Prices Upload via API](/integration-shopify-native#fixed-prices-upload-via-api).

<h2 id="free-shipping-promotions">
  Free Shipping Promotions
</h2>

Free shipping is supported. A free-shipping discount code created in Shopify is honoured on Global‑e orders. Free shipping thresholds and the free shipping banner are configured on the Global‑e side, so raise these with Global‑e when planning the campaign.

<h2 id="running-one-campaign-across-multiple-markets">
  Running One Campaign Across Multiple Markets
</h2>

1. **Map your markets** — list every operated country and its pricing model (PCE / CBS / Fixed). Request the list from your CSM.
2. **Split the campaign by model, not by country:**
   * Uniform % across all markets → one Shopify discount code or automatic discount, no file.
   * Storefront markdown needed → fixed-price file for PCE/fixed countries (per-currency rows) + Shopify-side pricing for CBS countries.
3. **Align the compare-at price** in the file and on the Shopify base product so strikethroughs are consistent.
4. **Test on one country per model** (one PCE, one CBS, one fixed) on PDP, PLP, cart and checkout.
5. **Schedule the price file** ahead of go-live, and prepare the revert file for campaign end.
6. **Notify Global‑e ahead of major sale events** (Black Friday, flash sales) so that pricing, stock validation and payment behaviour are monitored.

<h2 id="worked-example">
  Worked Example: One Campaign, Three Pricing Models
</h2>

A 20% Black Friday markdown across Germany (PCE), the United Kingdom (fixed prices) and Canada (CBS), with a storefront strikethrough required in all three.

| Country | Model | Method | What you do |
| - | - | - | - |
| Germany | PCE | Method C | Rows in the fixed-price file, per-currency for `EUR`, with `price` and `compare_at_price` populated |
| United Kingdom | Fixed | Method C | Rows in the same file, `GBP`. The promotional price must come from the file — this market has no other route |
| Canada | CBS | Method B | Promotional price set with your Shopify tooling. No file rows needed |

**Order of execution**

1. Confirm the pricing model of each of the three countries.
2. Build one file covering Germany and the United Kingdom, and build the revert file at the same time.
3. Schedule the file for the campaign start, and set the Canadian price in Shopify for the same moment.
4. Test one country per model on PDP, PLP, cart and checkout before the campaign opens.
5. At campaign end, submit the revert file and restore the Canadian price in Shopify.

If no storefront strikethrough is needed, none of the above applies: one Shopify discount code covers all three countries and no file is required.

<h2 id="known-limitations">
  Known Limitations
</h2>

| Behaviour | Affected markets |
| - | - |
| Manual market price edits are replaced by the daily price update | PCE |
| Global‑e fixed prices override Shopify discount apps and bulk price editors | Fixed-price countries |
| Discount codes show the discount at checkout, not on PDP/PLP | All |
| Fixed-amount discount codes can miscalculate across currencies | All (multi-currency) |
| Stacked discount codes in tax-inclusive markets can zero the order total and fail checkout | Tax-inclusive markets (for example, UK) |
| Buy X Get Y Free discounts spread incorrectly over bundle components, affecting duties, taxes and the commercial invoice | All |
| Unused currency rows in the price file can corrupt catalogue assignment | All |

<h2 id="pre-campaign-checklist">
  Pre-Campaign Checklist
</h2>

* Pricing model per country confirmed
* Method chosen per model
* Price file validated
* Notification email entered in the upload screen
* Upload scheduled
* One country per model tested end-to-end
* Revert file prepared
* Global‑e notified of the campaign dates


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.