PayPal
Connect a PayPal Business account to import its transactions, fees, and the transfers between your PayPal balance and your bank.
SaaSFlow imports a PayPal Business account through a read-only key you create inside your own PayPal account. The import covers payments, refunds, fees, and the deposits and withdrawals that move money between your PayPal balance and your bank, so the balance in SaaSFlow matches the balance PayPal shows you.
PayPal does not connect as a bank. It has its own integration here, and it is skipped in Bank connections: the open-banking providers omit the transfers in and out of the balance, which leaves the account unable to reconcile.
You need a PayPal Business account. PayPal only issues transaction keys to business accounts, so a personal account cannot produce the credentials this integration needs. A personal account has no Live mode in the developer dashboard, so there is no app to create and no keys to copy.
What gets imported
| PayPal activity | In SaaSFlow |
|---|---|
| Payments received and sent, refunds, reversals, chargebacks | Transactions on a PayPal account, one row per PayPal transaction |
| PayPal's processing fee | Netted into the transaction amount. The description carries the gross amount and the fee. |
| Deposits to and withdrawals from the balance | Transactions categorized as transfers, so they stay out of the Profit & loss report and pair with the matching row on your bank account |
| Money your payment provider routes through the balance | Transfers as well, linked to each other so they close. See below. |
| Currency conversions | Transfers, both legs, which net to zero |
| Anything older than the history PayPal serves | One opening balance row |
The PayPal account is an account like any other: it counts towards your cash balance, shows up in the Cash flow report, and its payment rows go through the same categorization rules as a bank feed. The import categorizes only what PayPal states outright, which is the balance mechanics. Everything else arrives uncategorized, the way a bank feed does.
Payments your provider settles through PayPal
If you sell through Stripe (or another provider) and offer PayPal at checkout, the money takes a detour: your customer pays into your PayPal balance, and the provider moves it straight back out to itself. PayPal reports that as four rows, not one:
| Row | What it is |
|---|---|
| The payment | Your customer's money landing in the balance |
| A collection | The provider claiming it |
| A disbursement | The provider releasing it |
| A settlement transfer | The money leaving to the provider |
Booking the incoming one as revenue would count that sale twice, because the provider already has it as a charge with the customer, the subscription and the fee breakdown on it. So SaaSFlow books all four as transfers and links them to each other in pairs. They net to zero, your P&L keeps the provider's version of the sale, your PayPal balance still reconciles, and none of them sits in your transaction list waiting to be categorized.
PayPal tags every one of those rows with the payment it belongs to, so the grouping is exact rather than guesswork: two sales of the same amount on the same day stay separate. Refunds work the same way in reverse, matched to the reversal they fund.
Payments you make from the PayPal balance have no settlement transfer against them, so they stay in the P&L, which for most companies is the reason to connect PayPal in the first place. If you take PayPal payments directly rather than through a provider, nothing here applies and your sales stay revenue.
Connect
Create an app in PayPal
Log in at developer.paypal.com with the PayPal Business account you want to import. Under Apps & Credentials, check that the Live toggle is selected, press Create App, and name it SaaSFlow.
Turn on Transaction Search
On the app page, scroll down to Add-on services and tick Transaction Search. Then press Save changes at the very bottom of the page. The tick alone does not save it, and that is the step most people miss.
Transaction Search is the one permission SaaSFlow needs, and it is read-only: it cannot move money, issue refunds, or change anything in your PayPal account.
Do this before the app's keys are used anywhere. PayPal can take a few hours to activate Transaction Search on an app that already existed, so if you connect first and tick it afterwards, SaaSFlow keeps rejecting the keys until PayPal catches up. The way out is to delete that app, create a new one, and tick Transaction Search and save before you copy its keys.
Copy the keys
Scroll back to the top of the same app page. Client ID and Secret key 1 each have a copy icon next to them.
Add the integration
In SaaSFlow, go to Settings → Integrations, click Add integration, and pick PayPal. Paste the Client ID into Client ID and Secret key 1 into Secret.
You can also give the account a name. PayPal's API never reports the name on the account, so without one the account is called "PayPal" plus its currency, with the PayPal account number underneath.
Connect
SaaSFlow checks the keys against PayPal before it stores them, so a missing Transaction Search tick or a secret from the wrong environment comes back right away rather than as a failed import hours later. The history import starts as soon as the keys check out.
The first import
The import walks backwards from today, a month at a time, so this year's activity lands first and the oldest months last. The navigation bar shows the progress. A full history usually takes a few minutes.
PayPal serves three years of history through this API. Everything before that is represented by a single opening balance row dated the day before your oldest imported transaction, which is what keeps the running balance correct. If your company has a data start date set, the import stops there instead.
A PayPal account can hold several currency balances. PayPal keeps a separate running balance for each one, so SaaSFlow gives each its own account: "PayPal (EUR)", "PayPal (USD)", and so on, all under the one integration. The first account is your primary currency, and the others appear during the import as soon as it reaches their first transaction.
Staying in sync
SaaSFlow re-reads the last seven days every night at 00:30 (Berlin time). PayPal's reporting data trails live activity by around three hours, and sometimes longer, so the last day or two fills in as PayPal catches up.
Two actions sit in the integration menu (⋯) in Settings → Integrations:
- Sync now runs the same seven-day catch-up immediately. If the first import never finished, it picks that up where it stopped instead.
- Re-import full history starts the history walk over from today. Rows already in SaaSFlow are left alone, so your categorizations, notes and vendor assignments survive it. Use it when months are missing, not to correct rows that are already there.
Sync now is also available from the account's menu.
When the keys stop working
If you delete or regenerate the app in PayPal, the integration goes into an error state. Open the integration menu and choose Reconnect to paste a fresh Client ID and Secret. History stays where it is.
Disconnecting
From Settings → Integrations, open the integration menu (⋯) and choose Remove. Leave "Keep accounts as manual accounts" ticked and the PayPal account and all its transactions stay in SaaSFlow, without the live connection. Untick it and the account is deleted with everything on it.