# Tax Settings Design - WooNooW ## Philosophy: Zero Learning Curve User should understand tax setup in 30 seconds, not 30 minutes. --- ## UI Structure ``` Tax Settings Page ├── [Toggle] Enable tax calculations │ └── Description: "Calculate and display taxes at checkout" │ ├── When ENABLED, show: │ ├── Predefined Tax Rates [SettingsCard] │ └── Based on store country from Store Details │ │ Example for Indonesia: │ ┌─────────────────────────────────────┐ │ │ 🇮🇩 Indonesia Tax Rates │ │ ├─────────────────────────────────────┤ │ │ Standard Rate: 11% │ │ │ Applied to: All products │ │ │ [Edit Rate] │ │ └─────────────────────────────────────┘ │ ├── Additional Tax Rates [SettingsCard] │ ├── [+ Add Tax Rate] button │ └── List of custom rates: │ ┌─────────────────────────────────┐ │ │ Malaysia: 6% │ │ │ Applied to: All products │ │ │ [Edit] [Delete] │ │ └─────────────────────────────────┘ │ ├── Display Settings [SettingsCard] │ ├── Prices are entered: [Including tax / Excluding tax] │ ├── Display prices in shop: [Including tax / Excluding tax] │ └── Display prices in cart: [Including tax / Excluding tax] │ └── Advanced Settings └── Link to WooCommerce tax settings ``` --- ## Predefined Tax Rates - Smart Detection **Source:** WooCommerce General Settings → "Selling location(s)" ### Scenario 1: Sell to Specific Countries If user selected specific countries (e.g., Indonesia, Malaysia): ``` Predefined Tax Rates ├── 🇮🇩 Indonesia: 11% (PPN) └── 🇲🇾 Malaysia: 6% (SST) ``` ### Scenario 2: Sell to All Countries If user selected "Sell to all countries": ``` Predefined Tax Rates └── Based on store country: 🇮🇩 Indonesia: 11% (PPN) Additional Tax Rates └── [+ Add Tax Rate] → Shows all countries ``` ### Scenario 3: Sell to Specific Continents If user selected "Asia": ``` Suggested Tax Rates (Asia) ├── 🇮🇩 Indonesia: 11% ├── 🇲🇾 Malaysia: 6% ├── 🇸🇬 Singapore: 9% ├── 🇹🇭 Thailand: 7% ├── 🇵🇭 Philippines: 12% └── 🇻🇳 Vietnam: 10% ``` ### Standard Tax Rates by Country | Country | Standard Rate | Note | |---------|---------------|------| | Indonesia | 11% | PPN (VAT) | | Malaysia | 6% | SST | | Singapore | 9% | GST | | Thailand | 7% | VAT | | Philippines | 12% | VAT | | Vietnam | 10% | VAT | | United States | 0% | Varies by state - user adds manually | | European Union | 20% | Average - varies by country | --- ## User Flow ### Scenario 1: Indonesian Store (Simple) 1. User enables tax toggle 2. Sees: "🇮🇩 Indonesia: 11% (Standard)" 3. Done! Tax is working. ### Scenario 2: Multi-Country Store 1. User enables tax toggle 2. Sees predefined rate for their country 3. Clicks "+ Add Tax Rate" 4. Selects country: Malaysia 5. Rate auto-fills: 6% 6. Clicks Save 7. Done! ### Scenario 3: US Store (Complex) 1. User enables tax toggle 2. Sees: "🇺🇸 United States: 0% (Add rates by state)" 3. Clicks "+ Add Tax Rate" 4. Selects: United States - California 5. Enters: 7.25% 6. Clicks Save 7. Repeats for other states --- ## Add Tax Rate Dialog ``` Add Tax Rate ├── Country/Region [Searchable Select] │ └── 🇮🇩 Indonesia │ 🇲🇾 Malaysia │ 🇺🇸 United States │ └── California │ Texas │ New York │ ├── Tax Rate (%) │ └── [Input: 11] │ ├── Tax Class │ └── [Select: Standard / Reduced / Zero] │ └── [Cancel] [Save Rate] ``` --- ## Backend Requirements ### API Endpoints: - `GET /settings/tax/config` - Get tax enabled status + rates - `POST /settings/tax/toggle` - Enable/disable tax - `GET /settings/tax/rates` - List all tax rates - `POST /settings/tax/rates` - Create tax rate - `PUT /settings/tax/rates/{id}` - Update tax rate - `DELETE /settings/tax/rates/{id}` - Delete tax rate - `GET /settings/tax/suggested` - Get suggested rates based on selling locations ### Get Selling Locations: ```php // Get WooCommerce selling locations setting $selling_locations = get_option('woocommerce_allowed_countries'); // Options: 'all', 'all_except', 'specific' if ($selling_locations === 'specific') { $countries = get_option('woocommerce_specific_allowed_countries'); // Returns array: ['ID', 'MY', 'SG'] } // Get store base country $store_country = get_option('woocommerce_default_country'); // Returns: 'ID:JB' (country:state) or 'ID' ``` ### Predefined Rates Data: ```json { "ID": { "country": "Indonesia", "rate": 11, "name": "PPN (VAT)", "class": "standard" }, "MY": { "country": "Malaysia", "rate": 6, "name": "SST", "class": "standard" } } ``` --- ## Benefits ✅ **Zero learning curve** - User sees their country's rate immediately ✅ **No re-selection** - Store country from Store Details is used ✅ **Smart defaults** - Predefined rates are accurate ✅ **Flexible** - Can add more countries/rates as needed ✅ **Accessible** - Clear labels, simple toggle ✅ **Scalable** - Works for single-country and multi-country stores --- ## Comparison to WooCommerce | Feature | WooCommerce | WooNooW | |---------|-------------|---------| | Enable tax | Checkbox buried in settings | Toggle at top | | Add rate | Navigate to Tax tab → Add rate → Fill form | Predefined + one-click add | | Multi-country | Manual for each | Smart suggestions | | Learning curve | 30 minutes | 30 seconds | --- ## Next Steps 1. Create Tax settings page component 2. Build backend API endpoints 3. Add predefined rates data 4. Test with Indonesian store 5. Test with multi-country store