Connect Stripe
Updated October 5, 2026
Connect Stripe to import two things: the processing fee Stripe actually charged on each order, and your Stripe disputes (chargebacks). You need this if customers pay you through Stripe as a payment provider in your Shopify checkout.
- Where
- In the sidebar, open Integrations, then Stripe
- Who
- Stores that take payments through Stripe in Shopify. Owners, admins and members with access to the whole account can connect. Viewers and members limited to single stores cannot
- Time
- About 5 minutes
- Updates
- The first import starts as soon as you connect. After that, new fees and disputes are fetched about once an hour
You do not need this for Shopify Payments. Its fees arrive with your Shopify order data.
What Is Imported#
| Data | What Profitario reads from Stripe | How far back |
|---|---|---|
| Transaction fees | The fee Stripe charged on each successful payment | 2 years |
| Disputes | Amount, reason, status and the dispute fee Stripe charged, if it did | 1 year |
Each Stripe payment is matched to the Shopify order it paid for, using the payment reference Shopify stores on the order. One connection covers every store in your Profitario account.
If Stripe charged the fee in a different currency than your store uses, the fee is converted to your store currency at the exchange rate of the payment day.
Profitario only reads data. It cannot create charges, issue refunds or change anything in your Stripe account.
How Imported Fees Work With Your Fee Rules#
A fee rule on the Transaction Fees page is an estimate: a percentage plus a fixed amount. The fee imported from Stripe is the real amount. For each order, Profitario uses the first of these that exists:
| Priority | Source | When it applies |
|---|---|---|
| 1 | A fee you changed on the order | Always wins |
| 2 | The fee imported from Stripe | As soon as the payment is matched to the order |
| 3 | Your fee rule for the Stripe gateway | As long as no Stripe fee exists for the order |
Example. An order of $126.00 is paid through Stripe. Your fee rule is 2.9% + $0.30, so Profitario first calculates $126.00 × 0.029 + $0.30 = $3.95. The customer paid with a foreign card and Stripe actually charged $5.84. After the next sync the order shows $5.84, and your profit for that order is $1.89 lower than the estimate.
Keep your fee rule. It covers new orders until the real fee arrives, and any order whose Stripe payment could not be matched.
Create a Restricted Key in Stripe#
Profitario connects with an API key from your Stripe account. Create a restricted key: it can only do what you allow, and Profitario only needs to read.
- 1
Step 1 of 3
Start a restricted key in live mode#
Follow Stripe's own guide for the current steps: Restricted API keys.
Create the key in live mode. A test mode key connects without an error, but it contains none of your real payments.
- 2
Step 2 of 3
Set three permissions to Read#
When Stripe asks for permissions, set these three to Read and leave everything else on None:
Permission in Stripe Access Used for Charges (Stripe may list it as Charges and Refunds) Read Your payments Disputes (Stripe may list it as Payment Disputes) Read Your disputes Balance transaction sources Read The fee amount of each payment - 3
Step 3 of 3
Copy the key#
Stripe shows the finished key only once. Copy it right away. A live restricted key starts with
rk_live_.
Connect Stripe in Profitario#
Your account needs at least one installed Shopify store before you can add an integration.

The key is not tested when you click Connect. A mistyped key or a key with missing permissions connects as well, and shows up as status Failed once the first import has run. See Troubleshooting below.
To add a second Stripe account, repeat the steps with a key from that account.
What Happens Next#
- Your orders are updated. Matched orders carry the real Stripe fee. Dashboard and reports use the new amounts.
- Disputes appear in the report. Open a store in the sidebar, then Reports > Disputes. The dispute fee is counted as a cost on the disputed order, except for disputes you won. If Stripe reports no fee for a dispute, the default from Store settings > Order Events > Default dispute fee per gateway is used.
- New data follows about once an hour. Each sync fetches the payments and disputes created since the last one. Last Sync on the Stripe page shows when that was.
Manage the Connection#
Click the three dots at the end of the connection row.

Check What Was Imported#
Payment Records lists one row per Stripe payment and one per dispute.

Click a row to open Payment Record Details, including the order it was matched to.
In the screenshot, the payment of $126.00 with a fee of $3.95 is unmatched: its fee is not counted on any order until a matching order is found.
Limits#
- Only Shopify orders paid through Stripe are matched. Payments in the same Stripe account that do not belong to a Shopify order in Profitario (invoices, another shop system, another business) stay unmatched and are not counted.
- Only the fee of the original payment is imported. Payouts, refunds and later fee adjustments in Stripe are not read.
- Only successful payments. Failed and pending payments are ignored.
- History is limited. Fees go back 2 years, disputes 1 year.
- The status of a dispute is not refreshed every hour. The hourly sync fetches disputes opened since the last sync. A dispute that was imported as open keeps that status until the disputes are read again. To refresh the last year, click Import Fees.
- Not real time. New fees and disputes arrive with the hourly sync, not the moment the customer pays.
Troubleshooting#
| What you see | Cause | Fix |
|---|---|---|
| Status Failed on the connection | Stripe rejected the key: mistyped, deleted in Stripe, or a permission is missing | Hover the status to read the message. Correct the key or its permissions in Stripe, use Edit API Key if the key changed, then Import Fees |
| Disputes are imported, but no record of type fee exists | The key cannot read the fee amounts | Set Balance transaction sources to Read on the key in Stripe, then click Import Fees |
| This API key is already connected | The same key is already in the list | Use the existing connection, or create a separate key |
| Connect a Shopify store before adding integrations. | No installed Shopify store in the account | Install Profitario on your Shopify store first |
| A dispute still shows as open although Stripe has closed it | The hourly sync only fetches newly opened disputes | Click Import Fees to read the disputes of the last year again |
| Many records are unmatched | The orders are not in Profitario yet, or the payments belong to something other than your Shopify orders | Once the orders are imported, click Sync Orders |
| A new order shows the fee from your rule, or a clock, instead of Stripe's fee | The hourly sync has not run since the payment | Wait for the next sync. See Why Transaction Fees Sometimes Appear Later |
| The fee on an order differs from your fee rule | Expected: the imported Stripe fee replaced the estimate | Nothing to do |
| Menu entries are greyed out and say Import already in progress | An import is running | Wait until the status is Connected again |
If the problem remains, contact support and send: the store, the last four characters of the key as shown in the API Key column, the status message, and one order number with its Stripe payment ID (it starts with ch_ or pi_). Never send the key itself.
Related articles
Was this article helpful?






