# PayPal Gebührenrechner - Comprehensive Documentation

**Last Updated:** 2026-04-01

## Tool Overview

### Basic Information

- **Tool Name:** PayPal Gebührenrechner
- **Slug:** `paypal-gebuehrenrechner`
- **URL:** `https://www.ordio.com/tools/paypal-gebuehrenrechner`
- **Status:** Available
- **Last Updated:** 2026-04-01

### Changelog (2026-04-01 SEO sprint)

- Meta title/description/OG und `WebPage`/`WebApplication`-Texte auf GSC-Intents (2026, „Gebühren berechnen“, Netto/Ziel-Brutto) ausgerichtet.
- `FAQPage` JSON-LD aus `v2/data/tools-faqs/paypal_gebuhrenrechner.json` per `ordio_faqpage_schema_node()` (Footer), keine doppelte FAQ mehr im Head-`@graph`.
- Neuer SEO-Block „Wer zahlt … / Käuferschutz“, FAQ „50 €“-Beispiel, Lexikon-Links (Mehrwertsteuer, Kostenrechnung, Finanzbuchhaltung) in `tools-internal-link-mapping.json`.
- Validierung: `validate-tool-content-completeness.php`, `audit-tools-internal-links.php`, `audit-tools-content-blocks.py`; Slug-Alias `paypal-gebuehrenrechner` ↔ `tools_paypal_gebuhrenrechner.php` in Skripten ergänzt.

### Purpose

Calculate PayPal fees for all transaction types including personal (Friends & Family), business, micropayments, QR code payments, donations, international transactions, currency conversions, refunds, disputes, and withdrawals. Supports two calculation modes: standard (netto from brutto) and target net mode (brutto for target netto).

### Use Cases

- **Online Sellers:** Calculate PayPal fees for pricing decisions
- **E-commerce Businesses:** Understand transaction costs for different payment types
- **Freelancers:** Calculate net income after PayPal fees
- **International Sellers:** Calculate fees with currency conversion
- **Restaurant Owners:** Calculate fees for QR code payments
- **Non-profits:** Calculate fees for donations

### Real-World Scenarios

**Scenario 1: E-commerce Seller Pricing Products**
- **User:** Online seller pricing products for PayPal payments
- **Situation:** Want to receive €100 net after PayPal fees, need to calculate gross price
- **Goal:** Calculate gross price to charge customers
- **Steps:**
  1. Select Target Net Mode
  2. Enter target net amount: €100
  3. Select transaction type: Standard Business
  4. Select country: Germany (domestic)
  5. Review calculated gross amount
- **Result:** Sees ca. €102,91 brutto ((100 + 0,35) ÷ (1 − 0,0249)); Gebühr ca. €2,91
- **Related Tools:** [Mehrwertsteuer-Rechner](mehrwertsteuer-rechner-documentation.md) (for VAT calculation), [Prozentrechner](prozentrechner-documentation.md) (for markup)

**Scenario 2: Freelancer Calculating Net Income**
- **User:** Freelancer receiving payments via PayPal
- **Situation:** Received €500 payment, want to know net income after fees
- **Goal:** Calculate actual net income for accounting
- **Steps:**
  1. Select Standard Mode
  2. Enter gross amount: €500
  3. Select transaction type: Standard Business
  4. Select country: Germany (domestic)
  5. Review calculated net amount
- **Result:** Sees €485.80 net income (€500 - €14.20 PayPal fee)
- **Related Tools:** [Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md) (for salary calculation), [Einkommensteuer-Rechner](einkommensteuer-rechner-documentation.md) (for tax)

**Scenario 3: Restaurant Owner Using QR Code Payments**
- **User:** Restaurant owner accepting QR code payments
- **Situation:** Customer pays €15 via QR code, need to calculate fees
- **Goal:** Understand transaction costs for QR code payments
- **Steps:**
  1. Select Standard Mode
  2. Enter amount: €15
  3. Select transaction type: QR Code Payment
  4. Select amount threshold: ≥€10.01 (higher threshold)
  5. Review calculated fees
- **Result:** Sees ca. €0,24 Gebühr (0,90% + 0,10 € für QR ≥ 10,01 € bei 15 €), Netto ca. €14,76
- **Related Tools:** [Mehrwertsteuer-Rechner](mehrwertsteuer-rechner-documentation.md) (for VAT), [Kostenrechner](kostenrechner-documentation.md) (for total costs)

**Scenario 4: International Seller with Currency Conversion**
- **User:** Online seller receiving international payments
- **Situation:** Customer pays $100 USD, need to calculate fees with currency conversion
- **Goal:** Understand total costs including FX spread
- **Steps:**
  1. Select Standard Mode
  2. Enter amount: $100
  3. Select transaction type: Standard Business
  4. Select country: International
  5. Enable currency conversion: USD to EUR
  6. Review calculated fees and FX spread
- **Result:** Sees €2.90 transaction fee + €4.00 FX spread (4%), total €6.90 fees
- **Related Tools:** [Mehrwertsteuer-Rechner](mehrwertsteuer-rechner-documentation.md) (for VAT), [Prozentrechner](prozentrechner-documentation.md) (for percentage breakdown)

### Target Audience

- Online sellers
- E-commerce businesses
- Freelancers
- International merchants
- Restaurant owners
- Non-profit organizations

### Visual Description

**Hero Section:**

- Layout: Centered hero section with badge, headline, and description
- Badge: "PayPal Gebühren" badge
- Headline: Large bold headline "PayPal Gebührenrechner 2026 | Kostenlos berechnen" with blue accent
- Description: Paragraph explaining PayPal fee calculation for Germany 2026
- Background: Gradient blur effect

**Visual Examples (To Be Added):**

**Hero Section Screenshot:**
- Location: `docs/guides/tools-pages/screenshots/paypal-gebuehrenrechner-hero.png`
- Description: Full hero section showing badge, headline, description
- Dimensions: 1920x1080 (desktop), 375x667 (mobile)
- Shows: Complete above-fold content with visual styling

**Calculator Form Screenshot:**
- Location: `docs/guides/tools-pages/screenshots/paypal-gebuehrenrechner-form.png`
- Description: Calculator form showing transaction type, amount, country selection
- Dimensions: 1920x1080 (desktop)
- Shows: Two-column layout (form left, results right), input fields, transaction type selection

**Results Display Screenshot:**
- Location: `docs/guides/tools-pages/screenshots/paypal-gebuehrenrechner-results.png`
- Description: Results section showing fee breakdown, net amount, fee percentage
- Dimensions: 1920x1080 (desktop)
- Shows: Sticky results panel, fee breakdown, net amount display

**Fee Structure Diagram:**
- Location: `docs/guides/tools-pages/diagrams/paypal-gebuehrenrechner-fees.svg`
- Description: Visual diagram showing PayPal fee structure by transaction type
- Format: SVG (vector) for scalability
- Shows: Fee rates for different transaction types (Standard, Personal, Micropayment, QR Code, etc.)

**Calculator Form:**

- Layout: Two-column layout (form left, results right, sticky results)
- Form Sections: Multiple step-by-step sections:
  - Step 1: Transaction Type (Personal, Business, Donation, Micropayment, QR Code)
  - Step 2: Amount and Currency
  - Step 3: Location (Domestic/International, Payer Country)
  - Step 4: Currency Conversion (Payment/Payout Currency, Exchange Rate)
  - Step 5: Calculation Mode (Standard/Target Net)
  - Advanced Options: Withdrawal Method, Refund Simulation, Dispute Simulation
- Input Fields: Number inputs, selects, radio buttons, checkboxes, toggles
- Calculate Button: Auto-calculation on input change (debounced)
- Styling: Blue accent color (#4D8EF3), gray borders, rounded corners, step indicators

**Result Display:**

- Layout: Sticky sidebar on right (desktop), below form (mobile)
- Main Results: Multiple cards showing:
  - Total Fee (Gebühr gesamt)
  - Net Amount (Netto für dich)
  - Gross for Target (Brutto nötig, if target net mode)
  - Refund Cost (Rückerstattungskosten, if simulated)
  - Dispute Cost (Konfliktgebühr, if simulated)
  - Withdrawal Fee (Auszahlungsgebühr, if applicable)
  - Effective Net (Effektives Netto) - final amount after all costs
- Smart Hints: Contextual tips based on transaction type
- Styling: Color-coded cards (green for net, blue for gross, red for costs)

### UI/UX Flow

**Initial Load:**

- Page loads with hero section visible
- Calculator form shows default values:
  - Transaction Type: Personal (Friends & Family)
  - Amount: 0
  - Currency: EUR
  - Domestic: Yes (EWR)
  - Currency Conversion: No
  - Target Net Mode: Standard
  - Withdrawal Method: Local bank (free)
- PayPal config loads asynchronously from JSON
- No results displayed initially (amount = 0)

**User Interaction Flow:**

1. User selects transaction type (Personal, Business, etc.)
2. User enters amount
3. User selects currency
4. User selects location (domestic/international)
5. If international: User selects payer country
6. User can enable currency conversion
7. If currency conversion: User selects payment/payout currencies and exchange rate
8. User selects calculation mode (Standard or Target Net)
9. User can enable advanced options (withdrawal, refund, dispute)
10. Calculation runs automatically (debounced) on each input change
11. Results update in real-time in sticky sidebar
12. Smart hints appear based on transaction type

**Error Handling Flow:**

- Input validation: Amount validation, exchange rate validation
- Auto-correction: Number formatting, currency validation
- Warnings: Invalid amounts, missing required fields
- Results only shown after successful calculation

## Technical Documentation

### File Structure

- **PHP File:** `v2/pages/tools_paypal_gebuhrenrechner.php` (2,246 lines)
- **JavaScript:** `v2/js/tools-paypal-calculator.js` (extracted, 352 lines)
- **Config File:** `v2/api/paypal_fees_config.json` (fee structure configuration)
- **CSS:** Uses shared `v2/css/tools-pages.css` + extensive inline styles

### Code Organization

**Alpine.js Component Structure:**

- Main component: `paypalCalculator()` function (line 21 in JS file)
- Registered with: `Alpine.data('paypalCalculator', paypalCalculator)`
- All logic in external JS file
- Config loaded asynchronously from JSON

**State Management:**

- Alpine.js reactive state for all UI state
- PayPal config loaded asynchronously (`window.paypalConfig`)
- Fallback config embedded in PHP file (if JSON fails)
- No URL parameter sharing

**Code Patterns:**

- Alpine.js reactive data properties
- Debounced calculation function (100ms)
- Real-time calculation updates
- Async config loading with fallback

### Transaction Types

**Type 1: Personal (Friends & Family)**

- **Visual Description:** Green card with "Kostenlos im Inland" badge
- **Purpose:** Personal money transfers between friends/family
- **Input Fields:**

  - `transactionType` (radio): "personal"
  - `isDomestic` (radio): Domestic or International
    - Domestic: Free (0% + 0€)
    - International: 5% + fixed fee (with min/max)

- **Fee Structure:**

  - **Domestic (EWR):**
    - Rate: 0%
    - Fixed Fee: 0€
    - Total: Free
  - **International:**
    - Rate: 5%
    - Fixed Fee: Currency-dependent (with min/max)
      - EUR: 0.99€ (min: 0.99€, max: 3.99€)
      - GBP: 0.99£ (min: 0.99£, max: 2.99£)
      - USD: 0.99$ (min: 0.99$, max: 4.99$)
      - CHF: 0.99 CHF (min: 0.99, max: 3.99)
      - SEK: 9.99 kr (min: 9.99, max: 39.99)
      - DKK: 7.99 kr (min: 7.99, max: 29.99)
      - PLN: 4.99 zł (min: 4.99, max: 19.99)
      - CZK: 24.99 Kč (min: 24.99, max: 99.99)

- **Formula:**

  ```
  If domestic:
    totalFee = 0
    netAmount = amount
  Else (international):
    percentageFee = amount * 0.05
    fixedFee = personalIntlStructure.fixedFees[currency]
    // Apply min/max constraints
    fixedFee = Math.max(minMax.min, Math.min(minMax.max, fixedFee))
    totalFee = percentageFee + fixedFee
    netAmount = amount - totalFee
  ```

**Type 2: Standard (Business)**

- **Visual Description:** Blue card with "2,49% + 0,35 €" badge
- **Purpose:** Business transactions (goods & services)
- **Input Fields:**

  - `transactionType` (radio): "standard"
  - `isDomestic` (radio): Domestic or International
  - `payerCountry` (select): Payer country (if international)
    - EWR: +0%
    - UK: +1.29%
    - USA_CANADA: +1.99%
    - OTHER: +2.99%

- **Fee Structure:**

  - **Domestic Rate:** 2.49%
  - **Fixed Fees:**
    - EUR: 0.35€
    - GBP: 0.20£
    - USD: 0.30$
    - CHF: 0.55 CHF
    - SEK: 3.25 kr
    - DKK: 2.60 kr
    - PLN: 1.35 zł
    - CZK: 10.00 Kč
  - **International Uplifts:**
    - EWR: +0%
    - UK: +1.29%
    - USA_CANADA: +1.99%
    - OTHER: +2.99%

- **Formula:**

  ```
  feeRate = 2.49% (domestic)
  If international:
    feeRate += internationalUplifts[payerCountry]

  totalFee = amount * feeRate + fixedFee
  netAmount = amount - totalFee
  ```

**Type 3: Donation**

- **Visual Description:** Purple card with "2,49% + 0,35 €" badge
- **Purpose:** Donation transactions
- **Input Fields:** Same as Standard
- **Fee Structure:** Same as Standard (2.49% + fixed fee)
- **Formula:** Same as Standard

**Type 4: Micropayment**

- **Visual Description:** Orange card with "4,99% + 0,09 €" badge (EUR)
- **Purpose:** Small transactions (micropayment profile, PayPal-Freigabe erforderlich)
- **Input Fields:** Same as Standard
- **Fee Structure:**

  - **Domestic Rate:** 4,99% (laut PayPal DE Händlergebühren PDF Feb. 2026)
  - **Fixed Fees (Mikro-Festgebühr, Auszug):**
    - EUR: 0,09 €
    - GBP: 0,09 £
    - USD: 0,09 $
    - CHF: 0,09 CHF
    - SEK: 0,89 kr
    - DKK: 0,69 kr
    - PLN: 0,39 zł
    - CZK: 2,00 Kč
  - **International Uplifts:** Same as Standard

- **Formula:**

  ```
  feeRate = 4.99% (domestic)
  If international:
    feeRate += internationalUplifts[payerCountry]

  totalFee = amount * feeRate + fixedFee
  netAmount = amount - totalFee
  ```

- **Break-even Points:** Micropayment profile is cheaper below these amounts (Stand März 2026, 4,99% + Mikro-Festgebühr vs. Standard):
  - EUR: 10,40 €
  - GBP: 4,40 £
  - USD: 8,40 $
  - CHF: 18,40 CHF
  - SEK: 94,40 kr
  - DKK: 76,40 kr
  - PLN: 38,40 zł
  - CZK: 320 Kč

**Type 5: QR Code High (≥10.01€)**

- **Visual Description:** Indigo card with "0,90% + 0,10 €" badge
- **Purpose:** QR code payments for amounts ≥10.01€
- **Input Fields:** Same as Standard
- **Fee Structure:**

  - **Domestic Rate:** 0.90%
  - **Fixed Fees:**
    - EUR: 0.10€
    - GBP: 0.10£
    - USD: 0.10$
    - CHF: 0.10 CHF
    - SEK: 1.00 kr
    - DKK: 0.70 kr
    - PLN: 0.50 zł
    - CZK: 3.00 Kč
  - **International Uplifts:** Same as Standard

- **Formula:**

  ```
  feeRate = 0.90% (domestic)
  If international:
    feeRate += internationalUplifts[payerCountry]

  totalFee = amount * feeRate + fixedFee
  netAmount = amount - totalFee
  ```

**Type 6: QR Code Low (≤10.00€)**

- **Visual Description:** Indigo card with "1,00% + 0,10 €" badge
- **Purpose:** QR code payments for amounts ≤10.00€
- **Input Fields:** Same as Standard
- **Fee Structure:**

  - **Domestic Rate:** 1.00%
  - **Fixed Fees:** Same as QR Code High
  - **International Uplifts:** Same as Standard

- **Formula:**

  ```
  feeRate = 1.00% (domestic)
  If international:
    feeRate += internationalUplifts[payerCountry]

  totalFee = amount * feeRate + fixedFee
  netAmount = amount - totalFee
  ```

### Calculation Modes

**Mode 1: Standard (Netto from Brutto)**

- **Visual Description:** Purple card with "Wie viel bekomme ich?" description
- **Purpose:** Calculate net amount from gross amount
- **Input:** Gross amount (brutto)
- **Output:** Net amount (netto) after fees
- **Formula:**

  ```
  If personal international:
    percentageFee = brutto * 0.05
    fixedFee = personalIntlStructure.fixedFees[currency] (with min/max)
    totalFee = percentageFee + fixedFee
  Else:
    feeRate = domesticRate + internationalUplift
    totalFee = brutto * feeRate + fixedFee

  netAmount = brutto - totalFee
  ```

**Mode 2: Target Net (Brutto for Target Netto)**

- **Visual Description:** Purple card with "Was muss ich verlangen?" description
- **Purpose:** Calculate gross amount needed for target net amount
- **Input:** Target net amount
- **Output:** Gross amount (brutto) needed
- **Formula:**

  ```
  If personal international:
    percentageFee = targetNet * 0.05
    fixedFee = personalIntlStructure.fixedFees[currency] (with min/max)
    totalFee = percentageFee + fixedFee
    grossForTarget = targetNet + totalFee
  Else:
    grossForTarget = (targetNet + fixedFee) / (1 - feeRate)
    totalFee = grossForTarget * feeRate + fixedFee

  netAmount = targetNet
  ```

### Constants and Thresholds

**2026 Values:**

- **FX Spread:** 4% (PayPal currency conversion markup)
- **Dispute Fees:**
  - EUR: 14.00€
  - GBP: 11.00£
  - USD: 15.00$
  - CHF: 14.00 CHF
  - SEK: 143.00 kr
  - DKK: 104.00 kr
  - PLN: 56.00 zł
  - CZK: 350.00 Kč
- **Withdrawal Fees:**
  - Local bank: 0% (free)
  - US bank: 3%
  - Card: 1% (with min/max per currency)
- **Micropayment Break-even Points:** See Type 4 above
- **Config Last Updated:** 2026-01-21 (✅ VERIFIED for 2026)

**Previous Values (for reference):**

- Same structure, but config needs annual verification

### Validation Rules

- Amount: min=0, step=0.01, required
- Currency: Valid PayPal currency codes (EUR, GBP, USD, CHF, SEK, DKK, PLN, CZK)
- Exchange Rate: min=0, step=0.0001 (if currency conversion)
- Refund Percentage: min=1, max=100 (if partial refund)

### Edge Cases Handled

- Personal domestic (free)
- Personal international (5% + min/max fixed fee)
- Currency conversion (4% FX spread)
- Target net mode (reverse calculation)
- Refund simulation (full and partial)
- Dispute simulation
- Withdrawal fees (local/card/US bank)
- International uplifts (different countries)
- QR code threshold (10.00€ vs 10.01€)
- Micropayment break-even calculation

### Dependencies

- **External Libraries:** None
- **APIs:**
  - PayPal fee config: `/v2/api/paypal_fees_config.json` (loaded asynchronously)
  - ECB rates: Optional (for automatic exchange rates)
- **Alpine.js:** Used for reactive UI (version from base includes)
- **External JavaScript:** `v2/js/tools-paypal-calculator.js`

## Functions & Methods

### Main Component Function

**Function:** `paypalCalculator()`

- **Location:** `v2/js/tools-paypal-calculator.js:21`
- **Purpose:** Main Alpine.js component for PayPal calculator
- **Returns:** Alpine.js component object
- **Dependencies:** Alpine.js framework, `window.paypalConfig`
- **Side Effects:** Manages DOM state, triggers calculations

### Calculation Functions

**Function:** `calculateFees()`

- **Location:** `v2/js/tools-paypal-calculator.js:86`
- **Purpose:** Debounced calculation trigger
- **Parameters:** None (uses component state)
- **Returns:** void (calls `performCalculation()`)
- **Dependencies:** `performCalculation()`
- **Side Effects:** Sets calculation flags, debounces calls

**Function:** `performCalculation()`

- **Location:** `v2/js/tools-paypal-calculator.js:108`
- **Purpose:** Main calculation function with all fee types
- **Parameters:** None (uses component state)
- **Returns:** void (sets component state)
- **Dependencies:** `window.paypalConfig`
- **Side Effects:** Updates result properties

**Function:** `resetResults()`

- **Location:** `v2/js/tools-paypal-calculator.js:76`
- **Purpose:** Reset all result values to zero
- **Parameters:** None
- **Returns:** void (resets component state)
- **Dependencies:** None (pure state reset)
- **Side Effects:** Resets all result properties

### Utility Functions

**Function:** `formatCurrency(amount, currency)` (External)

- **Location:** `v2/pages/tools_paypal_gebuhrenrechner.php:2146`
- **Purpose:** Format number as currency with German locale
- **Parameters:**
  - `amount` (number): Amount to format
  - `currency` (string): Currency code
- **Returns:** String (formatted currency)
- **Dependencies:** Intl.NumberFormat
- **Side Effects:** None

**Function:** `setupCalculatorWatchers(component)` (External)

- **Location:** `v2/pages/tools_paypal_gebuhrenrechner.php:1980+`
- **Purpose:** Set up Alpine.js watchers for auto-calculation
- **Parameters:**
  - `component` (object): Alpine.js component instance
- **Returns:** void (sets up watchers)
- **Dependencies:** Alpine.js
- **Side Effects:** Sets up reactive watchers

**Function:** `initialCalculation(component)` (External)

- **Location:** `v2/pages/tools_paypal_gebuhrenrechner.php:2023`
- **Purpose:** Trigger initial calculation after component init
- **Parameters:**
  - `component` (object): Alpine.js component instance
- **Returns:** void (triggers calculation)
- **Dependencies:** `component.calculateFees()`
- **Side Effects:** Triggers calculation after 100ms delay

## Formulas & Calculations

### Primary Formulas

**Standard Mode (Netto from Brutto):**

```
If personal international:
  percentageFee = brutto * 0.05
  fixedFee = personalIntlStructure.fixedFees[currency]
  fixedFee = Math.max(minMax.min, Math.min(minMax.max, fixedFee))
  totalFee = percentageFee + fixedFee
Else:
  feeRate = domesticRate + internationalUplift
  totalFee = brutto * feeRate + fixedFee

netAmount = brutto - totalFee
```

**Target Net Mode (Brutto for Target Netto):**

```
If personal international:
  percentageFee = targetNet * 0.05
  fixedFee = personalIntlStructure.fixedFees[currency]
  fixedFee = Math.max(minMax.min, Math.min(minMax.max, fixedFee))
  totalFee = percentageFee + fixedFee
  grossForTarget = targetNet + totalFee
Else:
  grossForTarget = (targetNet + fixedFee) / (1 - feeRate)
  totalFee = grossForTarget * feeRate + fixedFee

netAmount = targetNet
```

**Currency Conversion:**

```
fxSpread = 0.04 (4%)
fxRate = exchangeRate * (1 - fxSpread) // Unfavorable to recipient
effectiveAmount = amount * fxRate
```

**Refund Cost:**

```
If full refund:
  refundCost = totalFee // Lose entire fee
Else (partial refund):
  percentageRefunded = refundPercentage / 100
  variableFeeLost = originalVariableFee * percentageRefunded
  refundCost = fixedFee + variableFeeLost
```

**Dispute Cost:**

```
disputeCost = disputeFees[currency] // Fixed fee per currency
```

**Withdrawal Fee:**

```
If local bank:
  withdrawalFee = 0
Else if US bank:
  withdrawalFee = netAmount * 0.03
Else if card:
  calculatedFee = netAmount * 0.01
  withdrawalFee = Math.max(minMax.min, Math.min(minMax.max, calculatedFee))
```

**Effective Net:**

```
effectiveNet = netAmount - refundCost - disputeCost - withdrawalFee
```

### Legal Basis

- **PayPal Fee Structure:** Official PayPal fee schedule (German/European market)
- **Currency Conversion:** PayPal FX spread (4% markup)
- **Refund Policy:** PayPal refund fee policy
- **Dispute Fees:** PayPal chargeback/dispute fees
- **Withdrawal Fees:** PayPal withdrawal fee schedule

### Step-by-Step Calculation Example

**Input (Standard Mode - Business Domestic):**

- Transaction Type: Standard (Business)
- Amount: 100.00€
- Currency: EUR
- Domestic: Yes (EWR)
- Currency Conversion: No
- Target Net Mode: Standard
- Withdrawal Method: Local bank

**Calculation:**

1. Get fee structure:

   - Domestic Rate: 2.49%
   - Fixed Fee: 0.35€

2. Calculate fee:

   - Percentage Fee: 100.00 × 0.0249 = 2.49€
   - Fixed Fee: 0.35€
   - Total Fee: 2.49 + 0.35 = 2.84€

3. Calculate net:

   - Net Amount: 100.00 - 2.84 = 97.16€

4. Withdrawal fee:

   - Local bank: 0€

5. Effective net:
   - Effective Net: 97.16 - 0 = 97.16€

**Output:**

- Total Fee: 2,84 €
- Net Amount: 97,16 €
- Effective Net: 97,16 €

## Export Functionality

**Export Types:** Not implemented (no export functionality)

**Email Gating:** Not implemented

**Sharing:** Not implemented (no URL parameter sharing)

## Results & Insights

### Result Display

**Primary Results:**

- Total Fee: Large number display (gray card)
- Net Amount: Large number display (green card)
- Gross for Target: Large number display (blue card, if target net mode)
- Refund Cost: Number display (red card, if simulated)
- Dispute Cost: Number display (red card, if simulated)
- Withdrawal Fee: Number display (orange card, if applicable)
- Effective Net: Very large number display (blue card) - final amount after all costs

**Smart Hints:**

- Personal domestic hint: "Kostenlos im Inland!"
- Micropayment hint: Shows break-even point
- Currency conversion notice: Shows FX spread info

**Result Formatting:**

- Currency: Formatted with German locale (comma as decimal separator)
- Numbers: 2 decimal places
- Symbols: Currency-specific symbols (€, £, $, etc.)

## Browser Testing Results

### Desktop Browsers

**Chrome (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly, async config loads properly

**Firefox (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Safari (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

**Edge (Latest):**

- Status: ✅ Fully functional
- Issues: None
- Notes: All features working correctly

### Mobile Testing

**iOS Safari:**

- Status: ✅ Functional
- Device: iPhone (tested)
- Issues: Minor UI adjustments on small screens
- Notes: Responsive design works well, sticky results become inline on mobile

**Android Chrome:**

- Status: ✅ Functional
- Device: Android (tested)
- Issues: None
- Notes: Touch interactions work correctly

**Mobile UI Differences:**

- Sticky results become inline below form on mobile
- Form sections stack vertically on small screens
- Result cards stack vertically on small screens
- Transaction type cards adapt to mobile layout

### Responsive Design

**Desktop (>1024px):**

- Layout: Two-column (form left, sticky results right)
- Results: Sticky sidebar

**Tablet (768px-1024px):**

- Layout: Two-column (form left, results right)
- Results: Sticky sidebar

**Mobile (<768px):**

- Layout: Single-column
- Results: Below form (not sticky)

**Breakpoints:**

- Mobile: < 768px
- Tablet: 768px - 1024px
- Desktop: > 1024px

### Accessibility

**Keyboard Navigation:**

- Tab navigation works through all form fields
- Radio buttons keyboard accessible
- Focus indicators visible

**Screen Reader:**

- Form labels properly associated
- Results announced after calculation
- Section headings properly structured

**ARIA Labels:**

- Input fields have labels
- Radio buttons have descriptive text
- Results have proper roles

## Code Analysis

### Key Functions Location

- Main component: `v2/js/tools-paypal-calculator.js:21`
- Calculation function: `v2/js/tools-paypal-calculator.js:108`
- Config loading: `v2/pages/tools_paypal_gebuhrenrechner.php:2115+`
- Format function: `v2/pages/tools_paypal_gebuhrenrechner.php:2146`

### Constants Location

- Fee structure: `v2/api/paypal_fees_config.json`
- Fallback config: `v2/pages/tools_paypal_gebuhrenrechner.php:2033+`
- Default values: Embedded in component data (line 30+)

### Calculation Logic Flow

1. **Config Loaded:**

   - PayPal config fetched from JSON
   - Fallback config used if fetch fails
   - Config stored in `window.paypalConfig`

2. **User Input:**

   - User changes any input field
   - Debounced calculation triggered (100ms)

3. **Calculation:**

   - `performCalculation()` function called
   - Fee structure retrieved from config
   - Base fee rate calculated
   - International uplift added (if applicable)
   - Currency conversion applied (if enabled)
   - Fee calculated based on mode (standard or target net)
   - Refund/dispute/withdrawal costs calculated
   - Effective net calculated

4. **Display:**
   - Results updated in component state
   - UI updates automatically (Alpine.js reactivity)
   - Smart hints displayed based on transaction type

## Content Documentation

### Hero Section

- **H1:** PayPal Gebührenrechner 2026 mit Fokus Ziel-Netto, FX und Tarife (siehe Live-Seite)
- **Intro:** Stand Feb. 2026 mit Links zu PayPal Händlergebühren + PDF; interne Links zu MwSt-, Kosten- und Prozentrechner sowie Finanzbuchhaltung-Lexikon

### Educational Content Sections

1. **So funktioniert der Rechner** (3 Schritte, Anker `paypal-step-1` … `paypal-step-3`)
2. **Abdeckung, Grenzen & Beispielrechnungen** (`#abdeckung-beispiele`) – inkl. Checkout-/Ratepay-Abgrenzung
3. **Gebührenstruktur-Übersicht** und Optimierungsstrategien
4. **Payroll-CTA** (Ordio)

### FAQ Section

- **Total FAQs:** 15 (HTML + FAQPage-JSON konsistent)
- **HTML:** `<details id="faq-1"` … `faq-15` mit `group` / `group-open:rotate-180` (tools-pages-faq.mdc)

### Meta Tags

- **Title / Description:** Siehe `tools_paypal_gebuhrenrechner.php` – Fokus Ziel-Netto, FX, internationale Aufschläge, Stand Feb. 2026
- **Keywords:** unverändert sinnvoll für Longtail; bei Bedarf um Checkout-Abgrenzung ergänzen

### Schema Markup

- **WebApplication:** Ja (ohne `aggregateRating`, sofern keine nachweisbaren Reviews vorliegen)
- **FAQPage:** Ja (15 Fragen)
- **HowTo:** Ja (3 Schritte, URLs mit `#paypal-step-n`)
- **Calculator:** Ja
- **WebPage + BreadcrumbList:** Ja

## 2026 Update Requirements

### Immediate Updates (Required for Jan 1, 2026)

**Constants/Values:**

- ✅ PayPal Config: Verify fee structure unchanged for 2026 (`v2/api/paypal_fees_config.json`)
- ✅ Config Last Updated: Updated to "2026-01-07"
- ✅ FAQ Content: Updated to "2026"
- ✅ Meta tags: Already "2026"

**Content:**

- ✅ FAQ: Updated to "2026"
- ✅ H1: Already "2026"
- ✅ Meta tags: Already "2026"

**Priority:** 🟡 MEDIUM (Config verification needed, FAQ update needed)

### Throughout 2026 Updates

**Scheduled Updates:**

- None scheduled (PayPal fees typically stable, but verify annually)

### Monitoring Requirements

- **PayPal Fee Changes:** Monitor PayPal official fee schedule
- **Currency Conversion:** Monitor FX spread changes (currently 4%)
- **Dispute Fees:** Monitor chargeback fee changes
- **Withdrawal Fees:** Monitor withdrawal fee changes
- **Frequency:** Annually (January) or when PayPal announces changes

## Testing

### Test Cases

**Normal Cases:**

- Test 1: Standard business, 100€, domestic → Expected: 2.84€ fee, 97.16€ net
- Test 2: Personal, 100€, domestic → Expected: 0€ fee, 100€ net (free)
- Test 3: Micropayment, 5€, domestic → Expected: Higher fee than standard
- Test 4: Target net mode, 100€ net → Expected: Correct gross calculation

**Edge Cases:**

- Edge case 1: Personal international → Expected: 5% + min/max fixed fee
- Edge case 2: Currency conversion → Expected: 4% FX spread applied
- Edge case 3: Full refund → Expected: Lose entire fee
- Edge case 4: Partial refund → Expected: Proportional fee loss
- Edge case 5: Dispute → Expected: Fixed dispute fee added
- Edge case 6: Card withdrawal → Expected: 1% fee with min/max
- Edge case 7: QR code threshold → Expected: Different rates for ≤10€ vs ≥10.01€

### Browser Testing

- Chrome: ✅ Tested, working
- Firefox: ✅ Tested, working
- Safari: ✅ Tested, working
- Mobile: ✅ Tested, working

### Export Testing

- Export: ❌ Not implemented

## Maintenance Notes

### Known Issues

- Config file updated to "2026-01-07"
- FAQ updated to "2026"
- External JS file makes updates easier (good pattern)

### Future Improvements

- Add export functionality (PDF/CSV)
- Add URL parameter sharing for results
- Add comparison mode (different transaction types)
- Add fee optimization suggestions
- Add historical fee tracking

### Related Tools

**Complementary Tools:**

- **[Mehrwertsteuer-Rechner](mehrwertsteuer-rechner-documentation.md)** - Calculate VAT
  - Use together when: Need both PayPal fees and VAT calculations for pricing
  - Example workflow: Calculate PayPal fees → Calculate VAT → Final pricing

- **[Prozentrechner](prozentrechner-documentation.md)** - Calculate percentages
  - Use together when: Need percentage calculations for fees or markup
  - Example workflow: Calculate fee percentage → Calculate markup → Total pricing

- **[Brutto-Netto-Rechner](brutto-netto-rechner-documentation.md)** - Calculate gross-to-net salary
  - Use together when: Need both payment fees and salary calculations
  - Example workflow: Calculate PayPal fees → Calculate net income → Salary planning

**Sequential Tools:**

- **[Kostenrechner](kostenrechner-documentation.md)** - Calculate business costs
  - Use after: Calculating PayPal fees
  - Use before: Overall cost analysis

- **[Einkommensteuer-Rechner](einkommensteuer-rechner-documentation.md)** - Calculate income tax
  - Use after: Calculating net income after fees
  - Use before: Tax planning

## References

### Official Sources

- **PayPal Fee Schedule:** Official PayPal fee documentation
- **PayPal FX Spread:** Official PayPal currency conversion rates

### Documentation Files

- `BROWSER_TESTING_FRAMEWORK.md`: Browser testing guidelines
- `CODE_ANALYSIS_FRAMEWORK.md`: Code analysis guidelines
- `TOOL_DOCUMENTATION_TEMPLATE.md`: Documentation template
