diff --git a/api/v2/authorization.php b/api/v2/authorization.php
index aff98dd..63289ef 100644
--- a/api/v2/authorization.php
+++ b/api/v2/authorization.php
@@ -72,8 +72,8 @@ if ($stmt->rowCount() == 1) {
$user_data['refreshkey'] = bin2hex(random_bytes(25));
$sql_refreshkey = 'UPDATE users SET refreshkey = ? WHERE id = ?';
- $stmt_service = $pdo->prepare($sql_refreshkey);
- $stmt_service->execute([$user_data['refreshkey'], $user_data['id']]);
+ $stmt_refreshkey = $pdo->prepare($sql_refreshkey);
+ $stmt_refreshkey->execute([$user_data['refreshkey'], $user_data['id']]);
$token = createCommunicationToken($user_data['userkey']);
diff --git a/api/v2/get/products_software_versions.php b/api/v2/get/products_software_versions.php
index fcaa325..b598d79 100644
--- a/api/v2/get/products_software_versions.php
+++ b/api/v2/get/products_software_versions.php
@@ -26,7 +26,7 @@ if(isset($get_content) && $get_content!=''){
foreach ($requests as $y){
$v = explode("=", $y);
//INCLUDE VARIABLES IN ARRAY
- $criterias[$v[0]] = $v[1];
+ $criterias[$v[0]] = $v[1] ?? '';
if ($v[0] == 'page' || $v[0] =='p' || $v[0] =='totals' || $v[0] =='list' || $v[0] =='history'|| $v[0] =='success_msg'){
//do nothing
diff --git a/api/v2/get/token_refresh.php b/api/v2/get/token_refresh.php
index 4bb278d..4ca7969 100644
--- a/api/v2/get/token_refresh.php
+++ b/api/v2/get/token_refresh.php
@@ -65,8 +65,8 @@ if ($stmt->rowCount() == 1) {
//Refresh REFRESHKEY
$user_data['refreshkey'] = bin2hex(random_bytes(25));
$sql_refreshkey = 'UPDATE users SET refreshkey = ? WHERE id = ?';
- $stmt_service = $pdo->prepare($sql_refreshkey);
- $stmt_service->execute([$user_data['refreshkey'], $user_data['id']]);
+ $stmt_refreshkey = $pdo->prepare($sql_refreshkey);
+ $stmt_refreshkey->execute([$user_data['refreshkey'], $user_data['id']]);
$token = createCommunicationToken($user_data['userkey']);
diff --git a/assets/database/STEP 2.sql b/assets/database/STEP 2.sql
index c72ceee..99758e6 100644
--- a/assets/database/STEP 2.sql
+++ b/assets/database/STEP 2.sql
@@ -4,6 +4,8 @@ TRUNCATE TABLE `role_access_permissions`;
TRUNCATE TABLE `user_roles`;
TRUNCATE TABLE `access_elements`;
+ALTER TABLE taxes ADD COLUMN eu TINYINT(1) DEFAULT 0;
+
INSERT INTO access_elements (access_name,access_path,description,is_active,created,createdby,updated,updatedby,access_group) VALUES
('Access Element','access_element','Auto-scanned: access_element',1,'2026-01-18 18:49:49','0','2026-01-18 18:49:49',NULL,'Views'),
('Access Element Manage','access_element_manage','Auto-scanned: access_element_manage',1,'2026-01-18 18:49:49','0','2026-01-18 18:49:49',NULL,'Views'),
@@ -921,5 +923,14 @@ WHERE warranty_date IS NOT NULL;
alter table users add refreshkey varchar(255);
+UPDATE taxes SET eu = 1 WHERE country IN (
+ 'Austria', 'Belgium', 'Bulgaria', 'Croatia', 'Cyprus', 'Czech Republic',
+ 'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece',
+ 'Hungary', 'Ireland', 'Italy', 'Latvia', 'Lithuania', 'Luxembourg',
+ 'Malta', 'Netherlands', 'Poland', 'Portugal', 'Romania', 'Slovakia',
+ 'Slovenia', 'Spain', 'Sweden'
+);
+
+UPDATE taxes SET rate = 0.00 WHERE eu = 0 OR eu IS NULL;
SET FOREIGN_KEY_CHECKS=1;
\ No newline at end of file
diff --git a/assets/functions.php b/assets/functions.php
index 340069c..4bbdee1 100644
--- a/assets/functions.php
+++ b/assets/functions.php
@@ -5627,12 +5627,12 @@ function generateSoftwareInvoice($invoice_data, $order_id, $language = 'US') {
// Extract customer data
$customer = $invoice_data['customer'] ?? [];
$customer_email = $customer['email'] ?? $invoice_data['payer_email'] ?? '';
- $customer_name = trim(($customer['first_name'] ?? '') . ' ' . ($customer['last_name'] ?? ''));
- $customer_address = $customer['address_street'] ?? '';
- $customer_city = $customer['address_city'] ?? '';
- $customer_state = $customer['address_state'] ?? '';
- $customer_zip = $customer['address_zip'] ?? '';
- $customer_country = $customer['address_country'] ?? '';
+ $customer_name = $customer['name'] ?? trim(($customer['first_name'] ?? '') . ' ' . ($customer['last_name'] ?? ''));
+ $customer_address = $customer['street'] ?? $customer['address_street'] ?? '';
+ $customer_city = $customer['city'] ?? $customer['address_city'] ?? '';
+ $customer_state = $customer['state'] ?? $customer['address_state'] ?? '';
+ $customer_zip = $customer['zip'] ?? $customer['address_zip'] ?? '';
+ $customer_country = $customer['country'] ?? $customer['address_country'] ?? '';
// Extract transaction data
$pricing = $invoice_data['pricing'] ?? [];
@@ -5744,6 +5744,54 @@ function generateSoftwareInvoice($invoice_data, $order_id, $language = 'US') {
}
}
+ // Calculate VAT note based on country and VAT number
+ $vat_note = '';
+ $customer_vat_number = $customer['vat_number'] ?? '';
+
+ // Load countries array
+ include dirname(__FILE__,2).'/settings/countries.php';
+
+ debuglog("Customer Country: " . ($customer_country ?? 'NULL'));
+ debuglog("Customer VAT: " . ($customer_vat_number ?? 'NULL'));
+
+ if (!empty($customer_country) && isset($countries)) {
+ // Find country data
+ $country_data = null;
+ foreach ($countries as $country_info) {
+ if ($country_info['country'] === $customer_country) {
+ $country_data = $country_info;
+ break;
+ }
+ }
+
+ if ($country_data) {
+ $is_eu = $country_data['eu'] === 1;
+ $is_netherlands = $customer_country === 'Netherlands';
+
+ if ($is_netherlands) {
+ // Netherlands: no special note needed
+ $vat_note = '';
+ } elseif ($is_eu) {
+ if (!empty($customer_vat_number)) {
+ // EU with VAT number: reverse charge
+ $vat_note = 'Reverse charge VAT';
+ } else {
+ // EU without VAT number: local VAT
+ $vat_note = 'Local VAT';
+ }
+ } else {
+ // Non-EU: out of scope
+ $vat_note = 'Out of scope of EU VAT. Buyer is responsible for local taxes and duties';
+ }
+
+ debuglog("VAT Note set to: " . ($vat_note ?: 'EMPTY'));
+ } else {
+ debuglog("Country NOT found in array: " . $customer_country);
+ }
+ } else {
+ debuglog("Empty customer_country or countries not loaded");
+ }
+
// Build HTML for PDF and EMAIL
include dirname(__FILE__,2).'/assets/mail/email_template_invoice.php';
include dirname(__FILE__,2).'/assets/mail/pdf_template_invoice.php';
@@ -5816,7 +5864,8 @@ function generateCountriesFile($token){
foreach($taxes as $tax){
$countries[$tax['id']] = [
'country' => $tax['country'] ?? '',
- 'taxes' => $tax['rate'] ?? 0
+ 'taxes' => $tax['rate'] ?? 0,
+ 'eu' => $tax['eu'] ?? 0
];
}
@@ -5826,7 +5875,7 @@ function generateCountriesFile($token){
$fileContent .= "// Generated on: " . date('Y-m-d H:i:s') . "\n\n";
$fileContent .= "\$countries = [\n";
foreach($countries as $id => $data){
- $fileContent .= " " . $id . " => ['country' => '" . addslashes($data['country']) . "', 'taxes' => " . $data['taxes'] . "],\n";
+ $fileContent .= " " . $id . " => ['country' => '" . addslashes($data['country']) . "', 'taxes' => " . $data['taxes'] . ",'eu' => " . $data['eu'] . "],\n";
}
$fileContent .= "];\n";
diff --git a/assets/mail/email_template_invoice.php b/assets/mail/email_template_invoice.php
index 8e936c9..52e8bd9 100644
--- a/assets/mail/email_template_invoice.php
+++ b/assets/mail/email_template_invoice.php
@@ -122,14 +122,24 @@ $message .= '
';
if ($tax_amount > 0) {
+ $tax_percentage = ($subtotal > 0) ? round(($tax_amount / $subtotal) * 100, 2) : 0;
+ $vat_label = htmlspecialchars($lbl_tax) . ' (' . $tax_percentage . '%)';
+ if (!empty($vat_note)) {
+ $vat_label .= ' (' . htmlspecialchars($vat_note) . ')';
+ }
$message .= '
- | ' . htmlspecialchars($lbl_tax) . ' |
+ ' . $vat_label . ' |
€ ' . number_format($tax_amount, 2) . ' |
';
} else {
+ $vat_label = 'VAT';
+ if (!empty($vat_note)) {
+ $vat_label .= ' (' . htmlspecialchars($vat_note) . ')';
+ }
+ $vat_amount_display = !empty($vat_note) ? '€ 0.00' : 'included';
$message .= '
- | VAT |
- included |
+ ' . $vat_label . ' |
+ ' . $vat_amount_display . ' |
';
}
diff --git a/assets/mail/pdf_template_invoice.php b/assets/mail/pdf_template_invoice.php
index cf99e04..f2bee57 100644
--- a/assets/mail/pdf_template_invoice.php
+++ b/assets/mail/pdf_template_invoice.php
@@ -299,14 +299,23 @@ $pdf .= '
if ($tax_amount > 0) {
$tax_percentage = ($subtotal > 0) ? round(($tax_amount / $subtotal) * 100, 2) : 0;
+ $vat_label = htmlspecialchars($lbl_tax) . ' (' . $tax_percentage . '%)';
+ if (!empty($vat_note)) {
+ $vat_label .= ' (' . htmlspecialchars($vat_note) . ')';
+ }
$pdf .= '
-
' . htmlspecialchars($lbl_tax) . ' (' . $tax_percentage . '%)
+
' . $vat_label . '
€ ' . number_format($tax_amount, 2) . '
';
} else {
+ $vat_label = 'VAT';
+ if (!empty($vat_note)) {
+ $vat_label .= ' (' . htmlspecialchars($vat_note) . ')';
+ }
+ $vat_amount_display = !empty($vat_note) ? '€ 0.00' : 'included';
$pdf .= '
-
VAT
-
included
+
' . $vat_label . '
+
' . $vat_amount_display . '
';
}
diff --git a/assets/softwaretool.js b/assets/softwaretool.js
index 5d3c688..3ce7edc 100644
--- a/assets/softwaretool.js
+++ b/assets/softwaretool.js
@@ -1485,12 +1485,35 @@ function showPaymentModal(option) {
// Function to calculate and update tax
function updateTaxDisplay() {
const selectedCountry = document.getElementById("paymentCountry").value;
+ const vatNumber = document.getElementById("paymentVatNumber").value.trim();
let taxRate = 0;
+ let vatNote = '';
if (selectedCountry && typeof COUNTRIES !== 'undefined' && COUNTRIES) {
const countryData = Object.values(COUNTRIES).find(c => c.country === selectedCountry);
if (countryData) {
- taxRate = parseFloat(countryData.taxes) || 0;
+ const isEU = countryData.eu === 1;
+ const isNetherlands = selectedCountry === 'Netherlands';
+ const countryTaxRate = parseFloat(countryData.taxes) || 0;
+
+ if (isNetherlands) {
+ // Netherlands: always take the tax percentage
+ taxRate = countryTaxRate;
+ } else if (isEU) {
+ if (vatNumber) {
+ // EU with VAT number: 0% VAT, reverse charge
+ taxRate = 0;
+ vatNote = 'Reverse charge VAT';
+ } else {
+ // EU without VAT number: use country VAT
+ taxRate = countryTaxRate;
+ vatNote = 'Local VAT';
+ }
+ } else {
+ // Non-EU: use country tax percentage (usually 0)
+ taxRate = countryTaxRate;
+ vatNote = 'Out of scope of EU VAT. Buyer is responsible for local taxes and duties';
+ }
}
}
@@ -1503,13 +1526,13 @@ function showPaymentModal(option) {
if (taxRate > 0) {
taxDisplay.innerHTML = `
- VAT (${taxRate}%):
+ VAT (${taxRate}%)${vatNote ? ' (' + vatNote + ')' : ''}:
${currency} ${taxAmount.toFixed(2)}
`;
} else {
taxDisplay.innerHTML = `
- VAT:
- -
+ VAT${vatNote ? ' (' + vatNote + ')' : ''}:
+ ${vatNote ? '0%' : '-'}
`;
}
@@ -1541,8 +1564,9 @@ function showPaymentModal(option) {
}
}
- // Add event listener to country select to update tax
+ // Add event listeners to country select and VAT number to update tax
document.getElementById("paymentCountry").addEventListener('change', updateTaxDisplay);
+ document.getElementById("paymentVatNumber").addEventListener('input', updateTaxDisplay);
// Close modal on cancel
document.getElementById("cancelPayment").onclick = () => {
diff --git a/index.php b/index.php
index 10db0a9..aeaf30f 100644
--- a/index.php
+++ b/index.php
@@ -54,7 +54,7 @@ if (!isset($_SESSION['authorization']['userkey']) ||
// Token missing, expired, or about to expire - get new token
if (isset($_SESSION['authorization']['refreshkey'])) {
- $api_url = '/v2/token_refresh?refreshkey='.$_SESSION['authorization']['refreshkey'];
+ $api_url = '/v2/token_refresh/refreshkey='.$_SESSION['authorization']['refreshkey'];
$responses = ioServer($api_url, '');
//Decode Payload
diff --git a/settings/countries.php b/settings/countries.php
index 1b97ff3..3cb5174 100644
--- a/settings/countries.php
+++ b/settings/countries.php
@@ -1,148 +1,148 @@
['country' => 'Austria', 'taxes' => 20.00],
- 2 => ['country' => 'Belgium', 'taxes' => 21.00],
- 3 => ['country' => 'Bulgaria', 'taxes' => 20.00],
- 4 => ['country' => 'Croatia', 'taxes' => 25.00],
- 5 => ['country' => 'Cyprus', 'taxes' => 19.00],
- 6 => ['country' => 'Czech Republic', 'taxes' => 21.00],
- 7 => ['country' => 'Denmark', 'taxes' => 25.00],
- 8 => ['country' => 'Estonia', 'taxes' => 24.00],
- 9 => ['country' => 'Finland', 'taxes' => 25.50],
- 10 => ['country' => 'France', 'taxes' => 20.00],
- 11 => ['country' => 'Germany', 'taxes' => 19.00],
- 12 => ['country' => 'Greece', 'taxes' => 24.00],
- 13 => ['country' => 'Hungary', 'taxes' => 27.00],
- 14 => ['country' => 'Ireland', 'taxes' => 23.00],
- 15 => ['country' => 'Italy', 'taxes' => 22.00],
- 16 => ['country' => 'Latvia', 'taxes' => 21.00],
- 17 => ['country' => 'Lithuania', 'taxes' => 21.00],
- 18 => ['country' => 'Luxembourg', 'taxes' => 16.00],
- 19 => ['country' => 'Malta', 'taxes' => 18.00],
- 20 => ['country' => 'Netherlands', 'taxes' => 21.00],
- 21 => ['country' => 'Poland', 'taxes' => 23.00],
- 22 => ['country' => 'Portugal', 'taxes' => 23.00],
- 23 => ['country' => 'Romania', 'taxes' => 19.00],
- 24 => ['country' => 'Slovakia', 'taxes' => 23.00],
- 25 => ['country' => 'Slovenia', 'taxes' => 22.00],
- 26 => ['country' => 'Spain', 'taxes' => 21.00],
- 27 => ['country' => 'Sweden', 'taxes' => 25.00],
- 28 => ['country' => 'United Kingdom', 'taxes' => 20.00],
- 29 => ['country' => 'Switzerland', 'taxes' => 8.10],
- 30 => ['country' => 'Norway', 'taxes' => 25.00],
- 31 => ['country' => 'Iceland', 'taxes' => 24.00],
- 32 => ['country' => 'Albania', 'taxes' => 20.00],
- 33 => ['country' => 'Serbia', 'taxes' => 20.00],
- 34 => ['country' => 'North Macedonia', 'taxes' => 18.00],
- 35 => ['country' => 'Bosnia and Herzegovina', 'taxes' => 17.00],
- 36 => ['country' => 'Montenegro', 'taxes' => 21.00],
- 37 => ['country' => 'Moldova', 'taxes' => 20.00],
- 38 => ['country' => 'Ukraine', 'taxes' => 20.00],
- 39 => ['country' => 'Belarus', 'taxes' => 20.00],
- 40 => ['country' => 'Turkey', 'taxes' => 20.00],
- 41 => ['country' => 'Andorra', 'taxes' => 4.50],
- 42 => ['country' => 'Australia', 'taxes' => 10.00],
- 43 => ['country' => 'New Zealand', 'taxes' => 15.00],
- 44 => ['country' => 'Japan', 'taxes' => 10.00],
- 45 => ['country' => 'China', 'taxes' => 13.00],
- 46 => ['country' => 'India', 'taxes' => 18.00],
- 47 => ['country' => 'South Korea', 'taxes' => 10.00],
- 48 => ['country' => 'Singapore', 'taxes' => 9.00],
- 49 => ['country' => 'Indonesia', 'taxes' => 11.00],
- 50 => ['country' => 'Thailand', 'taxes' => 7.00],
- 51 => ['country' => 'Vietnam', 'taxes' => 8.00],
- 52 => ['country' => 'Philippines', 'taxes' => 12.00],
- 53 => ['country' => 'Malaysia', 'taxes' => 0.00],
- 54 => ['country' => 'Taiwan', 'taxes' => 5.00],
- 55 => ['country' => 'Pakistan', 'taxes' => 18.00],
- 56 => ['country' => 'Bangladesh', 'taxes' => 15.00],
- 57 => ['country' => 'Sri Lanka', 'taxes' => 18.00],
- 58 => ['country' => 'Nepal', 'taxes' => 13.00],
- 59 => ['country' => 'Cambodia', 'taxes' => 10.00],
- 60 => ['country' => 'Myanmar', 'taxes' => 5.00],
- 61 => ['country' => 'Laos', 'taxes' => 10.00],
- 62 => ['country' => 'Mongolia', 'taxes' => 10.00],
- 63 => ['country' => 'Kazakhstan', 'taxes' => 12.00],
- 64 => ['country' => 'Uzbekistan', 'taxes' => 12.00],
- 65 => ['country' => 'Armenia', 'taxes' => 20.00],
- 66 => ['country' => 'Georgia', 'taxes' => 18.00],
- 67 => ['country' => 'Azerbaijan', 'taxes' => 18.00],
- 68 => ['country' => 'Fiji', 'taxes' => 9.00],
- 69 => ['country' => 'Papua New Guinea', 'taxes' => 10.00],
- 70 => ['country' => 'Samoa', 'taxes' => 15.00],
- 71 => ['country' => 'Tonga', 'taxes' => 15.00],
- 72 => ['country' => 'Vanuatu', 'taxes' => 15.00],
- 73 => ['country' => 'Bhutan', 'taxes' => 7.00],
- 74 => ['country' => 'Saudi Arabia', 'taxes' => 15.00],
- 75 => ['country' => 'United Arab Emirates', 'taxes' => 5.00],
- 76 => ['country' => 'Bahrain', 'taxes' => 10.00],
- 77 => ['country' => 'Kuwait', 'taxes' => 0.00],
- 78 => ['country' => 'Oman', 'taxes' => 5.00],
- 79 => ['country' => 'Qatar', 'taxes' => 0.00],
- 80 => ['country' => 'Israel', 'taxes' => 17.00],
- 81 => ['country' => 'Jordan', 'taxes' => 16.00],
- 82 => ['country' => 'Lebanon', 'taxes' => 11.00],
- 83 => ['country' => 'Egypt', 'taxes' => 14.00],
- 85 => ['country' => 'South Africa', 'taxes' => 15.00],
- 86 => ['country' => 'Nigeria', 'taxes' => 7.50],
- 87 => ['country' => 'Kenya', 'taxes' => 16.00],
- 88 => ['country' => 'Ghana', 'taxes' => 15.00],
- 89 => ['country' => 'Morocco', 'taxes' => 20.00],
- 90 => ['country' => 'Tunisia', 'taxes' => 19.00],
- 91 => ['country' => 'Algeria', 'taxes' => 19.00],
- 92 => ['country' => 'Egypt', 'taxes' => 14.00],
- 93 => ['country' => 'Ethiopia', 'taxes' => 15.00],
- 94 => ['country' => 'Tanzania', 'taxes' => 18.00],
- 95 => ['country' => 'Uganda', 'taxes' => 18.00],
- 96 => ['country' => 'Zimbabwe', 'taxes' => 15.00],
- 97 => ['country' => 'Zambia', 'taxes' => 16.00],
- 98 => ['country' => 'Botswana', 'taxes' => 14.00],
- 99 => ['country' => 'Mauritius', 'taxes' => 15.00],
- 100 => ['country' => 'Namibia', 'taxes' => 15.00],
- 101 => ['country' => 'Rwanda', 'taxes' => 18.00],
- 102 => ['country' => 'Senegal', 'taxes' => 18.00],
- 103 => ['country' => 'Ivory Coast', 'taxes' => 18.00],
- 104 => ['country' => 'Cameroon', 'taxes' => 19.25],
- 105 => ['country' => 'Angola', 'taxes' => 14.00],
- 106 => ['country' => 'Mozambique', 'taxes' => 16.00],
- 107 => ['country' => 'Madagascar', 'taxes' => 20.00],
- 108 => ['country' => 'Mali', 'taxes' => 18.00],
- 109 => ['country' => 'Burkina Faso', 'taxes' => 18.00],
- 110 => ['country' => 'Niger', 'taxes' => 19.00],
- 111 => ['country' => 'Benin', 'taxes' => 18.00],
- 112 => ['country' => 'Togo', 'taxes' => 18.00],
- 113 => ['country' => 'Guinea', 'taxes' => 18.00],
- 114 => ['country' => 'Malawi', 'taxes' => 16.50],
- 115 => ['country' => 'Gabon', 'taxes' => 18.00],
- 116 => ['country' => 'Mauritania', 'taxes' => 16.00],
- 117 => ['country' => 'Lesotho', 'taxes' => 15.00],
- 118 => ['country' => 'Eswatini', 'taxes' => 15.00],
- 119 => ['country' => 'Liberia', 'taxes' => 18.00],
- 120 => ['country' => 'Canada', 'taxes' => 5.00],
- 121 => ['country' => 'United States', 'taxes' => 10.00],
- 122 => ['country' => 'Mexico', 'taxes' => 16.00],
- 123 => ['country' => 'Argentina', 'taxes' => 21.00],
- 124 => ['country' => 'Brazil', 'taxes' => 17.00],
- 125 => ['country' => 'Chile', 'taxes' => 19.00],
- 126 => ['country' => 'Colombia', 'taxes' => 19.00],
- 127 => ['country' => 'Peru', 'taxes' => 18.00],
- 128 => ['country' => 'Ecuador', 'taxes' => 15.00],
- 129 => ['country' => 'Uruguay', 'taxes' => 22.00],
- 130 => ['country' => 'Paraguay', 'taxes' => 10.00],
- 131 => ['country' => 'Bolivia', 'taxes' => 13.00],
- 132 => ['country' => 'Venezuela', 'taxes' => 16.00],
- 133 => ['country' => 'Costa Rica', 'taxes' => 13.00],
- 134 => ['country' => 'Panama', 'taxes' => 7.00],
- 135 => ['country' => 'Guatemala', 'taxes' => 12.00],
- 136 => ['country' => 'Honduras', 'taxes' => 15.00],
- 137 => ['country' => 'El Salvador', 'taxes' => 13.00],
- 138 => ['country' => 'Nicaragua', 'taxes' => 15.00],
- 139 => ['country' => 'Dominican Republic', 'taxes' => 18.00],
- 140 => ['country' => 'Jamaica', 'taxes' => 15.00],
- 141 => ['country' => 'Trinidad and Tobago', 'taxes' => 12.50],
- 142 => ['country' => 'Barbados', 'taxes' => 17.50],
- 143 => ['country' => 'Bahamas', 'taxes' => 10.00],
+ 1 => ['country' => 'Austria', 'taxes' => 20.00,'eu' => 1],
+ 2 => ['country' => 'Belgium', 'taxes' => 21.00,'eu' => 1],
+ 3 => ['country' => 'Bulgaria', 'taxes' => 20.00,'eu' => 1],
+ 4 => ['country' => 'Croatia', 'taxes' => 25.00,'eu' => 1],
+ 5 => ['country' => 'Cyprus', 'taxes' => 19.00,'eu' => 1],
+ 6 => ['country' => 'Czech Republic', 'taxes' => 21.00,'eu' => 1],
+ 7 => ['country' => 'Denmark', 'taxes' => 25.00,'eu' => 1],
+ 8 => ['country' => 'Estonia', 'taxes' => 24.00,'eu' => 1],
+ 9 => ['country' => 'Finland', 'taxes' => 25.50,'eu' => 1],
+ 10 => ['country' => 'France', 'taxes' => 20.00,'eu' => 1],
+ 11 => ['country' => 'Germany', 'taxes' => 19.00,'eu' => 1],
+ 12 => ['country' => 'Greece', 'taxes' => 24.00,'eu' => 1],
+ 13 => ['country' => 'Hungary', 'taxes' => 27.00,'eu' => 1],
+ 14 => ['country' => 'Ireland', 'taxes' => 23.00,'eu' => 1],
+ 15 => ['country' => 'Italy', 'taxes' => 22.00,'eu' => 1],
+ 16 => ['country' => 'Latvia', 'taxes' => 21.00,'eu' => 1],
+ 17 => ['country' => 'Lithuania', 'taxes' => 21.00,'eu' => 1],
+ 18 => ['country' => 'Luxembourg', 'taxes' => 16.00,'eu' => 1],
+ 19 => ['country' => 'Malta', 'taxes' => 18.00,'eu' => 1],
+ 20 => ['country' => 'Netherlands', 'taxes' => 21.00,'eu' => 1],
+ 21 => ['country' => 'Poland', 'taxes' => 23.00,'eu' => 1],
+ 22 => ['country' => 'Portugal', 'taxes' => 23.00,'eu' => 1],
+ 23 => ['country' => 'Romania', 'taxes' => 19.00,'eu' => 1],
+ 24 => ['country' => 'Slovakia', 'taxes' => 23.00,'eu' => 1],
+ 25 => ['country' => 'Slovenia', 'taxes' => 22.00,'eu' => 1],
+ 26 => ['country' => 'Spain', 'taxes' => 21.00,'eu' => 1],
+ 27 => ['country' => 'Sweden', 'taxes' => 25.00,'eu' => 1],
+ 28 => ['country' => 'United Kingdom', 'taxes' => 0.00,'eu' => 0],
+ 29 => ['country' => 'Switzerland', 'taxes' => 0.00,'eu' => 0],
+ 30 => ['country' => 'Norway', 'taxes' => 0.00,'eu' => 0],
+ 31 => ['country' => 'Iceland', 'taxes' => 0.00,'eu' => 0],
+ 32 => ['country' => 'Albania', 'taxes' => 0.00,'eu' => 0],
+ 33 => ['country' => 'Serbia', 'taxes' => 0.00,'eu' => 0],
+ 34 => ['country' => 'North Macedonia', 'taxes' => 0.00,'eu' => 0],
+ 35 => ['country' => 'Bosnia and Herzegovina', 'taxes' => 0.00,'eu' => 0],
+ 36 => ['country' => 'Montenegro', 'taxes' => 0.00,'eu' => 0],
+ 37 => ['country' => 'Moldova', 'taxes' => 0.00,'eu' => 0],
+ 38 => ['country' => 'Ukraine', 'taxes' => 0.00,'eu' => 0],
+ 39 => ['country' => 'Belarus', 'taxes' => 0.00,'eu' => 0],
+ 40 => ['country' => 'Turkey', 'taxes' => 0.00,'eu' => 0],
+ 41 => ['country' => 'Andorra', 'taxes' => 0.00,'eu' => 0],
+ 42 => ['country' => 'Australia', 'taxes' => 0.00,'eu' => 0],
+ 43 => ['country' => 'New Zealand', 'taxes' => 0.00,'eu' => 0],
+ 44 => ['country' => 'Japan', 'taxes' => 0.00,'eu' => 0],
+ 45 => ['country' => 'China', 'taxes' => 0.00,'eu' => 0],
+ 46 => ['country' => 'India', 'taxes' => 0.00,'eu' => 0],
+ 47 => ['country' => 'South Korea', 'taxes' => 0.00,'eu' => 0],
+ 48 => ['country' => 'Singapore', 'taxes' => 0.00,'eu' => 0],
+ 49 => ['country' => 'Indonesia', 'taxes' => 0.00,'eu' => 0],
+ 50 => ['country' => 'Thailand', 'taxes' => 0.00,'eu' => 0],
+ 51 => ['country' => 'Vietnam', 'taxes' => 0.00,'eu' => 0],
+ 52 => ['country' => 'Philippines', 'taxes' => 0.00,'eu' => 0],
+ 53 => ['country' => 'Malaysia', 'taxes' => 0.00,'eu' => 0],
+ 54 => ['country' => 'Taiwan', 'taxes' => 0.00,'eu' => 0],
+ 55 => ['country' => 'Pakistan', 'taxes' => 0.00,'eu' => 0],
+ 56 => ['country' => 'Bangladesh', 'taxes' => 0.00,'eu' => 0],
+ 57 => ['country' => 'Sri Lanka', 'taxes' => 0.00,'eu' => 0],
+ 58 => ['country' => 'Nepal', 'taxes' => 0.00,'eu' => 0],
+ 59 => ['country' => 'Cambodia', 'taxes' => 0.00,'eu' => 0],
+ 60 => ['country' => 'Myanmar', 'taxes' => 0.00,'eu' => 0],
+ 61 => ['country' => 'Laos', 'taxes' => 0.00,'eu' => 0],
+ 62 => ['country' => 'Mongolia', 'taxes' => 0.00,'eu' => 0],
+ 63 => ['country' => 'Kazakhstan', 'taxes' => 0.00,'eu' => 0],
+ 64 => ['country' => 'Uzbekistan', 'taxes' => 0.00,'eu' => 0],
+ 65 => ['country' => 'Armenia', 'taxes' => 0.00,'eu' => 0],
+ 66 => ['country' => 'Georgia', 'taxes' => 0.00,'eu' => 0],
+ 67 => ['country' => 'Azerbaijan', 'taxes' => 0.00,'eu' => 0],
+ 68 => ['country' => 'Fiji', 'taxes' => 0.00,'eu' => 0],
+ 69 => ['country' => 'Papua New Guinea', 'taxes' => 0.00,'eu' => 0],
+ 70 => ['country' => 'Samoa', 'taxes' => 0.00,'eu' => 0],
+ 71 => ['country' => 'Tonga', 'taxes' => 0.00,'eu' => 0],
+ 72 => ['country' => 'Vanuatu', 'taxes' => 0.00,'eu' => 0],
+ 73 => ['country' => 'Bhutan', 'taxes' => 0.00,'eu' => 0],
+ 74 => ['country' => 'Saudi Arabia', 'taxes' => 0.00,'eu' => 0],
+ 75 => ['country' => 'United Arab Emirates', 'taxes' => 0.00,'eu' => 0],
+ 76 => ['country' => 'Bahrain', 'taxes' => 0.00,'eu' => 0],
+ 77 => ['country' => 'Kuwait', 'taxes' => 0.00,'eu' => 0],
+ 78 => ['country' => 'Oman', 'taxes' => 0.00,'eu' => 0],
+ 79 => ['country' => 'Qatar', 'taxes' => 0.00,'eu' => 0],
+ 80 => ['country' => 'Israel', 'taxes' => 0.00,'eu' => 0],
+ 81 => ['country' => 'Jordan', 'taxes' => 0.00,'eu' => 0],
+ 82 => ['country' => 'Lebanon', 'taxes' => 0.00,'eu' => 0],
+ 83 => ['country' => 'Egypt', 'taxes' => 0.00,'eu' => 0],
+ 85 => ['country' => 'South Africa', 'taxes' => 0.00,'eu' => 0],
+ 86 => ['country' => 'Nigeria', 'taxes' => 0.00,'eu' => 0],
+ 87 => ['country' => 'Kenya', 'taxes' => 0.00,'eu' => 0],
+ 88 => ['country' => 'Ghana', 'taxes' => 0.00,'eu' => 0],
+ 89 => ['country' => 'Morocco', 'taxes' => 0.00,'eu' => 0],
+ 90 => ['country' => 'Tunisia', 'taxes' => 0.00,'eu' => 0],
+ 91 => ['country' => 'Algeria', 'taxes' => 0.00,'eu' => 0],
+ 92 => ['country' => 'Egypt', 'taxes' => 0.00,'eu' => 0],
+ 93 => ['country' => 'Ethiopia', 'taxes' => 0.00,'eu' => 0],
+ 94 => ['country' => 'Tanzania', 'taxes' => 0.00,'eu' => 0],
+ 95 => ['country' => 'Uganda', 'taxes' => 0.00,'eu' => 0],
+ 96 => ['country' => 'Zimbabwe', 'taxes' => 0.00,'eu' => 0],
+ 97 => ['country' => 'Zambia', 'taxes' => 0.00,'eu' => 0],
+ 98 => ['country' => 'Botswana', 'taxes' => 0.00,'eu' => 0],
+ 99 => ['country' => 'Mauritius', 'taxes' => 0.00,'eu' => 0],
+ 100 => ['country' => 'Namibia', 'taxes' => 0.00,'eu' => 0],
+ 101 => ['country' => 'Rwanda', 'taxes' => 0.00,'eu' => 0],
+ 102 => ['country' => 'Senegal', 'taxes' => 0.00,'eu' => 0],
+ 103 => ['country' => 'Ivory Coast', 'taxes' => 0.00,'eu' => 0],
+ 104 => ['country' => 'Cameroon', 'taxes' => 0.00,'eu' => 0],
+ 105 => ['country' => 'Angola', 'taxes' => 0.00,'eu' => 0],
+ 106 => ['country' => 'Mozambique', 'taxes' => 0.00,'eu' => 0],
+ 107 => ['country' => 'Madagascar', 'taxes' => 0.00,'eu' => 0],
+ 108 => ['country' => 'Mali', 'taxes' => 0.00,'eu' => 0],
+ 109 => ['country' => 'Burkina Faso', 'taxes' => 0.00,'eu' => 0],
+ 110 => ['country' => 'Niger', 'taxes' => 0.00,'eu' => 0],
+ 111 => ['country' => 'Benin', 'taxes' => 0.00,'eu' => 0],
+ 112 => ['country' => 'Togo', 'taxes' => 0.00,'eu' => 0],
+ 113 => ['country' => 'Guinea', 'taxes' => 0.00,'eu' => 0],
+ 114 => ['country' => 'Malawi', 'taxes' => 0.00,'eu' => 0],
+ 115 => ['country' => 'Gabon', 'taxes' => 0.00,'eu' => 0],
+ 116 => ['country' => 'Mauritania', 'taxes' => 0.00,'eu' => 0],
+ 117 => ['country' => 'Lesotho', 'taxes' => 0.00,'eu' => 0],
+ 118 => ['country' => 'Eswatini', 'taxes' => 0.00,'eu' => 0],
+ 119 => ['country' => 'Liberia', 'taxes' => 0.00,'eu' => 0],
+ 120 => ['country' => 'Canada', 'taxes' => 0.00,'eu' => 0],
+ 121 => ['country' => 'United States', 'taxes' => 0.00,'eu' => 0],
+ 122 => ['country' => 'Mexico', 'taxes' => 0.00,'eu' => 0],
+ 123 => ['country' => 'Argentina', 'taxes' => 0.00,'eu' => 0],
+ 124 => ['country' => 'Brazil', 'taxes' => 0.00,'eu' => 0],
+ 125 => ['country' => 'Chile', 'taxes' => 0.00,'eu' => 0],
+ 126 => ['country' => 'Colombia', 'taxes' => 0.00,'eu' => 0],
+ 127 => ['country' => 'Peru', 'taxes' => 0.00,'eu' => 0],
+ 128 => ['country' => 'Ecuador', 'taxes' => 0.00,'eu' => 0],
+ 129 => ['country' => 'Uruguay', 'taxes' => 0.00,'eu' => 0],
+ 130 => ['country' => 'Paraguay', 'taxes' => 0.00,'eu' => 0],
+ 131 => ['country' => 'Bolivia', 'taxes' => 0.00,'eu' => 0],
+ 132 => ['country' => 'Venezuela', 'taxes' => 0.00,'eu' => 0],
+ 133 => ['country' => 'Costa Rica', 'taxes' => 0.00,'eu' => 0],
+ 134 => ['country' => 'Panama', 'taxes' => 0.00,'eu' => 0],
+ 135 => ['country' => 'Guatemala', 'taxes' => 0.00,'eu' => 0],
+ 136 => ['country' => 'Honduras', 'taxes' => 0.00,'eu' => 0],
+ 137 => ['country' => 'El Salvador', 'taxes' => 0.00,'eu' => 0],
+ 138 => ['country' => 'Nicaragua', 'taxes' => 0.00,'eu' => 0],
+ 139 => ['country' => 'Dominican Republic', 'taxes' => 0.00,'eu' => 0],
+ 140 => ['country' => 'Jamaica', 'taxes' => 0.00,'eu' => 0],
+ 141 => ['country' => 'Trinidad and Tobago', 'taxes' => 0.00,'eu' => 0],
+ 142 => ['country' => 'Barbados', 'taxes' => 0.00,'eu' => 0],
+ 143 => ['country' => 'Bahamas', 'taxes' => 0.00,'eu' => 0],
];