[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74YA0YNK2XBPSY73PGKBH59":3,"skill-same:01M74YA0YNK2XBPSY73PGKBH59":46},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M74YA0YNK2XBPSY73PGKBH59","paypal-import",null,"Import PayPal CSV exports with fee, refund, and currency handling.","openaccountant\u002Fskills","openaccountant","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F264845549?v=4","01M74Y9H4M5RZ23X265W9B9GSC","OpenAccountant AI","01M74Y9H580Z745YB8EPFHF537",120,"MIT","https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fbusiness\u002Fpaypal-import\u002FSKILL.md",[],[],"2026-11-11 17:30:46",false,"---\nname: paypal-import\ndescription: >\n  Import PayPal CSV exports with fee, refund, and currency handling.\n---\n\n# PayPal Import\n\n## Overview\nImport 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.\n\n## Wilson Tools Used\n- `transaction_search` — check for duplicates against existing transactions\n- `categorize` — assign categories to imported PayPal transactions\n- `export_transactions` — export reconciled PayPal data\n\n## Column Mapping\n\n| PayPal CSV Column | Open Accountant Field | Notes |\n|---|---|---|\n| `Date` | `date` | Transaction date (MM\u002FDD\u002FYYYY format) |\n| `Time` | — | Not stored, date is sufficient |\n| `Name` | `description` | Counterparty name |\n| `Type` | — | Used for filtering (see workflow) |\n| `Status` | — | Only import `Completed` transactions |\n| `Gross` | `amount` | Transaction amount before fees |\n| `Fee` | `amount` (separate row) | PayPal fee (negative = expense) |\n| `Net` | — | Calculated, not stored directly |\n| `Transaction ID` | `reference_id` | PayPal transaction ID for dedup |\n| `Currency` | `currency` | 3-letter ISO code |\n| `Subject` or `Item Title` | `notes` | Optional detail |\n\n## Workflow\n1. Ask the user for the PayPal CSV file path.\n2. Parse the CSV (PayPal uses comma-separated with quoted fields).\n3. Filter by transaction type:\n   - **Import**: `Payment Received`, `Mobile Payment`, `Website Payment`, `Invoice Received`\n   - **Import**: `Refund`, `Reversal`, `Chargeback`\n   - **Import**: `Subscription Payment`\n   - **Skip**: `Transfer to Bank`, `Bank Deposit` (appears in bank import)\n   - **Skip**: `Currency Conversion` (handled as part of the parent transaction)\n   - **Skip**: `Authorization`, `Pending`, `Temporary Hold`\n4. Filter by status: only `Completed` transactions.\n5. For each payment received, create two transactions:\n   - **Revenue**: gross amount (positive), category \"Revenue:PayPal\"\n   - **Fee**: fee amount (negative), category \"Fees:Payment Processing\"\n6. For refunds\u002Freversals, create a negative revenue transaction.\n7. For currency conversions: attach the conversion rate to the parent transaction notes.\n8. Deduplicate using PayPal Transaction ID.\n9. Preview and confirm import.\n\n## Without Wilson\nTo work with PayPal exports manually:\n\n### Downloading from PayPal\n1. Log in at **paypal.com**\n2. Go to **Activity** (top navigation)\n3. Click **Statements** > **Activity download** (or **Reports** > **Activity download** in business accounts)\n4. Select date range (max 1 year at a time)\n5. File type: **CSV**\n6. Click **Download**\n7. For business accounts: **Reports** > **All reports** > **Transactions** > select date range > **Download CSV**\n\n### Manual Processing in a Spreadsheet\n1. Open the CSV. PayPal CSVs use the encoding Windows-1252 — if you see garbled characters, re-open with UTF-8 encoding.\n2. **Filter Status**: Keep only \"Completed\" rows.\n3. **Filter Type**: Remove \"Transfer to Bank,\" \"Bank Deposit,\" \"Currency Conversion,\" and \"Authorization\" rows.\n4. **Split revenue and fees**:\n   - For each payment, the Gross column is revenue and the Fee column is the PayPal fee.\n   - Create a new row for each fee with the negative fee amount.\n5. **Handle refunds**: Refund rows already have negative Gross amounts. Keep as-is.\n6. **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.\n7. **Summary formulas**:\n   ```\n   Gross Revenue:  =SUMIFS(Gross, Type, \"Payment Received\", Status, \"Completed\")\n   Total Fees:     =ABS(SUMIFS(Fee, Type, \"Payment Received\", Status, \"Completed\"))\n   Total Refunds:  =ABS(SUMIFS(Gross, Type, \"Refund\", Status, \"Completed\"))\n   Net Revenue:    =GrossRevenue - TotalFees - TotalRefunds\n   Fee Rate:       =TotalFees \u002F GrossRevenue * 100\n   ```\n\n### Reconciliation\n- PayPal transfers to your bank should match the sum of Net amounts between transfer dates.\n- If they don't match, check for held funds, disputes, or currency conversion differences.\n\n## Important Notes\n- PayPal CSV encoding can cause issues. If the file won't parse, try saving as UTF-8 first.\n- PayPal date format is MM\u002FDD\u002FYYYY (US accounts) or DD\u002FMM\u002FYYYY (international). Wilson auto-detects based on account locale.\n- \"General Payment\" type in PayPal can be either sent or received — check the sign of the Gross amount.\n- PayPal business accounts have more detailed CSVs than personal accounts. The column mapping above covers both.\n- Do not import \"Transfer to Bank\" rows — these are the PayPal-to-bank transfers that appear in your bank statement.\n","# PayPal Import\n\n## Overview\nImport 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.\n\n## Wilson Tools Used\n- `transaction_search` — check for duplicates against existing transactions\n- `categorize` — assign categories to imported PayPal transactions\n- `export_transactions` — export reconciled PayPal data\n\n## Column Mapping\n\n| PayPal CSV Column | Open Accountant Field | Notes |\n|---|---|---|\n| `Date` | `date` | Transaction date (MM\u002FDD\u002FYYYY format) |\n| `Time` | — | Not stored, date is sufficient |\n| `Name` | `description` | Counterparty name |\n| `Type` | — | Used for filtering (see workflow) |\n| `Status` | — | Only import `Completed` transactions |\n| `Gross` | `amount` | Transaction amount before fees |\n| `Fee` | `amount` (separate row) | PayPal fee (negative = expense) |\n| `Net` | — | Calculated, not stored directly |\n| `Transaction ID` | `reference_id` | PayPal transaction ID for dedup |\n| `Currency` | `currency` | 3-letter ISO code |\n| `Subject` or `Item Title` | `notes` | Optional detail |\n\n## Workflow\n1. Ask the user for the PayPal CSV file path.\n2. Parse the CSV (PayPal uses comma-separated with quoted fields).\n3. Filter by transaction type:\n   - **Import**: `Payment Received`, `Mobile Payment`, `Website Payment`, `Invoice Received`\n   - **Import**: `Refund`, `Reversal`, `Chargeback`\n   - **Import**: `Subscription Payment`\n   - **Skip**: `Transfer to Bank`, `Bank Deposit` (appears in bank import)\n   - **Skip**: `Currency Conversion` (handled as part of the parent transaction)\n   - **Skip**: `Authorization`, `Pending`, `Temporary Hold`\n4. Filter by status: only `Completed` transactions.\n5. For each payment received, create two transactions:\n   - **Revenue**: gross amount (positive), category \"Revenue:PayPal\"\n   - **Fee**: fee amount (negative), category \"Fees:Payment Processing\"\n6. For refunds\u002Freversals, create a negative revenue transaction.\n7. For currency conversions: attach the conversion rate to the parent transaction notes.\n8. Deduplicate using PayPal Transaction ID.\n9. Preview and confirm import.\n\n## Without Wilson\nTo work with PayPal exports manually:\n\n### Downloading from PayPal\n1. Log in at **paypal.com**\n2. Go to **Activity** (top navigation)\n3. Click **Statements** > **Activity download** (or **Reports** > **Activity download** in business accounts)\n4. Select date range (max 1 year at a time)\n5. File type: **CSV**\n6. Click **Download**\n7. For business accounts: **Reports** > **All reports** > **Transactions** > select date range > **Download CSV**\n\n### Manual Processing in a Spreadsheet\n1. Open the CSV. PayPal CSVs use the encoding Windows-1252 — if you see garbled characters, re-open with UTF-8 encoding.\n2. **Filter Status**: Keep only \"Completed\" rows.\n3. **Filter Type**: Remove \"Transfer to Bank,\" \"Bank Deposit,\" \"Currency Conversion,\" and \"Authorization\" rows.\n4. **Split revenue and fees**:\n   - For each payment, the Gross column is revenue and the Fee column is the PayPal fee.\n   - Create a new row for each fee with the negative fee amount.\n5. **Handle refunds**: Refund rows already have negative Gross amounts. Keep as-is.\n6. **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.\n7. **Summary formulas**:\n   ```\n   Gross Revenue:  =SUMIFS(Gross, Type, \"Payment Received\", Status, \"Completed\")\n   Total Fees:     =ABS(SUMIFS(Fee, Type, \"Payment Received\", Status, \"Completed\"))\n   Total Refunds:  =ABS(SUMIFS(Gross, Type, \"Refund\", Status, \"Completed\"))\n   Net Revenue:    =GrossRevenue - TotalFees - TotalRefunds\n   Fee Rate:       =TotalFees \u002F GrossRevenue * 100\n   ```\n\n### Reconciliation\n- PayPal transfers to your bank should match the sum of Net amounts between transfer dates.\n- If they don't match, check for held funds, disputes, or currency conversion differences.\n\n## Important Notes\n- PayPal CSV encoding can cause issues. If the file won't parse, try saving as UTF-8 first.\n- PayPal date format is MM\u002FDD\u002FYYYY (US accounts) or DD\u002FMM\u002FYYYY (international). Wilson auto-detects based on account locale.\n- \"General Payment\" type in PayPal can be either sent or received — check the sign of the Gross amount.\n- PayPal business accounts have more detailed CSVs than personal accounts. The column mapping above covers both.\n- Do not import \"Transfer to Bank\" rows — these are the PayPal-to-bank transfers that appear in your bank statement.\n",{"name":5,"description":7},"main","f5abe381f24b5b7d59f1d0b4a825b14494ff2034","business\u002Fpaypal-import",19,"https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills","https:\u002F\u002Fgithub.com\u002Fopenaccountant","https:\u002F\u002Fopenaccountant.ai","2026-04-09 23:03:52",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add openaccountant\u002Fskills --skill paypal-import",{"tool":38,"command":39},"bunx","bunx skills add openaccountant\u002Fskills --skill paypal-import",{"tool":41,"command":42},"pnpm","pnpm dlx skills add openaccountant\u002Fskills --skill paypal-import","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fbusiness\u002Fpaypal-import\u002FSKILL.md",true,[],[47,54,61,68,75,82],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M74YCMH08XC7D0GJTX1P4CNR","year-end-summary","Generate an annual financial review with totals, trends, and highlights.","https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fshared\u002Fyear-end-summary\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M74YCJ3PYFTSQ98HDRVFS1GY","tax-prep","Organize business expenses by IRS Schedule C categories for tax filing.","https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fshared\u002Ftax-prep\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M74YCFN34E2S1F424V4JC5SB","smart-split","Split a single transaction across multiple categories with custom amounts.","https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fshared\u002Fsmart-split\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M74YCDB68Q9CYH1MMCYZQSV0","smart-categorize","Auto-categorize uncategorized transactions using vendor pattern matching.","https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fshared\u002Fsmart-categorize\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M74YCAHA923T5SC63S31KHXA","sales-tax-nexus","Determine sales tax obligations by state based on economic nexus thresholds.","https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fshared\u002Fsales-tax-nexus\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M74YC832W8BPW5PD7895S1G5","quarterly-taxes","Estimate quarterly tax payments using income totals and safe harbor rules.","https:\u002F\u002Fgithub.com\u002Fopenaccountant\u002Fskills\u002Fblob\u002Fmain\u002Fshared\u002Fquarterly-taxes\u002FSKILL.md",[],[]]