Install
$ agentstack add skill-openaccountant-skills-paypal-import ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
PayPal Import
Overview
Import transaction data from PayPal CSV exports. Handles payments received, fees, refunds, and currency conversions. PayPal CSVs include many transaction types — this skill filters to financially meaningful entries and maps them to Open Accountant's format.
Wilson Tools Used
transaction_search— check for duplicates against existing transactionscategorize— assign categories to imported PayPal transactionsexport_transactions— export reconciled PayPal data
Column Mapping
| PayPal CSV Column | Open Accountant Field | Notes | |---|---|---| | Date | date | Transaction date (MM/DD/YYYY format) | | Time | — | Not stored, date is sufficient | | Name | description | Counterparty name | | Type | — | Used for filtering (see workflow) | | Status | — | Only import Completed transactions | | Gross | amount | Transaction amount before fees | | Fee | amount (separate row) | PayPal fee (negative = expense) | | Net | — | Calculated, not stored directly | | Transaction ID | reference_id | PayPal transaction ID for dedup | | Currency | currency | 3-letter ISO code | | Subject or Item Title | notes | Optional detail |
Workflow
- Ask the user for the PayPal CSV file path.
- Parse the CSV (PayPal uses comma-separated with quoted fields).
- Filter by transaction type:
- Import:
Payment Received,Mobile Payment,Website Payment,Invoice Received - Import:
Refund,Reversal,Chargeback - Import:
Subscription Payment - Skip:
Transfer to Bank,Bank Deposit(appears in bank import) - Skip:
Currency Conversion(handled as part of the parent transaction) - Skip:
Authorization,Pending,Temporary Hold
- Filter by status: only
Completedtransactions. - For each payment received, create two transactions:
- Revenue: gross amount (positive), category "Revenue:PayPal"
- Fee: fee amount (negative), category "Fees:Payment Processing"
- For refunds/reversals, create a negative revenue transaction.
- For currency conversions: attach the conversion rate to the parent transaction notes.
- Deduplicate using PayPal Transaction ID.
- Preview and confirm import.
Without Wilson
To work with PayPal exports manually:
Downloading from PayPal
- Log in at paypal.com
- Go to Activity (top navigation)
- Click Statements > Activity download (or Reports > Activity download in business accounts)
- Select date range (max 1 year at a time)
- File type: CSV
- Click Download
- For business accounts: Reports > All reports > Transactions > select date range > Download CSV
Manual Processing in a Spreadsheet
- Open the CSV. PayPal CSVs use the encoding Windows-1252 — if you see garbled characters, re-open with UTF-8 encoding.
- Filter Status: Keep only "Completed" rows.
- Filter Type: Remove "Transfer to Bank," "Bank Deposit," "Currency Conversion," and "Authorization" rows.
- Split revenue and fees:
- For each payment, the Gross column is revenue and the Fee column is the PayPal fee.
- Create a new row for each fee with the negative fee amount.
- Handle refunds: Refund rows already have negative Gross amounts. Keep as-is.
- Currency conversion: If you received a payment in EUR but your account is in USD, PayPal creates two rows — one in EUR and one with the USD conversion. Use the USD row and note the original currency.
- Summary formulas:
`` Gross Revenue: =SUMIFS(Gross, Type, "Payment Received", Status, "Completed") Total Fees: =ABS(SUMIFS(Fee, Type, "Payment Received", Status, "Completed")) Total Refunds: =ABS(SUMIFS(Gross, Type, "Refund", Status, "Completed")) Net Revenue: =GrossRevenue - TotalFees - TotalRefunds Fee Rate: =TotalFees / GrossRevenue * 100 ``
Reconciliation
- PayPal transfers to your bank should match the sum of Net amounts between transfer dates.
- If they don't match, check for held funds, disputes, or currency conversion differences.
Important Notes
- PayPal CSV encoding can cause issues. If the file won't parse, try saving as UTF-8 first.
- PayPal date format is MM/DD/YYYY (US accounts) or DD/MM/YYYY (international). Wilson auto-detects based on account locale.
- "General Payment" type in PayPal can be either sent or received — check the sign of the Gross amount.
- PayPal business accounts have more detailed CSVs than personal accounts. The column mapping above covers both.
- Do not import "Transfer to Bank" rows — these are the PayPal-to-bank transfers that appear in your bank statement.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: openaccountant
- Source: openaccountant/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.