PayGoManualCourses
Watch this · 1:16Shopify

Shopify integration

Connect a Shopify store, sync products and orders and map payment methods
Shopify integration
Enlarge
The Shopify page as it looks BEFORE a store is connected: the "Connect a Shopify store" card with the subdomain field and the "What happens when you connect?" information box. The status cards, sync settings, payment method mapping and order list only appear once a connection has been created. The picture was taken in the sample company (Demo Company): there the "Locked in the sample company" box appears at the top and the "Connect to Shopify" button is disabled. In your own company you see neither.

The Shopify integration connects PayGo to your Shopify store. Syncing runs in two directions: price, stock level and visibility go from PayGo to Shopify, while orders paid in Shopify come into PayGo and are automatically created as sales orders, complete with customer, lines, shipping charge, deposit and journal entry. You find the settings under Settings → Online store → Shopify in the sidebar (path /dashboard/settings/shopify). The menu item is simply called "Shopify", even though the heading of the page itself is "Shopify connection".

At the top of the page is the heading "Shopify connection" with the subtitle "Connect PayGo to Shopify to sync products and orders". What the page shows depends on whether a store is connected: if there is no connection you see a connection form, but if a connection exists you see status cards, sync settings, product pairing, payment method mapping and a list of recent orders.

To use the page you need the permission settings:read (to view) and settings:write (to connect, change settings, map payment methods and disconnect). The order list requires orders:read, forcing a sync requires orders:write, and product actions such as "Fetch descriptions and images" and product pairing require inventory:write.

Step 1 — Connect a Shopify store

When there is no connection, a card appears with the green Shopify icon and the heading "Connect a Shopify store" together with the subtitle "Enter the name of the Shopify store to start connecting". There you enter the subdomain of the store in the field (the placeholder text is "myshop") and PayGo automatically adds the suffix .myshopify.com, which is shown on the right-hand side of the field.

1
Enter the subdomain of the store

Type only the name part, e.g. "myshop". PayGo cleans up the input automatically: it removes https:// or http://, strips a trailing slash and makes sure the domain ends in .myshopify.com. If you type the full domain (e.g. myshop.myshopify.com), that works too.

2
Use the .myshopify.com domain, not your own domain

Below the field is the hint "Use the .myshopify.com domain, not a custom domain (e.g. myshop, not myshop.com)". If you enter your own domain (e.g. myshop.com), only the first part is used and .myshopify.com is appended to it.

3
Click "Connect to Shopify"

The green "Connect to Shopify" button (or Enter in the field) starts the OAuth process and sends you over to Shopify. If the field is empty, the message "Please enter a Shopify store" appears.

Step 2 — Grant Shopify permission (OAuth)

When you click "Connect to Shopify" you are sent over to Shopify, where you are asked to grant PayGo permission. PayGo requests read and write access to products, orders and inventory in the store. Once permission is granted, Shopify sends you back to PayGo and the connection is saved (the access token is stored encrypted in the database). Finish granting permission within 10 minutes; after that the request expires and you have to start again.

1
Approve the permission request in Shopify

Shopify shows which access PayGo is requesting. Click to install / grant access.

2
Connection successful

When you return, the green message "Shopify connection successful!" appears and the page reloads with the status cards for the store.

3
If something goes wrong

If the connection fails, an error dialog with the title "Connection error" and an explanation appears. Try again and make sure you enter the correct .myshopify.com domain.

Connection status

When a store is connected you see the "Connected to Shopify" card with a green tick icon. In the top right corner is a label (Tag) showing "Active" (green) or "Inactive" (grey), depending on whether the connection is enabled. The card contains an information table (Descriptions) with the following fields.

FieldDescription
StoreName of the store as a link to the Shopify admin (opens https://<store>.myshopify.com/admin in a new tab).
ConnectedDate and time when the connection was created, e.g. "14 Jul 2026 09:15".
Last syncWhen PayGo last synced with Shopify. Shows "Never" if no sync has taken place yet.

At the bottom of the card is the red "Disconnect" button; see the section on disconnecting below. If the PayGo app is removed in the Shopify admin, PayGo automatically sets the connection to "Inactive".

Sync settings

The "Sync settings" card contains three switches (Switch) that control which data is synced automatically. Each switch shows "On" or "Off" and is saved immediately when it is changed (the message "Settings saved" appears).

SettingWhat it does
Product syncFrom PayGo to Shopify. When a product is marked "Visible in online store" it is set to "active" in Shopify; when the mark is removed it is set to "draft" (hidden, not deleted). If the product is not yet paired with a Shopify product, PayGo creates it in Shopify as a "draft" with name, description, price including VAT and SKU, and pairs it automatically. When the price of a paired product is changed in PayGo (on the product or through a price change), the new price is sent.
Order syncFrom Shopify to PayGo. Fetches paid orders and creates sales orders in PayGo. When this is switched on, the "Latest Shopify orders" card also appears.
Stock syncFrom PayGo to Shopify. Sends the total stock level of the product in PayGo (a whole number, rounded down) to the first active location of the store in Shopify, when the product is saved in PayGo and when it is created in Shopify.

At the bottom of the page is a separate "Connection active" card with a switch ("Active" / "Inactive"). If the connection is set to inactive, all syncing stops: neither products nor orders are synced until it is switched on again. While the connection is inactive the page loads neither the payment method mappings nor the order list, so the "Payment methods" table looks empty even though mappings are saved.

Product pairing

The "Product pairing" card explains that products must be paired between PayGo and Shopify to keep them in sync. The "Open product pairing" button goes to the "Shopify product pairing" page. It shows the figures "Paired products", "Unpaired PayGo" and "Unpaired Shopify", the "Auto-pair by SKU" button (pairs unpaired PayGo products with Shopify variants that have the same SKU, ignoring upper and lower case), and lists where you pick a Shopify product by hand ("Select a Shopify product…"). A paired product has the buttons "Sync price", "Sync stock" and "Disconnect" (removes only the pairing).

Fetch descriptions and images from Shopify

The "Fetch descriptions and images from Shopify" card works in the opposite direction to the normal sync: it fetches product descriptions (body_html) and images FROM Shopify INTO PayGo. This updates the webDescription and webImages fields on all products linked to Shopify. It is a manual action that you run yourself.

1
Click "Fetch descriptions and images"

The blue button with the sync icon.

2
Confirm in the Popconfirm

A popup asks "Fetch descriptions and images?" with the warning "This will overwrite the current descriptions and images in PayGo with data from Shopify." Click "Yes, fetch" (or "Cancel").

3
The result is shown

When the run finishes, a message such as "Updated: 12 products with descriptions and images from Shopify" appears. If there were errors, a "Sync finished with errors" dialog appears with the number updated, the number skipped (no data in Shopify) and the first errors.

Payment method mapping

The "Payment methods" card controls which account payments from Shopify are posted to in PayGo. At the top is the information box "Payment method mapping" with the explanation "Link Shopify payment gateways to PayGo payment methods so payments are posted correctly to the accounts." When an order arrives, its payment gateway in Shopify (e.g. shopify_payments, netgiro, paypal) is looked up in the mapping, and the matching PayGo payment method is used for the deposit and the journal entry; the entry goes to the GL account of the payment method.

Above the table is the "Default payment method (fallback)" field with the explanation "Used if no payment gateway matches a mapping". Choose it from the "Select default payment method" dropdown, which shows the name and code of each payment method and is saved immediately ("Default payment method saved").

The mapping table shows these columns:

ColumnDescription
Shopify payment gatewayThe payment gateway in Shopify, shown with a readable name (e.g. "Shopify Payments (card)", "Netgíró", "PayPal").
PayGo payment methodThe matching payment method in PayGo, shown with a blue code label and name.
StatusLabel "Active" (green) or "Inactive" (grey) for the mapping.
(action)Red bin button to delete the mapping.

If no mapping has been added, the table shows the text "No mappings - all payment gateways use the default payment method".

Add and delete a mapping

Click "Add mapping" at the top of the card to open the "Add payment method mapping" dialog. It contains two required fields.

FieldDescriptionRequired
Shopify payment gatewayDropdown "Select payment gateway" with Shopify payment gateways (searchable). Error message if left empty: "Select a Shopify payment gateway".Yes
PayGo payment methodDropdown "Select payment method" with PayGo payment methods (name + code). Error message if left empty: "Select a PayGo payment method".Yes

Click "Add" to save (the message "Mapping added" appears) or "Cancel" to close. To remove a mapping, click the red bin button in the table; a popup asks "Delete mapping?". Click "Yes" (the message "Mapping deleted" appears) or "Cancel".

The dropdown holds a fixed list of Shopify payment gateways: Shopify Payments (card), PayPal, Manual payment, Netgíró, Pei, Klarna, Stripe and Gift card. A mapping only works if the gateway name on the Shopify order is exactly the same; other gateways get the default payment method.

Recent Shopify orders

When order sync is switched on, the "Latest Shopify orders" card appears. At the top are three statistic fields (Statistic) that give a quick overview of the sync status of the latest orders.

FieldDescription
TotalNumber of recent Shopify orders fetched (the last 30 orders).
SyncedNumber of orders that have already been created as PayGo sales orders (green).
Not syncedNumber of orders that do not (yet) exist in PayGo (yellow if more than 0). Unpaid orders are counted here; they are not created until they are paid.

The table of recent orders shows the following columns:

ColumnDescription
Shopify orderOrder number in Shopify (e.g. #1042).
CustomerName of the customer from Shopify.
AmountTotal amount of the order in Icelandic format (e.g. 12.400 kr.).
DateWhen the order was created in Shopify.
StatusPayment status in Shopify: "Paid" (green), "Pending" (yellow), "Refunded" (grey) or "Partially refunded" (orange).
SyncIf synced: a green tick and a link to the PayGo sales order (e.g. SP-00042). Otherwise: a yellow icon and the text "Not synced".

The "Refresh" button fetches the list again without affecting the sync. Orders that are created get an order number in the format SP-XXXXX in PayGo.

What is created in PayGo and how it is posted

WhatHow
CustomerFound by the email address on the order; if none is found, a new customer is created with name, email, phone and address from Shopify.
Sales orderNumber SP-XXXXX, dated on the day the order was created in Shopify, status "Confirmed" (or "Shipped"/"Delivered" if Shopify had already fulfilled it).
Lines and VATThe Shopify price includes VAT. The VAT rate comes from the PayGo product paired with the Shopify product, and the price excluding VAT is calculated back from it. A line that is not paired with a PayGo product gets 24%, and no product, reservation or cost price goes with it.
Shipping chargeA separate line with the shipping description from Shopify (on the product with SKU "SHIPPING" if it exists). The delivery method is matched by name; if none matches, the first active delivery method (alphabetically) is used.
DepositNumber PRE-YYYY-NNNNN for the amount the customer paid in Shopify, with the payment method from the mapping. The order gets the payment status paid.
Journal entryPosted at once, dated on the day the order was created: debit the GL account of the payment method (or 3200 Current account if the payment method has no account), credit 4405 Customer deposits.

The order itself posts neither revenue nor VAT. That happens when an invoice is created from the order, and the deposit is then used against the invoice.

Order confirmation email

The “Order confirmation email” card on the WooCommerce and Shopify pages has two switches. They control whether the customer receives the “Thank you for your order” email when an order arrives from Shopify. The PayGo web shop always sends this email. The switches save immediately.

SwitchDescriptionStatus
Send the order confirmation email (“Thank you for your order”) to the customerSends the customer a confirmation of the order.Off by default
Attach the sales order (PDF) to the emailAttaches the sales order as a PDF. Only works when sending is switched on.Off by default

Force sync

If you do not want to wait for the automatic sync (which runs every minute), you can click "Force sync" in the header of the order card. A popup asks "Force sync?" with the explanation "This will reset the sync time and fetch all orders from the last 30 days again." Click "Yes, force" (or "Cancel").

Once confirmed, the message "Sync reset - orders will be fetched within the next minute" appears and the list updates automatically shortly afterwards. Use this, for example, when an order you expect is not visible. Orders that already exist are not created again; only their status is updated. Each run fetches at most 250 orders.

Disconnect Shopify

To stop syncing, click the red "Disconnect" button at the bottom of the status card. A popup asks "Disconnect Shopify?" with the description "Sync will stop but nothing will be deleted." Click "Yes, disconnect" (or "Cancel").

Tips and troubleshooting