Skip to main content

Documentation Portal

Integration

Integration Overview

Integration

Shopify Admin - Order Details
SYN_Order_Details.jpg

✓ Order created as per customer transaction

✓ Custom properties: Global-e order id

✓ “Global-e Carrier Service” shipping source with the actual shipper

✓ Global-e payment gateway

✓ Fraud approval order tag

✓ End-customer billing and shipping

Integration Overview: With Global‑e
SYN_Integration_Overview_With_Global_e.svg

Limitations
  • Available on Shopify Advanced and Plus plans.

  • Refund an order using a gift card only in Shopify Plus plan.

Integration Details
General Steps
  1. Install both Global‑e Apps

    1. CrossBorder App

    2. Payment App

  2. Set up Alternative Payment Methods: Enable Shopify Payments

  3. Scripts tags and theme includes (e.g. checkout) automatically added. This only applies to checkout for headless setups

  4. A Sandbox is required for the pilot to prepare the rollout

  5. Fraud approval for export from Shopify to be fulfilled based on order tag, not “PAID” status

Downstream Flow Behind Shopify

Order Flow Adjustments

Item

Requirements

Order export from Shopify

Fraud approval order tag “Globale::Approved”

Order identification – Finance

Shopify Order payment gateway "Global‑e Payments"

Order identification – Shipping

Shopify Order shipping_lines

  • “code“ contains “GLOBALE”: e.g. “123_GLOBALE_HIDDEN_DDP“

  • Or “title” will be service level such as “Standard Courier”

  • Or "source": "Global‑e Carrier Service“

Order Processing - Shipping

  • Shopify order number required (not order name or id) for processing on GE Portal

    Global‑e order id stored as order note attribute “GEOrderId”

  • Using SKU or UPC Shopify Product field for fulfilment?

Disable OMS updates to Shopify

  • If using GE Admin : Fulfilment updates – will be fed back by Global‑e

  • Refund updates – will be fed back by Global‑e

Update Product Details from Shopify to Global-e

This section described the Global-e flow for updating product details from Shopify to Global-e.

To update product details from Shopify to Global-e:

  1. Each time a product is added or updated in Shopify, Global-e gets the ProductUpdated webhook from Shopify.

  2. Global-e writes the message to Kafka.

  3. A Global-e service reads the message from Kafka.

  4. Kafka calls the following Shopify APIs:

    GraphGetInventoryItems

    GetProductService

  5. For each variant, Global-e creates a product based on Webhook Data (apiProduct).

  6. After validation, the Global-e service calls the internal Global-e API SaveProductListAPI (updatedProducts is the list of variants that was just created).

Shopify-to-Global-e Field Mapping

When performing an update, Global-e reviews the following fields. This process applies to all products.

Shopify Field

GE System Field

Description

Title

Name

The name of the product.

BodyHtml (HTML removed)

Description

Product description in plain text.

Variant ID

ProductCode

Unique identifier for each product variant.

Variant SKU or Variant Barcode

ProductCodeSecondary

Secondary identifier, often the SKU or Barcode, depending on the configuration on the Global-e side.

Product ID

ProductGroupCode

Identifier for the product group.

Variant Price

OriginalSalePrice

The sale price of the product.

Variant CompareAtPrice

OriginalListPrice

The original list price of the product.

Product Images

ImageURL

URL of the product's primary image.

https://{AdminDomain}/products/{Product Handle}?variant={Variant ID}

URL

URL to the product page in your Shopify store.

Tags

Categories, ProductClassCode

Product categorization based on tags.

InventoryItem CountryCodeOfOrigin

OriginCountryCode

The country of origin of the product.

InventoryItem RequiresShipping

IsVirtual

Determines if the product is a virtual good.

InventoryItem HarmonizedSystemCode

GenericHSCode

Harmonized System Code for international shipping.

Options

Attributes

The product attribute. The product can have up to three attributes, for example, size + colour + material.

Title

productNameEnglish

When using translation, the Shopify title is translated to productNameEnglish.

BodyHtml (HTML removed)

productDescriptionEnglish

When using translation, the Shopify Product Description is translated to productDescriptionEnglish

Tags

IsBlockedForGlobalE

Global-e has blocked the product based on Global-e's MAS internal parameter and Shopify tags.

Integration Summary
  1. Global‑e creates an account for the merchant in the Global‑e system.

  2. Global‑e requests user access and permissions to the merchant's site.

  3. The merchant installs the Global-e CrossBorder application.

  4. The merchant installs the Global-e Payment application.

  5. Optional: The merchant installs the required 3rd party applications (geolocation, search, analytics, and more).

  6. The merchant performs the required website adjustments (country selector, geolocation, and more).

  7. The merchant and Global-e gradually enable Global-e countries, first by validating the functionality of a few operated countries, and then adding the remaining countries.

Additional Integration Features

Analytics

Use the Shopify checkout object to map Shopify data to any Analytics party.

Example of GA4 Mapping

Shopify Native

Google Analytics 4

Description

checkout.line_items[line_item_count].product_id

Item_id

Product SKU

checkout.line_items[line_item_count].title

Item_name

Product name

checkout.presentment_currency

Currency

Local currency

checkout.line_items[line_item_count].price –

checkout.line_items[line_item_count] – 

.discount_allocations[line_item_count].amount

Price

Product price in local currency.

You must add the logic to deduct discounts from the product price.

checkout.line_items[line_item_count].quantity

Quantity

Product quantity

checkout.order_id

transaction_id

Order ID

checkout.subtotal_price

Value

Order value (excluding shipping and tax) in local currency.

checkout.total_tax

Tax

The customer paid the tax in local currency.

checkout.shipping_rate.price

Shipping

The customer paid the shipping cost in local currency.

Marketing Feeds (Liquid Storefronts)

Domestic Feeds  

To prevent price mismatches between the feed and the prices appearing on the storefront due to automatic geo-IP detection and redirection features, you must update the product links in their domestic feeds.

All domestic product links should append the country parameter with the 2-letter country code of their domestic market.

Example: For a US merchant: https://www.mystore.com/products/red-shirt?country=US

Failure to do this may result in warnings from Google, after which they will prevent your from submitting marketing feeds.

International feeds

There are 3 main methods you can use to generate an international Marketing feed:

  • Using supported Shopify apps (recommended).

  • Manually generating the feed yourself by writing a custom script or program, or creating an Excel sheet.

  • Using a 3rd party service such as Feedonomics or Channel Advisor.

Supported Shopify apps

The following apps are compatible with Shopify Markets' multi-currency features:

Pricing in the feed

International prices in marketing feeds must be retrieved from the Shopify platform to ensure they are correct.

Due to the complexity of doing this via the APIs, most merchants use a compatible app, which can easily generate the feeds with the correct localized prices.

Alternatively, if you are using a 3rd party vendor such as Feedonomics, they will handle this for you. Feedonomics will have you create a custom app and share the API key with them.  This will allow them to retrieve the international prices directly from the Shopify contextualized price API

Shopify Markets API for product price retrieval:

Retrieving Prices Manually

To generate your own marketing feed you need to generate the prices manually in one of the following ways:

  • Get the price data via Shopify Product Feeds feature. This is likely the most efficient method to retrieve all product pricing data.

    For more information see Developer Changelog, Product Feeds, and Unidirectional Product Synchronization

  • Get the price data via Shopify storefront API.

    For more information see Query Product Prices.

  • Get the price data via Shopify Admin API.

    • Option 1:

      • Step 1: Get the price ID for each market. For example, CA Price, AU Price etc. See Pricelists API.

      • Step 2: Get the localized price for each product, using the price IDs. See Pricelist API

    • Option 2: use the contextualPricing request to retrieve the price for each variant and country combination. For example, replacing ProductVariant and country with each request:

      {
          productVariant(id:"gid://shopify/ProductVariant/39999460245576") 
          {
              id
              product{id}
              contextualPricing(context:{country:CA}) 
              {
                  price{amount, currencyCode}
                  compareAtPrice{amount, currencyCode}
              }
          }
      }

      Note

      These queries can be set up as bulk operations which do not count against rate limits but may take significantly longer to complete.

Country and language considerations

If you have subfolders enabled, you can use the subfolders in your product URLs.

Example: https://mystore.com/en-ca/product/shoes

You can also use the country parameter, regardless of the subfolder settings. If you do have subfolders enabled, this link will redirect the customer to the appropriate subfolder.

Example: https://mystore.com/product/shoes?country=CA

You can use the subfolder and country parameter together, but this is redundant and not recommended.

Example: https://mystore.com/en-ca/product/shoes?country=CA

Note: If the countries do not match, the country parameter takes precedence.

If you have translations for a country’s default language, you can use subfolders to indicate that in the product URL.

Example: https://mystore.com/es-es/product/shoes

Timing

  • Merchants in PCE countries: You should generate your feeds at 5:00 AM UTC to ensure the daily FX price updates are completed. This configured time may shift to an hour earlier during daylight savings time.

  • Merchants in CBS countries: You should generate your feed at 1AM UTC to ensure the updated country FX rate is in Shopify.

Updating product links

The following methods allow you to update your product links to include the targeted international country by leveraging:

Fixed Price Management
Overview

The Fixed Price Management feature lets you manage your local market prices by uploading a file describing the fixed prices for specific products and territories. Note that these prices override Shopify pricelists set via API, ignoring country or currency restrictions. In the past you could only submit new prices to update immediately. Now you can select a date and time for your price submissions to go into effect.

The following figure shows the Fixed Price Management screen:

Main_Screen.png
Uploaded File Table

The following figure shows the uploaded file table:

Uploaded_File_Table.png

The table above shows the file, status, submission date, effective date, and user.

Accessing Fixed Price Mangement

To access the Fixed Price Management feature

  1. Navigate to Merchants > Product Management > Fixed Price Management from the top menu.

  2. Select a merchant from merchant menu located at the top of the page.

Setting Up Your Price Sheet

Price sheets you submit must be in CSV format, and you can download a sample CSV format to use as the basis for your submissions by clicking Download Sample. The sample file includes an example and explanation of each value.

Price sheets require the following information:

Header

Description

Example

sku

Enter the Product SKU as it appears in your product catalogue. The SKU may not include spaces.

If you are using barcodes instead of SKU, this field must contain the barcode. However, leave the column name as “SKU”.

AD-01-white-6

variant_id

Enter the Product Variant ID, as assigned in your product catalogue.

If this field is empty, the SKU field must be populated.

36485954240671

country_code

Enter the ISO-2 country code to indicate the country relevant to this price.

For instance, DE (Germany), US (USA).

If this field is empty, the currency_code field must be populated.

DE

currency_code

Enter the 3-char currency code (ISO-4271) to indicate the currency relevant for this change.

For instance, USD (US dollar), AUD (Australian dollar), EUR (Euro), CHF (Swiss franc), and more.

This field is required.

EUR

price

Enter the fixed price value for the product. This value can only contain numbers.

Caution

Do not include commas in the prices you list in the CSV file as the prices will not parse correctly.

Keep empty to remove a previously set fixed price without setting a new one. In this case, the dynamic price conversion rules set for the current country apply.

29.95

compare_at_price

Enter the fixed price value of the product before the discount. This value can only contain numbers.

Caution

Do not include commas in the prices you list in the CSV file as the prices will not parse correctly.

Keep empty to remove a previously set fixed price without setting a new one. In this case, the dynamic price conversion rules set for the current country apply.

49.95

Populating Your File

Once you’ve set up your file, you can populate it.

Note

Global-e does not support uploading XLS files. Enabling Editing in your CSV file may cause your security settings to change the CSV file format to XLS. Before uploading a file, verify that you’ve saved it in the CSV format.

Note

Including commas in your file will not upload.

To populate your file

  1. Add a list of products with one product per row.

  2. Save your file in CSV format.

Submitting Price Sheets

To submit price sheets

  1. Select one of the following:

    • Submit Now – Skip to Step 2.

    • Schedule Upload – Set your start date and time.

  2. Upload your csv file by clicking Upload CSV File.

  3. Click Submit.

    The file is added to the table showing all the uploaded price sheets.

  4. (Optional) If your file fails uploading, resolve the issue and continue with Step 5.

    See Fixing Validation Errors to identify and resolve the cause of your failed upload.

  5. Provide an email address.

Note

You can sort the uploaded price sheets by date using the From Date and To Date fields to the right of the email field.

Global‑e will send you a notification email when you upload a list and a follow-up email when the upload is completed. Note that you can dragdown the email address field from the arrows to see previously entered email addresses.

Rescheduling Your Upload Date

You can edit your upload schedule as long as your file in the Ready for upload stage and has not completed uploading.

To reschedule your upload date

  1. Click image3.png located at the far right in a row.

  2. Reschedule your upload and click Update.

Cancelling a Publish

You can cancel a publish as long as your file has not completely unloaded. You can do by this by clicking image4.png located at the far right in a row.

Reviewing Current Fixed Prices

You can review your current fixed prices by downloading a CSV file containing the current fixed prices. To this, click image5.png located near the upper right corner of the table.

Tracking File Status

The Fixed Price Management feature displays the file upload and file validation statuses when you upload your files. This section describes these statuses.

File Upload Statuses

The file upload status describes whether your file has uploaded or not, due to an error.

The file upload statuses are shown in the table below:

Status

Description

Ready for Upload

A submitted file containing some valid prices ready for upload on the scheduled date. 

Uploading

A submitted file in the process of being uploaded. 

Uploaded

An uploaded file with successfully updated prices. 

Partially Uploaded

An uploaded file with a combination of successfully updated and invalid prices.

Failed

A completely invalid file. Invalid files are not uploaded.

Canceled

A submitted file that a user manually canceled. 

For more information on fixing validation errors, see Fixing Validation Errors.

File Validation Statuses

The file validation status describes whether your file has been validated or not.

The file validation statuses are shown in the table below:

Indicator

Status

Description

image6.png

Valid

File validated

image7.png

Partially Valid

Some validation errors were found

image8.png

Invalid

No prices were accepted

You can click on the indicators displayed in the table, which opens a csv sheet containing only the valid or invalid rows respectively. All invalid files must be corrected and uploaded separately.

For information on fixing validation errors, see Fixing Validation Errors.

Fixing Validation Errors

This section describes the validation errors that may occur when you upload your price lists.

Error

Error Message

Resolution

Too many rowshave the same group key. Duplicates of {Sku}_{VariantId} exceeded max allowed - 500 (near double size of countries count in the database).

The same SKU and Variant ID appear more than once for the same country on line [Line Number]. Delete duplicate rows and retry.

Invalid SKU - SKU contains whitespace.

Invalid SKUs found in line: [Line Number]. The SKU contains whitespace. Amend the SKU and retry. 

Make sure to use unique names for the Product Code and Secondary Product Code. If the file contains an SKU and not a variant_id and the SKU is duplicate, the row is skipped. If the file contains both, an SKU and a variant_id , and the SKU is duplicate or does not exist, the row is skipped. We recommend uploading a file with either the SKU or the variant_id, not both. It is best to use variant_id and not an SKU since variant_id is unique in the Global‑e database whereas SKU is not unique (can be a duplicate SKU).

Empty SKU and Variant ID - Both SKU and variant ID are missing.

Both SKU and Variant ID are missing in line: [Line Number]. provide at least one to proceed.

See Invalid SKU - SKU contains whitespace.

Empty Country and Currency Code - Missing country or currency code.

Both Country and Currency codes are missing in line: [Line Number]. Please provide at least one to proceed.

See Invalid SKU - SKU contains whitespace.

Invalid country code

Invalid or not operated country code: [Line Number]. Provide a valid ISO-2 code (e.g., DE for Germany, US for USA) and make sure the country is operated by Global-e, then retry.

If the country, currency, or prices are empty, the entire CSV file fails. Make sure the file contains the correct information.

Invalid currency code

Invalid currency code: [Line Number]. Provide a valid ISO-4217 code (e.g., USD, EUR) and retry.

If the country, currency, or prices are empty, the entire CSV file fails. Make sure the file contains the correct information.

Invalid price

Invalid price in line: [Line Number]. Prices must be numeric. Delete the field content to remove the previously fixed price stored and type the new value. 

Price cannot be set to zero (X2 for ListPrice/ SalePrice) - the price is zero.

Price cannot be zero, in line: [Line Number]. Ensure the price is greater than 0 or leave the field empty and retry

Country-currency mismatch

Currency mismatch, in line: [Line Number]. The currency code does not match the country. Use the correct currency for that country and retry. 

Non-numeric product code

Non-numeric product code in line: [Line Number]. Provide a numeric product code and retry.

Duplicated SKU

Duplicated SKU in line: [Line Number]. Remove the duplicate SKU and retry. 

See Invalid SKU - SKU contains whitespace.

No matching SKU and variant product found in the database.

Missing SKU or Variant ID in line: [Line Number]. No matching product was found in the database. Check the SKU and Variant ID and retry.

Make sure that the SKU / variant_id exists in Shopify before uploading the CSV file to Global‑e. (Make sure you have uploaded the product to Shopify before uploading the CSV file to Global‑e).

Product code or secondary product code is not unique.

NA

See Invalid SKU - SKU contains whitespace.

The file is not in CSV format.

Make sure to save your file in CSV format.

Wrong header

NA

Make sure the header is set as follows: sku,variant_id,country_code,currency_code,price,compare_at_price

Spaces in the data

NA

Make sure that the data and header in the file do not contain spaces.

Fixed Prices Upload via API

The Upload Fixed Prices API lets you upload your list of fixed prices to Global-e. In addition, you can check the upload status and retrieve the error file.

Prerequisites

Prepare your CSV file containing your list of fixed prices and populate it.

Each column in your CSV file must have the following headers, respectively:

  • SKU

  • Variant_id

  • Country-code

  • Price

  • Compare_at_price

Do not use commas as part of the values in the following fields: price and compare-at-price

For more information, see Set Up a New Price List.

Authentication: MerchantGUID

To implement API calls with Global-e the only required information is the merchantGUID provided by Global-e.

For authentication, make sure to include your Merchant GUID as part of each call or as part of the header so that Global-e can verify your identity. Make sure to use the appropriate merchantGUID, depending on the Global‑e integration environment used for development or production purposes. See Global-e Environments.

MerchantGUID in URL

Add your MerchantGUID as part of each API URL.

MerchantGUID as part of the header

Add your MerchantGUID as part of the header as illustrated below.

curl --location 'https://[globale domain]/[API]' \
--header 'MerchantGUID: D2ED2A7F-F6ED-4CCB-B611-B44AC8D02250' \
--header 'Content-Type: application/json' \
--data-raw '
Flow
  1. Call the UploadFile endpoint to upload your Fixed Prices CSV file to Global-e.

  2. Call the GetUploadedFileDetails to get the details of the file you uploaded and verify the Upload status.

  3. Call GetFileWithValidationErrors to retrieve the file containing the errors.

If previously configured, you can retrieve your configuration file, modify your price list, and re-upload it. However, note that the prices (data) are overwritten and a new RunId (Global-e ID) is created.

UploadFile

Upload your Fixed Price CSV File to Global-e.

MethodURL

POST https://<domain address>/PCE/UploadFile?merchantGUID=<Merchant GUID>

Request

<Fixed Price CSV File> (from data)

Response

200 OK:
{
    "RunId": "03fb441b-55ec-4392-b0ae-2e1805c6f492"
}

Errors

HTTP Status Code

Message

Description

400

{ 
"Message": "CSV file contains rows with invalid
 data. Make sure the file has the correct format
 and contains the correct information.",

"Errors": [
",43416058200314,,PLN,201,201,400",
",43416058200314,FR,EUR,301,401,400"
  ]
}

This file has the wrong column format and/or values. Check the rows that returned the error.

400

"Only one file should be uploaded. Make sure to upload only one file."

This endpoint expects only one file per request.

400

"The uploaded file is empty and cannot be processed. Make sure to populate the file correctly."

The file is empty or did not load correctly.

400

"The format of the uploaded file is incorrect. Please upload a CSV file. Make sure to save your file to .csv format."

The uploaded file had the wrong extension.

500

"Failed to upload the file. Please contact Support."

This is an internal error. If it appears, please contact Support.

CUrl EXAMPLE:

curl--location--request POST 'https://<domain>.com/PCE/UploadFile?merchantGUID=<Guid>' \
--form '=@"/<Full Path Name>.csv"'
GetUploadedFileDetails

This endpoint returns the details of the uploaded file, including the upload completion status.

PATH: https://<domain address> /PCE/GetUploadedFileDetails?merchantGUID=<Merchant GUID>&runId=<GUID provided by Upload file endpoint>

TYPE: GET

RESPONSE:

200 OK:
{
    "RunId": "84f9929c-1ea1-4edd-bc56-c4ef73a92e88",
    "FileName": "[Ecommerce_Platform_Name]_QA_Artem_01.08.2023_06_all_valid.csv",
    "DateCreated": "2023-08-11T10:04:57.462022+00:00",
    "Status": "Completed",
    "HasErrors": false,
    "CompletionPercentage": 100
}

PARAMETERS:

Parameter

Type

Description

RunId

string

The Global-e file Id

Sample UID format: 84f9929c-1ea1-4edd-bc56-c4ef73a92e88

FileName

string

The file name given by the merchant in CSV format

DateCreated

string

The file upload date.

Status

string

Statuses:

Submitted: When the file is first uploaded, the status is set to "Submitted". (Submitted: 0%)

Processing: As the file is being uploaded, the status changes to Processing. (Example: Processing: 64%)

Completed: If the upload finishes without errors, the status changes to Complete. (Completed: 100%)

Failed: If the upload fails due to an error, the status changes to Failed. See Errors to troubleshoot the issues. (Failed: 0%)

HasErrors

bool

Whether the file upload has errors.

CompletionPercentage

Integer

Shows the progress of the file upload completion in per cent.

Note: The integer value is a number without the per cent symbol.

Example: "CompletionPercentage": 100

ERRORS:

HTTP Status Code

Message

Description

400

"Cannot find the information for the current runId!"

The application cannot find the upload with this RunId.

This can happen if the file did not upload correctly, the RunId is empty, or if the RunId has been modified.

Verify that your file has uploaded correctly and returns a valid RunId.

500

"Failed to get the uploaded file’s {runId} for PCE.”

Unexpected internal error during file upload. Please contact Support.

PCE: Price Calculation Engine

GetFileWithValidationErrors

This endpoint always returns a CSV file with the headers. If there are errors, the file contains the rows where errors were identified.

PATH: https://<domain address> /PCE/GetFileWithValidationErrors?merchantGUID=<Merchant GUID>&runId=<GUID provided by Upload file endpoint>

TYPE: GET

RESPONSE:

          200 OK:
          File (application/octet-stream)

ERRORS:

HTTP Status Code

Message

Description

400

"Cannot find the information for the current runId!"

The application cannot find the upload with this RunId.

This can happen if the file did not upload correctly, the RunId is empty, or if the RunId has been modified.

Verify that your file has uploaded correctly and returns a valid RunId.

400

"Failed to get the validated file containing the rows with errors for PCE."

Unexpected internal error during file upload. Please contact Support.

PCE: Price Calculation Engine

Set up a New Price List

The following procedure details the steps required to set up a new list of fixed prices and upload it to Global‑e.

Step 1. Prepare your Price List in CSV Format

In your CSV file, make sure to name the columns headers A through F, as shown below:

Column Headers
Field Descriptions and Requirements

Headers / Fields

Description

SKU

Enter the Product SKU as it appears in your product catalogue . The SKU may not include spaces.

If this field is empty, the Variant ID field must be populated.

Variant ID

Enter the Product Variant ID, as assigned in your product catalogue .

If this field is empty, the SKU field must be populated.

country_code

Enter the ISO-2 country code to indicate the country relevant to this price.

For instance, DE (Germany), US (USA).

If this field is empty, the currency_code field must be populated.

currency_code

Enter the 3-char currency code (ISO-4271) to indicate the currency relevant for this change.

For instance, USD (US dollar), AUD (Australian dollar), EUR (Euro), CHF (Swiss franc), and more.

If this field is empty, the country_code field must be populated.

price

Enter the fixed price value for the product. This value can only contain numbers.

Caution

Do not include commas in the prices you list in the CSV file as the prices will not parse correctly.

Keep empty to remove a previously set fixed price without setting a new one. In this case, the dynamic price conversion rules set for the current country apply.

compare_at_price

Enter the fixed price value of the product before the discount. This value can only contain numbers.

Caution

Do not include commas in the prices you list in the CSV file as the prices will not parse correctly.

Keep empty to remove a previously set fixed price without setting a new one. In this case, the dynamic price conversion rules set for the current country apply.

Step 2. Populate your CSV File

Note

When enabling editing in your CSV file, your security settings may change the CSV file format to Excel. Make sure to save your file back to CSV before uploading it to Global-e.

To populate your CSV file:

  1. Add your list of products, one product per row with the relevant information in the relevant column, according to the Field Descriptions and Requirements detailed in ???.

    To ensure optimal accuracy, make sure to use the following values when populating fixed price data in your CSV file.  

    Caution

    Do not include commas in the prices you list in the CSV file as the prices will not parse correctly.

    • Price per country and currency:

      Header: sku,variant_id,country_code,currency_code,price,compare_at_price
      Value: {{sku}},{{variant_id}},DE,EUR,6,6    

      OR (based on variant_id):

      Header: sku,variant_id,country_code,currency_code,price,compare_at_price
      Value: ,{{variant_id}},DE,EUR,6,6
    • Price per currency (affects all countries with the same currency):

      Header: sku,variant_id,country_code,currency_code,price,compare_at_price
      Value: {{sku}},{{variant_id}},,EUR,6,6       

      OR (based on variant_id):

      Header: sku,variant_id,country_code,currency_code,price,compare_at_price
      Value: ,{{variant_id}},,EUR,6,6  
  2. When done, make sure to save your file as CSV.

Multi-Hubs

Shipping from Multiple Countries using a Single Store

Overview

You can use more hubs in various countries alongside your primary hub. This approach enables faster delivery times to customers and cost reduction for the merchant (Shipping, D&T).

You can operate hubs from different Shopify stores, but this only allows a fixed setup (one hub per destination) and adds the overhead of managing multiple stores.

Multi Hub Models

The Global-e Multi-hub solution for Shopify allows brands to fulfil orders to Global‑e operated markets from different locations worldwide.

The following operational models are supported (depending on brand requirements).

Fixed model

Each warehouse serves only specific countries

Fallback model

Order fulfilment is performed at the local/regional warehouse used to serve specific countries but when stock is not available, order fulfilment falls back to the main warehouse.

Fully Dynamic model

Each warehouse can be used to fulfil orders to any country

Note

Currently, the Shopify routing logic prioritises the location based on the distance between the hub and the customer shipping address. Therefore, currently, orders must ship in their entirety from a single location.

Key Considerations

The following

  • Operations

    Countries to be served from each hub

    Options available for outbound and inbound shipping

  • Technical

    Order routing from checkout decision

  • Legal & Finance

    The Merchant and Global-e both have a local entity or registration in the country

    Goods are owned by the merchant at the point of sale to Global-e 

    Reconciliation and invoicing between the new contracting parties

Scenarios

Title

Description

Known issues / limitations

Multi storefronts with multi merchants

Separate GE merchants, each configured on separate site/store

when the origin is identified user is redirected to relevant store to complete checkout

Cart and order history typically not maintained between sites which makes it a poor solution or create additional effort

  • catalog and restrictions

  • configurations duplication

Single merchant no split

Single merchant on one site with relevant checkout and billing rules loaded based on the cart hub country.

  • dual setups with EU only currently

  • 1 reconciliation currency for all orders

Prerequisites

Make sure you have the Shopify new order flow configured.

Provide the following information to Global-e:

Topic

Notes

Logistics map - origins and destinations

Countries with hubs/stores ship from:

  • Mapping of destinations to ship to from each origin

  • All locations are serving the same products

  • With fallback from the central warehouse if not available locally

Note that currently, Shopify does not support ship-to-store or pick-up

API/Admin coverage or requirements from each new location (same usual rules regarding API / Full WYOL)

Carriers

The list of carriers for outbound and returns logistics

Storefront architecture

  • using one or multiple websites

Stock decision logic

Make sure to choose the country from which to ship the stock before checkout, except for locations within the EU.

Settlement Currency

Full order multi-hub:  For a single site, the reconciliation currency must be the same as your default Merchant currency.

Legal/Commercial

  • Legal : The local entity or registration to be used for reconciliation

  • Local stores and warehouses must be brand-owned; they may not be partners distributors, or franchises.

Integration Flow and Responsibilities

This section details the activities that the Merchant and Global-e need to perform to prepare the setup for the feature.

To prepare the setup for this feature:

  1. The Merchant:

    1. Sets up Shopify locations with product inventory in Shopify.

    2. Sets up Shipping Profiles in Shopify. 

    3. Sets up Order Routing Rules in Shopify. 

    See Shopify Settings.

  2. Global-e configures the feature for you on the Global-e side.

  3. The Merchant and Global-e collaborate to align and address the financial and operational requirements.

Shopify Settings
Set up the Location of Each Hub

Create a location for each local hub.

Setup Locations (Settings → Locations)

image1.png
Set up Product Availability in Each Location

Define the stock availability of each product or variant per location.

Products → For Each Product Variant

image2.png

You can hide products from markets where there are no hubs available for fulfilment.

image3.png
Set up Shipping Profiles

Assign the shipping profile to each location.

  • Define the markets to be fulfilled from the location

  • Rate set a ‘Global-e Carrier Service’ (the relevant shipping services are configured on the Global-e side)

Settings → Shipping and delivery

image4.png
image5.png

For fixed multi-hubs, set up each shipping origin only for the relevant destinations.

For dynamic multi-hubs, set up shipping origins for all destinations. (Prerequisite - Shopify order routing is enabled for the store)

Set up Order Routing Rules

Define the order routing logic for the different locations as configured in your Shopify store, based on the selected operation model (fixed, fallback, or fully dynamic).

Note that Global-e can request for this feature to be enabled if it is not already available in your store,

Settings → Shipping and delivery → Order routing

Note

Since this is still an Early access feature, it requires that Shopify adds it to the merchant store. Shopify documentation: https://help.shopify.com/en/manual/shipping/setting-up-and-managing-your-shipping/order-routing

image6.png
image7.png
  • Select Ship from the closest location OR Stay within the destination market

Set up Stock Availability for Each Hub

To make sure that the Shopify routing logic can decide based on the stock available in each hub, clear the option “Continue selling when out of stock”.

image8.png

Make sure that all products have the same location settings in all shipping profiles.

Taxes and Duties

Global-e configures the taxes and duties for Merchants with domestic sales in the US or Canada.

Mapping Orders to 3rd Party Systems
Introduction

This guide provides instructions on how to import Global-e orders from Shopify to systems such as an OMS/ERP, WMS or middleware.

Key Shopify order data and high-level downstream order flow are illustrated for mapping purposes.

If you are currently running live Global‑e’s previous Shopify integration and upgrading to the new version integrated natively into Shopify’s checkout, see Migrating Global‑e to the Native App.

Downstream Data Flow from Shopify

Starting with the checkout, international prices, duties & taxes, and shipping methods are calculated by Global‑e.

Downstream_Data_Flow_From_Shopify.svg

Order Creation

Orders are created by Shopify, per Shopify’s multi-currency concepts in two currencies:

  • Presentment money: This is the currency that the international customer sees on the storefront, cart, checkout, and transactional emails.

  • Shop money: This is the main currency of your Shopify store; this currency is also used for reporting and analytics.

    Note

    Shop money is what should be mapped downstream by your order management and accounting systems.

Fraud Check

Fraud check is managed by Global‑e for international orders, as follows:

  1. Initial order creation has the payment status PENDING (financial_status property)

    Important

    Do not submit any orders for fulfilment at this time and wait for Global‑e to complete the fraud check.

  2. When completed, the payment status gets updated to PAID .

    You can now submit orders for fulfilment.

Note

For merchants who have configured Shopify to capture payment at fulfilment or manually, the "AUTHORISED" status assigned by Shopify at order validation will be updated automatically to "PAID" by Global-e after a few minutes.

WMS and Operations

For Global‑e to generate international shipping labels and customs documents, the warehouse pick-pack process must reference the Shopify order name and Shopify SKU.

Alternatively, you can use the Shopify order number. EAN, barcode, and variant ID. Contact Global‑e as an additional configuration may be needed in those cases.

See End-to-End Order Flow Interfaces for an illustration of end-to-end interfaces between Shopify, OMS/ERP, and WMS.

Shopify Order Data

For illustration, this Shopify store is from a US merchant and the storefront currency is based on USD. A single product was purchased.

Let’s examine two different order scenarios:

Duties & Taxes Paid by the Customer

Market: Israel. The customer pays separately for all the D&T-related costs, including the customs clearance fee (CCF) represented here in the Additional Fee field.

DT_Customer.png

Note

The Additional Details section provides information; it is not required for data consumption. CalculatedDutySubsidy represents the total order level subsidy in storefront currency. In this example, there is no subsidy for this order, hence the $0.

Paid_Customer.png

Total

{"total_line_items_price_set":
   {"shop_money":{"amount":"992.51","currency_code":"USD"},
    "presentment_money":{"amount":"3650.00","currency_code":"ILS"}}}

Current Subtotal Price

"current_subtotal_price": "886.17",
            "current_subtotal_price_set": {
                "shop_money": {
                    "amount": "886.17",
                    "currency_code": "USD"
                },            

Discount

{"current_total_discounts_set":
   {"shop_money":{"amount":"99.25","currency_code":"USD"},
    "presentment_money":{"amount":"365.00","currency_code":"ILS"}}}

Shipping

{"total_shipping_price_set":
   {"shop_money":{"amount":"10.00","currency_code":"USD"},
    "presentment_money":{"amount":"36.78","currency_code":"ILS"}}}

Duties

{"current_total_duties_set":
   {"shop_money":{"amount":"0.00","currency_code":"USD"},
    "presentment_money":{"amount":"0.00","currency_code":"ILS"}}}

Tax

{"current_total_tax_set":
   {"shop money":{"amount":"172.33","currency_code":"USD"},
    "presentment_money":{"amount":"633.74","currency_code":"ILS"}}}

Additional Fee

{"current_total_additional_fees_set":
   {"shop_money":{"amount":"2.70","currency_code":"USD"},
    "presentment_money":{"amount":"9.93","currency_code":"ILS"}}}

Total

{"current_total_price_set":
   {"shop_money":{"amount":"1078.29","currency_code":"USD"},
    "presentment_money":{"amount":"3965.45","currency_code":"ILS"}}}

Important

The Additional Fee set is a new Shopify data line available in Shopify’s API release version 2023-04. See https://shopify.dev/docs/api/admin-rest/2023-04/resources/order.

Duties & Taxes Included in the Product Price

Market: United Kingdom. Duties, taxes, and customs clearance fees are all-inclusive in the £500.00 product price in this example.

DT.png

CalculatedDutySubsidy: 139.72 USD includes duties, VAT, and CCF.

Notice here that the D&T line items do not appear in the order details at all.

Paid.png

Subtotal

{"total_line_items_price_set":
    {"shop_money":{"amount":"620.95","currency_code":"USD"},
     "presentment_money":{"amount":"500.00","currency_code":"GBP"}}}

Discount

{"current_total_discounts_set":
   {"shop_money":{"amount":"62.09","currency_code":"USD"},
    "presentment_money":{"amount":"365.00","currency_code":"GBP"}}}

Shipping

{"total_shipping_price_set":
   {"shop_money":{"amount":"12.42","currency_code":"USD"},
    "presentment_money":{"amount":"15.00","currency_code":"GBP"}}}

Total

{"current_total_price_set":
   {"shop_money":{"amount":"577.48","currency_code":"USD"},
    "presentment_money":{"amount":"465.00","currency_code":"GBP"}}}

Conclusion

  • Duty, tax, and customs clearance fees (CCF) are all part of the overall duties and taxes calculation.

  • When a customer’s checkout displays duty &amp; tax-related fees, these costs will appear as order line items.

  • Any subsidized costs, whether both duties and taxes or just duty or just taxes – will appear in the note attributes CalculatedDutySubsidy field.

Accounting Perspective

From a Shopify view, orders are created per customer B2C transaction with Global‑e.

From an accounting perspective, orders should be treated as domestic B2B orders booked against a Global‑e account.

You may book any order line items to calculate gross revenue, and of course, bear in mind that Global-e is responsible for handling remittance and filing of local VAT and other taxes in most scenarios.

For estimated net revenue, you can subtract the CalculatedDutySubsidy field.

For actual revenue, refer to the Global‑e financial reconciliation report.

Shipping Lines

When the Global-e CrossBorder app gets installed in Shopify, a shipping zone with Global-e operated countries is automatically added. The order shipping line data is standardized by Shopify and cannot be changed.

"shipping_lines": [{
        "id": 4525092405308,
        "code": "EXPRESS_GLOBALE_DDP",
        "source": "Global‑e Carrier Service",
        "title": "Express Courier (Air)"

Field Description:

  • Source: fixed value Global‑e Carrier Service

  • Title: For shipping from the US, two possible values only: Express Courier (Air) or Standard Courier. For other countries, several possible values, depending on the suggested shipping service levels:

    • Standard Courier

    • Express Courier (Air)

    • Tracked Post

    • Standard Delivery

    • Virtual Goods

    • Express Courier

    • Untracked Post

    • Store Collection

    • Standard Post

    • Express Shipping

    • Standard Shipping

    • Collection Point

    • Tracked Standard

    • Express Plus

    • Premium Standard

    • Tracked Post to Pickup location

  • Code: multiple permutations, depending on the service type.

    Important

    The code always contains GLOBALE.

    Notes:

    • For services in use for specific stores, contact a Project Manager.

    • When shipping from the US, note that only Express Courier (Air) and Standard Courier mappings are applicable.

Service Values:

Express Courier (Air)

5 possible permutations:

  • EXPRESS_GLOBALE_DDU

  • EXPRESS_GLOBALE_OPT_DDP

  • EXPRESS_GLOBALE_DDP

  • EXPRESS_GLOBALE_HIDDEN_DDP

  • EXPRESS_GLOBALE_TAX

Standard Courier

5 possible permutations:

  • STANDARD_GLOBALE_DDU

  • STANDARD_GLOBALE_OPT_DDP

  • STANDARD_GLOBALE_DDP

  • STANDARD_GLOBALE_HIDDEN_DDP

  • STANDARD_GLOBALE_TAX

Tracked Post

5 possible permutations:

  • PRIORITYPOST_GLOBALE_DDU

  • PRIORITYPOST_GLOBALE_OPT_DDP

  • PRIORITYPOST_GLOBALE_DDP

  • PRIORITYPOST_GLOBALE_HIDDEN_DDP

  • PRIORITYPOST_GLOBALE_TAX

Standard Delivery

5 possible permutations:

  • AIRMAIL_GLOBALE_DDU

  • AIRMAIL_GLOBALE_OPT_DDP 

  • AIRMAIL_GLOBALE_DDP

  • AIRMAIL_GLOBALE_HIDDEN_DDP 

  • AIRMAIL_GLOBALE_TAX

Virtual Goods

5 possible permutations:

  • VIRTUALGOODS_GLOBALE_DDU

  • VIRTUALGOODS_GLOBALE_OPT_DDP

  • VIRTUALGOODS_GLOBALE_DDP

  • VIRTUALGOODS_GLOBALE_HIDDEN_DDP

  • VIRTUALGOODS_GLOBALE_TAX

Express Courier

5 possible permutations: 

  • EXPRESSCOURIERWITHOUTSAMEDAY_GLOBALE_DDU

  • EXPRESSCOURIERWITHOUTSAMEDAY_GLOBALE_OPT_DDP

  • EXPRESSCOURIERWITHOUTSAMEDAY_GLOBALE_DDP 

  • EXPRESSCOURIERWITHOUTSAMEDAY_GLOBALE_HIDDEN_DDP 

  • EXPRESSCOURIERWITHOUTSAMEDAY_GLOBALE_TAX

Untracked Post

5 possible permutations:

  • UNTRACKEDPOST_GLOBALE_DDU 

  • UNTRACKEDPOST_GLOBALE_OPT_DDP 

  • UNTRACKEDPOST_GLOBALE_DDP 

  • UNTRACKEDPOST_GLOBALE_HIDDEN_DDP 

  • UNTRACKEDPOST_GLOBALE_TAX

Store Collection

5 possible permutations:

  • STORECOLLECTION_GLOBALE_DDU

  • STORECOLLECTION_GLOBALE_OPT_DDP

  • STORECOLLECTION_GLOBALE_DDP

  • STORECOLLECTION_GLOBALE_HIDDEN_DDP

  • STORECOLLECTION_GLOBALE_TAX

Standard Post

5 possible permutations:

  • STANDARDPOST_GLOBALE_DDU

  • STANDARDPOST_GLOBALE_OPT_DDP 

  • STANDARDPOST_GLOBALE_DDP

  • STANDARDPOST_GLOBALE_HIDDEN_DDP

  • STANDARDPOST_GLOBALE_TAX

Express Shipping

5 possible permutations:

  • EXPRESSSHIPPING_GLOBALE_DDU

  • EXPRESSSHIPPING_GLOBALE_OPT_DDP

  • EXPRESSSHIPPING_GLOBALE_DDP

  • EXPRESSSHIPPING_GLOBALE_HIDDEN_DDP 

  • EXPRESSSHIPPING_GLOBALE_TAX

Standard Shipping

5 possible permutations:

  • STANDARDSHIPPING_GLOBALE_DDU

  • STANDARDSHIPPING_GLOBALE_OPT_DDP

  • STANDARDSHIPPING_GLOBALE_DDP

  • STANDARDSHIPPING_GLOBALE_HIDDEN_DDP

  • STANDARDSHIPPING_GLOBALE_TAX

Collection Point

5 possible permutations:

  • COLLECTIONPOINT_GLOBALE_DDU

  • COLLECTIONPOINT_GLOBALE_OPT_DDP

  • COLLECTIONPOINT_GLOBALE_DDP

  • COLLECTIONPOINT_GLOBALE_HIDDEN_DDP

  • COLLECTIONPOINT_GLOBALE_TAX

Tracked Standard

5 possible permutations:

  • TRACKEDSTANDARD_GLOBALE_DDU

  • TRACKEDSTANDARD_GLOBALE_OPT_DDP

  • TRACKEDSTANDARD_GLOBALE_DDP

  • TRACKEDSTANDARD_GLOBALE_HIDDEN_DDP

  • TRACKEDSTANDARD_GLOBALE_TAX

Express Plus

5 possible permutations:

  • EXPRESSPLUS_GLOBALE_DDU

  • EXPRESSPLUS_GLOBALE_OPT_DDP

  • EXPRESSPLUS_GLOBALE_DDP

  • EXPRESSPLUS_GLOBALE_HIDDEN_DDP

  • EXPRESSPLUS_GLOBALE_TAX

Premium Standard

5 possible permutations:

  • PREMIUMSTANDARD_GLOBALE_DDU

  • PREMIUMSTANDARD_GLOBALE_OPT_DDP

  • PREMIUMSTANDARD_GLOBALE_DDP

  • PREMIUMSTANDARD_GLOBALE_HIDDEN_DDP

  • PREMIUMSTANDARD_GLOBALE_TAX

Tracked Post to Pickup location

5 possible permutations:

  • TRACKEDPOSTTOPICKUPLOCATION_GLOBALE_DDU

  • TRACKEDPOSTTOPICKUPLOCATION_GLOBALE_OPT_DDP

  • TRACKEDPOSTTOPICKUPLOCATION_GLOBALE_DDP

  • TRACKEDPOSTTOPICKUPLOCATION_GLOBALE_HIDDEN_DDP

  • TRACKEDPOSTTOPICKUPLOCATION_GLOBALE_TAX

Migrating Global‑e to the Native App

If you are currently running live on the legacy version of the Global‑e integration with Shopify, a.k.a the “hosted checkout”, you must migrate to the latest version where Global‑e is natively integrated into Shopify’s checkout, as detailed in this section.

The key differences for the Shopify order data are as follows:

  • Order transaction is no longer per B2B transaction in a single currency; instead, it is per customer B2C transaction with presentment currency and shop currency.

    The B2B VAT is no longer reflected in Shopify.

  • Order id - the Shopify order_name no longer starts with ‘GE’ (e.g., GE2034304US).

    The Order name is now assigned by Shopify as done for domestic orders (e.g., #1234).

    The Global‑e order id is available.

  • Shipping lines/code is now standardized by Shopify as explained in the previous section.

  • Shipment confirmation emails no longer come from Global‑e; instead, they are managed by Shopify and the merchant.

  • Fraud approval no changes to this flow. This flow is still relying on the payment status pending (before the fraud check) and a subsequent update to paid status upon fraud approval with the addition of an order tag Globale::Approved.

  • Payment gateway no longer shows globale; instead, it shows:

    • Global‑e Payment (INT) when installing the Global‑e payment method in the sandbox/staging mode.

    • Global‑e Payments when installing the Global‑e payment method in production mode.

Additional Details Section in Order Data

The Global‑e order is still available in Shopify but not upon initial order creation and only as a note_attribute, which is updated by the Global‑e Shopify app a few seconds after post-order creation.

Example:

"order": {
    "id": 4525092405308,
    "name": "#1976",
    "note_attributes": [{
            "name": "GEOrderId",
            "value": "GE10071428326US"
        }
Shopify Order JSON Example

Below is an example of an order JSON file. Alternatively, you can download this example from here.

{
    "orders": [{
            "id": 5288094433599,
            "admin_graphql_api_id": "gid://shopify/Order/5288094433599",
            "app_id": 580111,
            "browser_ip": "207.122.133.98",
            "buyer_accepts_marketing": false,
            "cancel_reason": null,
            "cancelled_at": null,
            "cart_token": "dca8943832f868ed5e6084c8f97a9d29",
            "checkout_id": 36643575464255,
            "checkout_token": "d9f4127c78947546efc15845cf0a0a0b",
            "client_details": {
                "accept_language": "en-GB,en-US;q=0.9,en;q=0.8",
                "browser_height": 802,
                "browser_ip": "207.122.133.98",
                "browser_width": 1688,
                "session_hash": null,
                "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)
                               AppleWebKit/537.36 (KHTML, like Gecko) 
                               Chrome/111.0.0.0 Safari/537.36"
            },
            "closed_at": null,
            "company": null,
            "confirmed": true,
            "contact_email": "[email protected]",
            "created_at": "2023-03-31T03:46:56-04:00",
            "currency": "USD",
            "current_subtotal_price": "886.17",
            "current_subtotal_price_set": {
                "shop_money": {
                    "amount": "886.17",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "493020.00",
                    "currency_code": "CRC"
                }
            },
            "current_total_additional_fees_set": {
                "shop_money": {
                    "amount": "2.70",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "1502.00",
                    "currency_code": "CRC"
                }
            },
            "current_total_discounts": "98.46",
            "current_total_discounts_set": {
                "shop_money": {
                    "amount": "98.46",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "54780.00",
                    "currency_code": "CRC"
                }
            },
            "current_total_duties_set": {
                "shop_money": {
                    "amount": "125.84",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "70012.00",
                    "currency_code": "CRC"
                }
            },
            "current_total_price": "1169.56",
            "current_total_price_set": {
                "shop_money": {
                    "amount": "1169.56",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "650685.00",
                    "currency_code": "CRC"
                }
            },
            "current_total_tax": "144.85",
            "current_total_tax_set": {
                "shop_money": {
                    "amount": "144.85",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "80587.00",
                    "currency_code": "CRC"
                }
            },
            "customer_locale": "en-CN",
            "device_id": null,
            "discount_codes": [{
                    "code": "STGDISCOUNTTEST",
                    "amount": "98.46",
                    "type": "percentage"
                }
            ],
            "email": "[email protected]",
            "estimated_taxes": false,
            "financial_status": "paid",
            "fulfillment_status": null,
            "landing_site": "/",
            "landing_site_ref": null,
            "location_id": null,
            "merchant_of_record_app_id": null,
            "name": "#TEST1057",
            "note": "",
            "note_attributes": [{
                    "name": "ftkn",
                    "value": "9c73a8ad0f5c46e2bc74b295703f2ef3_1680248630954__UDF43_9ck"
                }, {
                    "name": "GEOrderId",
                    "value": "GE40705954US"
                }, {
                    "name": "CalculatedDutiesSubsidy",
                    "value": "0"
                }, {
                    "name": "PaymentMethodName",
                    "value": "PayPal"
                }, {
                    "name": "InternationalOrderProductsForCustoms",
                    "value": "{\"132522\":493020}"
                }, {
                    "name": "DutiesPrePaid",
                    "value": "True"
                }
            ],
            "number": 57,
            "order_number": 1057,
            "order_status_url": "https://demosite.myshopify.com/68893344063/orders/
                                 536686a3998499ce9916d052c5016ac3/
            authenticate?key=68da9939c8b9dbed005fd7c26fef6ded",
            "original_total_additional_fees_set": {
                "shop_money": {
                    "amount": "2.70",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "1502.00",
                    "currency_code": "CRC"
                }
            },
            "original_total_duties_set": {
                "shop_money": {
                    "amount": "125.84",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "70012.00",
                    "currency_code": "CRC"
                }
            },
            "payment_gateway_names": [
                "Global‑e Payment (INT)"
            ],
            "phone": null,
            "presentment_currency": "CRC",
            "processed_at": "2023-03-31T03:46:54-04:00",
            "reference": null,
            "referring_site": "",
            "source_identifier": null,
            "source_name": "web",
            "source_url": null,
            "subtotal_price": "886.17",
            "subtotal_price_set": {
                "shop_money": {
                    "amount": "886.17",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "493020.00",
                    "currency_code": "CRC"
                }
            },
            "tags": "Globale::Approved",
            "tax_lines": [{
                    "price": "144.85",
                    "rate": 0.1611,
                    "title": "GST",
                    "price_set": {
                        "shop_money": {
                            "amount": "144.85",
                            "currency_code": "USD"
                        },
                        "presentment_money": {
                            "amount": "80587.00",
                            "currency_code": "CRC"
                        }
                    },
                    "channel_liable": false
                }
            ],
            "taxes_included": false,
            "test": false,
            "token": "536686a3998499ce9916d052c5016ac3",
            "total_discounts": "98.46",
            "total_discounts_set": {
                "shop_money": {
                    "amount": "98.46",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "54780.00",
                    "currency_code": "CRC"
                }
            },
            "total_line_items_price": "984.63",
            "total_line_items_price_set": {
                "shop_money": {
                    "amount": "984.63",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "547800.00",
                    "currency_code": "CRC"
                }
            },
            "total_outstanding": "0.00",
            "total_price": "1169.56",
            "total_price_set": {
                "shop_money": {
                    "amount": "1169.56",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "650685.00",
                    "currency_code": "CRC"
                }
            },
            "total_shipping_price_set": {
                "shop_money": {
                    "amount": "10.00",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "5564.00",
                    "currency_code": "CRC"
                }
            },
            "total_tax": "144.85",
            "total_tax_set": {
                "shop_money": {
                    "amount": "144.85",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "80587.00",
                    "currency_code": "CRC"
                }
            },
            "total_tip_received": "0.00",
            "total_weight": 0,
            "updated_at": "2023-03-31T03:47:56-04:00",
            "user_id": null,
            "billing_address": {
                "first_name": "Pura",
                "address1": "7 calle 40",
                "phone": "0000000000",
                "city": "San Jose",
                "zip": "10108",
                "province": "San José",
                "country": "Costa Rica",
                "last_name": "Vida",
                "address2": "",
                "company": null,
                "latitude": null,
                "longitude": null,
                "name": "Pura Vida",
                "country_code": "CR",
                "province_code": "CR-SJ"
            },
            "customer": {
                "id": 6879453479231,
                "email": "[email protected]",
                "accepts_marketing": false,
                "created_at": "2023-03-31T03:41:33-04:00",
                "updated_at": "2023-03-31T03:46:56-04:00",
                "first_name": "Pura",
                "last_name": "Vida",
                "state": "disabled",
                "note": null,
                "verified_email": true,
                "multipass_identifier": null,
                "tax_exempt": false,
                "phone": null,
                "email_marketing_consent": {
                    "state": "not_subscribed",
                    "opt_in_level": "single_opt_in",
                    "consent_updated_at": null
                },
                "sms_marketing_consent": null,
                "tags": "",
                "currency": "CRC",
                "accepts_marketing_updated_at": "2023-03-31T03:41:33-04:00",
                "marketing_opt_in_level": null,
                "tax_exemptions": [],
                "admin_graphql_api_id": "gid://shopify/Customer/6879453479231",
                "default_address": {
                    "id": 9118520377663,
                    "customer_id": 6879453479231,
                    "first_name": "Pura",
                    "last_name": "Vida",
                    "company": null,
                    "address1": "7 calle 40",
                    "address2": "",
                    "city": "San Jose",
                    "province": "San José",
                    "country": "Costa Rica",
                    "zip": "10108",
                    "phone": "0000000000",
                    "name": "Pura Vida",
                    "province_code": "CR-SJ",
                    "country_code": "CR",
                    "country_name": "Costa Rica",
                    "default": true
                }
            },
            "discount_applications": [{
                    "target_type": "line_item",
                    "type": "discount_code",
                    "value": "10.0",
                    "value_type": "percentage",
                    "allocation_method": "across",
                    "target_selection": "all",
                    "code": "STGDISCOUNTTEST"
                }
            ],
            "fulfillments": [],
            "line_items": [{
                    "id": 13786226262335,
                    "admin_graphql_api_id": "gid://shopify/LineItem/13786226262335",
                    "fulfillable_quantity": 1,
                    "fulfillment_service": "manual",
                    "fulfillment_status": null,
                    "gift_card": false,
                    "grams": 0,
                    "name": "Top - Jacket / S / Cotton Knit",
                    "pre_tax_price": "886.17",
                    "pre_tax_price_set": {
                        "shop_money": {
                            "amount": "886.17",
                            "currency_code": "USD"
                        },
                        "presentment_money": {
                            "amount": "493020.00",
                            "currency_code": "CRC"
                        }
                    },
                    "price": "984.63",
                    "price_set": {
                        "shop_money": {
                            "amount": "984.63",
                            "currency_code": "USD"
                        },
                        "presentment_money": {
                            "amount": "547800.00",
                            "currency_code": "CRC"
                        }
                    },
                    "product_exists": true,
                    "product_id": 8090466287935,
                    "properties": [],
                    "quantity": 1,
                    "requires_shipping": true,
                    "sku": "132522",
                    "taxable": true,
                    "title": "Albion Top",
                    "total_discount": "0.00",
                    "total_discount_set": {
                        "shop_money": {
                            "amount": "0.00",
                            "currency_code": "USD"
                        },
                        "presentment_money": {
                            "amount": "0.00",
                            "currency_code": "CRC"
                        }
                    },
                    "variant_id": 44134508134719,
                    "variant_inventory_management": "shopify",
                    "variant_title": "Jacket / S / Cotton Knit",
                    "vendor": "Demo Site",
                    "tax_lines": [{
                            "channel_liable": false,
                            "price": "144.85",
                            "price_set": {
                                "shop_money": {
                                    "amount": "144.85",
                                    "currency_code": "USD"
                                },
                                "presentment_money": {
                                    "amount": "80587.00",
                                    "currency_code": "CRC"
                                }
                            },
                            "rate": 0.1611,
                            "title": "GST"
                        }
                    ],
                    "duties": [{
                            "id": 94738514239,
                            "admin_graphql_api_id": "gid://shopify/Duty/94738514239",
                            "country_code_of_origin": "US",
                            "harmonized_system_code": "620469",
                            "price_set": {
                                "shop_money": {
                                    "amount": "125.84",
                                    "currency_code": "USD"
                                },
                                "presentment_money": {
                                    "amount": "70012.00",
                                    "currency_code": "CRC"
                                }
                            },
                            "tax_lines": []
                        }
                    ],
                    "discount_allocations": [{
                            "amount": "98.46",
                            "amount_set": {
                                "shop_money": {
                                    "amount": "98.46",
                                    "currency_code": "USD"
                                },
                                "presentment_money": {
                                    "amount": "54780.00",
                                    "currency_code": "CRC"
                                }
                            },
                            "discount_application_index": 0
                        }
                    ]
                }
            ],
            "payment_terms": null,
            "refunds": [],
            "shipping_address": {
                "first_name": "Pura",
                "address1": "7 calle 40",
                "phone": "0000000000",
                "city": "San Jose",
                "zip": "10108",
                "province": "San José",
                "country": "Costa Rica",
                "last_name": "Vida",
                "address2": "",
                "company": null,
                "latitude": null,
                "longitude": null,
                "name": "Pura Vida",
                "country_code": "CR",
                "province_code": "CR-SJ"
            },
            "shipping_lines": [{
                    "id": 4328148566335,
                    "carrier_identifier": "ddee56dd66ac115cce1900b8a4549ffb",
                    "code": "EXPRESS_GLOBALE_OPT_DDP",
                    "delivery_category": null,
                    "discounted_price": "10.00",
                    "discounted_price_set": {
                        "shop_money": {
                            "amount": "10.00",
                            "currency_code": "USD"
                        },
                        "presentment_money": {
                            "amount": "5564.00",
                            "currency_code": "CRC"
                        }
                    },
                    "phone": null,
                    "price": "10.00",
                    "price_set": {
                        "shop_money": {
                            "amount": "10.00",
                            "currency_code": "USD"
                        },
                        "presentment_money": {
                            "amount": "5564.00",
                            "currency_code": "CRC"
                        }
                    },
                    "requested_fulfillment_service_id": null,
                    "source": "Global‑e Carrier Service",
                    "title": "Express Courier (Air)",
                    "tax_lines": [],
                    "discount_allocations": []
                }
            ]
        }
    ]
}
End-to-End Order Flow Interfaces

The following figure presents a general illustration of an order flow with Shopify to OMS to WMS and Global‑e.

image6.png

Outbound

  1. Order creation: created in Shopify with the initial payment status 'PENDING’ and order tag Globale::Pending.

  2. Fraud check: upon successful fraud check (asynchronous process), the payment status is set to ‘PAID’ and the order tag is replaced with Globale::Approved.

  3. Export to OMS/WMS qualified orders: with PAID status or tagged with Globale::Approved.

  4. Pick and pack: the warehouse identifies orders via the Shopify order name/number and SKU/UPC.

  5. Label generation: Global‑e interface provides the final mile carrier label + tracking #

  6. End-of-day manifest: signals to Global‑e that the order is ready to be dispatched and generates an end-of-day document.

  7. *Fulfilment update to Shopify: in most scenarios, this event or the tracking # itself is provided by Global‑e. It is also expected for Shopify to send the shipment confirmation email when its fulfilment is created.