Advanced Search

Search Results (Searched for: tax category)

04 Mar 2026 09:09

e-invoice

Category: Wishlist

Ok, so I figured out that I wasn't using any tax on the shipping amount so that <cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>0</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory> gives an error because Percent was zero. I now set it up correctly with a proper tax amount. The Percent is correctly used but now there are some other errors. But I hope this is a step in the right direction. See below:

3 errors
error [BR-DEC-05]-The allowed maximum number of decimals for the Document level charge amount (BT-99) is 2.
location /ubl:Invoice[1]/cac:AllowanceCharge[1]
test string-length(substring-after(cbc:Amount,'.'))<=2
error [BR-CO-13]-Invoice total amount without VAT (BT-109) = Σ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).
location /ubl:Invoice[1]/cac:LegalMonetaryTotal[1]
test ((cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10) div 100 )) or (not(cbc:ChargeTotalAmount) and (cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) - xs:decimal(cbc:AllowanceTotalAmount)) * 10 * 10 ) div 100)) or ((cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = round((xs:decimal(cbc:LineExtensionAmount) + xs:decimal(cbc:ChargeTotalAmount)) * 10 * 10 ) div 100)) or (not(cbc:ChargeTotalAmount) and not(cbc:AllowanceTotalAmount) and (xs:decimal(cbc:TaxExclusiveAmount) = xs:decimal(cbc:LineExtensionAmount)))
error [UBL-DT-01]-Amounts shall be decimal up to two fraction digits
location /ubl:Invoice[1]/cac:AllowanceCharge[1]/cbc:Amount[1]
test string-length(substring-after(.,'.'))<=2


XML:

<?xml version="1.0"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>C1A0R73</cbc:ID>
<cbc:IssueDate>2026-02-28</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:OrderReference>
<cbc:ID>NA</cbc:ID>
<cbc:SalesOrderID>C1D1W46</cbc:SalesOrderID>
</cac:OrderReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="9944">NL182610202B02</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Bloem en Oogst</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>3 van Zijlweg</cbc:StreetName>
<cbc:CityName>Wapserveen</cbc:CityName>
<cbc:PostalZone>8351HW</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>NL</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>NL182610202B02</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Bloem en Oogst</cbc:RegistrationName>
<cbc:CompanyID schemeID="0106">NL182610202B02</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Eline Houtkamp</cbc:Name>
<cbc:Telephone>+31624897106</cbc:Telephone>
<cbc:ElectronicMail>This email address is being protected from spambots. You need JavaScript enabled to view it.</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="9944">123123182</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>GossiePozzie</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>van Zijlweg</cbc:StreetName>
<cbc:AdditionalStreetName>3</cbc:AdditionalStreetName>
<cbc:CityName>Wapserveen</cbc:CityName>
<cbc:PostalZone>8351 HW</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>NL</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyLegalEntity>
<cbc:RegistrationName>GossiePozzie</cbc:RegistrationName>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Gossen Rijkeboer</cbc:Name>
<cbc:Telephone>+31626660482</cbc:Telephone>
<cbc:ElectronicMail>This email address is being protected from spambots. You need JavaScript enabled to view it.</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Verzending</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">3.63636</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">1.40</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">6.65</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">1.40</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">3.02</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">6.65</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8.05</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">3.64</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">8.05</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="EUR">0.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>0</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">1.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">3.02</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>ACHILLEA MILLEFOLIUM &#x2013; DUIZENDBLAD - &#x2018;Summer Pastels mix&#x2019;</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">3.02</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1.00</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
</Invoice>
03 Mar 2026 21:25

e-invoice

Category: Wishlist

Hi Nicolas,

thank you for your quick response, but helas, no go. See error below:

Document validated as: Peppol BIS 3 UBL Invoice
2 errors
error [BR-S-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.
location /ubl:Invoice[1]/cac:AllowanceCharge[1]/cac:TaxCategory[1]
test (cbc:Percent) > 0
error [BR-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "Standard rated" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).
location /ubl:Invoice[1]/cac:TaxTotal[1]/cac:TaxSubtotal[1]/cac:TaxCategory[1]
test every $rate in xs:decimal(cbc:Percent) satisfies (((exists(//cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID) = 'S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]) or exists(//cac:AllowanceCharge[cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate])) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))))) or (exists(//cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID) = 'S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]) or exists(//cac:AllowanceCharge[cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate])) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount))))))

The XML:
<?xml version="1.0"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>C1A0R73</cbc:ID>
<cbc:IssueDate>2026-02-28</cbc:IssueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:OrderReference>
<cbc:ID>NA</cbc:ID>
<cbc:SalesOrderID>C1D1W46</cbc:SalesOrderID>
</cac:OrderReference>
<cac:AdditionalDocumentReference>
<cbc:ID>Invoice.pdf</cbc:ID>
<cbc:DocumentDescription>Invoice PDF</cbc:DocumentDescription>
<cac:Attachment>
<cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="Invoice.pdf">JVBERi0xLjc........PDF CODE.........AwMDYyNzE2IDAwMDAwIG4gCjAwMDAwNjc0NTUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxOCAvUm9vdCAxNyAwIFIgL0luZm8gMTUgMCBSIC9JRCBbIDwxMTEzZjg4ZGQ3NmQxYTE5ZTRlMmI1NDVjNzc5MGIyZD4gPDExMTNmODhkZDc2ZDFhMTllNGUyYjU0NWM3NzkwYjJkPiBdID4+CnN0YXJ0eHJlZgo2NzY1OAolJUVPRgo=</cbc:EmbeddedDocumentBinaryObject>
</cac:Attachment>
</cac:AdditionalDocumentReference>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="9944">NL182610202B02</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>Bloem en Oogst</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>3 van Zijlweg</cbc:StreetName>
<cbc:CityName>Wapserveen</cbc:CityName>
<cbc:PostalZone>8351HW</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>NL</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>NL182610202B02</cbc:CompanyID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Bloem en Oogst</cbc:RegistrationName>
<cbc:CompanyID schemeID="0106">NL182610202B02</cbc:CompanyID>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Eline Houtkamp</cbc:Name>
<cbc:Telephone>+31624897106</cbc:Telephone>
<cbc:ElectronicMail>This email address is being protected from spambots. You need JavaScript enabled to view it.</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="9944">123123182</cbc:EndpointID>
<cac:PartyName>
<cbc:Name>GossiePozzie</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>van Zijlweg</cbc:StreetName>
<cbc:AdditionalStreetName>3</cbc:AdditionalStreetName>
<cbc:CityName>Wapserveen</cbc:CityName>
<cbc:PostalZone>8351 HW</cbc:PostalZone>
<cac:Country>
<cbc:IdentificationCode>NL</cbc:IdentificationCode>
</cac:Country>
</cac:PostalAddress>
<cac:PartyLegalEntity>
<cbc:RegistrationName>GossiePozzie</cbc:RegistrationName>
</cac:PartyLegalEntity>
<cac:Contact>
<cbc:Name>Gossen Rijkeboer</cbc:Name>
<cbc:Telephone>+31626660482</cbc:Telephone>
<cbc:ElectronicMail>This email address is being protected from spambots. You need JavaScript enabled to view it.</cbc:ElectronicMail>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:AllowanceCharge>
<cbc:ChargeIndicator>true</cbc:ChargeIndicator>
<cbc:AllowanceChargeReason>Verzending</cbc:AllowanceChargeReason>
<cbc:Amount currencyID="EUR">4.4</cbc:Amount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>0.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:AllowanceCharge>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">0.63</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">7.42</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">0.63</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">3.02</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">7.42</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">8.05</cbc:TaxInclusiveAmount>
<cbc:AllowanceTotalAmount currencyID="EUR">0.00</cbc:AllowanceTotalAmount>
<cbc:ChargeTotalAmount currencyID="EUR">4.40</cbc:ChargeTotalAmount>
<cbc:PrepaidAmount currencyID="EUR">8.05</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="EUR">0.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>0</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">1.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">3.02</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>ACHILLEA MILLEFOLIUM &#x2013; DUIZENDBLAD - &#x2018;Summer Pastels mix&#x2019;</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">3.02</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="C62">1.00</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
</Invoice>


If there something I can do from my end please let me know.

Greetings Gossen
01 Mar 2026 14:40

e-invoice

Category: Wishlist

I tested the xml file on test.peppolautoriteit.nl/validate and this is the error it comes with:

Document validated as: Peppol BIS 3 UBL Invoice
2 errors
error [BR-37]-Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).
location /ubl:Invoice[1]/cac:AllowanceCharge[1]
test exists(cac:TaxCategory[cac:TaxScheme/normalize-space(upper-case(cbc:ID))='VAT']/cbc:ID)
error [BR-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "Standard rated" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).
location /ubl:Invoice[1]/cac:TaxTotal[1]/cac:TaxSubtotal[1]/cac:TaxCategory[1]
test every $rate in xs:decimal(cbc:Percent) satisfies (((exists(//cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID) = 'S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]) or exists(//cac:AllowanceCharge[cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate])) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:InvoiceLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))))) or (exists(//cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID) = 'S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]) or exists(//cac:AllowanceCharge[cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate])) and ((../xs:decimal(cbc:TaxableAmount - 1) < (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)))) and (../xs:decimal(cbc:TaxableAmount + 1) > (sum(../../../cac:CreditNoteLine[cac:Item/cac:ClassifiedTaxCategory/normalize-space(cbc:ID)='S'][cac:Item/cac:ClassifiedTaxCategory/xs:decimal(cbc:Percent) =$rate]/xs:decimal(cbc:LineExtensionAmount)) + sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=true()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount)) - sum(../../../cac:AllowanceCharge[cbc:ChargeIndicator=false()][cac:TaxCategory/normalize-space(cbc:ID)='S'][cac:TaxCategory/xs:decimal(cbc:Percent) = $rate]/xs:decimal(cbc:Amount))))))

This is the peppol xml:
<?xml version="1.0"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
 <cbc:UBLVersionID>2.1</cbc:UBLVersionID>
 <cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
 <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
 <cbc:ID>C1A0R73</cbc:ID>
 <cbc:IssueDate>2026-02-28</cbc:IssueDate>
 <cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
 <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
 <cac:OrderReference>
  <cbc:ID>NA</cbc:ID>
  <cbc:SalesOrderID>C1D1W46</cbc:SalesOrderID>
 </cac:OrderReference>
 <cac:AccountingSupplierParty>
  <cac:Party>
   <cbc:EndpointID schemeID="9944">NL182610202B02</cbc:EndpointID>
   <cac:PartyName>
    <cbc:Name>Bloem en Oogst</cbc:Name>
   </cac:PartyName>
   <cac:PostalAddress>
    <cbc:StreetName>3 van Zijlweg</cbc:StreetName>
    <cbc:CityName>Wapserveen</cbc:CityName>
    <cbc:PostalZone>8351HW</cbc:PostalZone>
    <cac:Country>
     <cbc:IdentificationCode>NL</cbc:IdentificationCode>
    </cac:Country>
   </cac:PostalAddress>
   <cac:PartyTaxScheme>
    <cbc:CompanyID>NL182610202B02</cbc:CompanyID>
    <cac:TaxScheme>
     <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
   </cac:PartyTaxScheme>
   <cac:PartyLegalEntity>
    <cbc:RegistrationName>Bloem en Oogst</cbc:RegistrationName>
    <cbc:CompanyID schemeID="0106">NL182610202B02</cbc:CompanyID>
   </cac:PartyLegalEntity>
   <cac:Contact>
    <cbc:Name>Eline Houtkamp</cbc:Name>
    <cbc:Telephone>+31624897106</cbc:Telephone>
    <cbc:ElectronicMail>verkoop@bloemenoogst.nl</cbc:ElectronicMail>
   </cac:Contact>
  </cac:Party>
 </cac:AccountingSupplierParty>
 <cac:AccountingCustomerParty>
  <cac:Party>
   <cbc:EndpointID schemeID="9944">123123182</cbc:EndpointID>
   <cac:PartyName>
    <cbc:Name>GossiePozzie</cbc:Name>
   </cac:PartyName>
   <cac:PostalAddress>
    <cbc:StreetName>van Zijlweg</cbc:StreetName>
    <cbc:AdditionalStreetName>3</cbc:AdditionalStreetName>
    <cbc:CityName>Wapserveen</cbc:CityName>
    <cbc:PostalZone>8351 HW</cbc:PostalZone>
    <cac:Country>
     <cbc:IdentificationCode>NL</cbc:IdentificationCode>
    </cac:Country>
   </cac:PostalAddress>
   <cac:PartyLegalEntity>
    <cbc:RegistrationName>GossiePozzie</cbc:RegistrationName>
   </cac:PartyLegalEntity>
   <cac:Contact>
    <cbc:Name>Gossen Rijkeboer</cbc:Name>
    <cbc:Telephone>+31626660482</cbc:Telephone>
    <cbc:ElectronicMail>info@gozz.nl</cbc:ElectronicMail>
   </cac:Contact>
  </cac:Party>
 </cac:AccountingCustomerParty>
 <cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Verzending</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">4.4</cbc:Amount>
 </cac:AllowanceCharge>
 <cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">0.63</cbc:TaxAmount>
  <cac:TaxSubtotal>
   <cbc:TaxableAmount currencyID="EUR">7.42</cbc:TaxableAmount>
   <cbc:TaxAmount currencyID="EUR">0.63</cbc:TaxAmount>
   <cac:TaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>21.00</cbc:Percent>
    <cac:TaxScheme>
     <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
   </cac:TaxCategory>
  </cac:TaxSubtotal>
 </cac:TaxTotal>
 <cac:LegalMonetaryTotal>
  <cbc:LineExtensionAmount currencyID="EUR">3.02</cbc:LineExtensionAmount>
  <cbc:TaxExclusiveAmount currencyID="EUR">7.42</cbc:TaxExclusiveAmount>
  <cbc:TaxInclusiveAmount currencyID="EUR">8.05</cbc:TaxInclusiveAmount>
  <cbc:AllowanceTotalAmount currencyID="EUR">0.00</cbc:AllowanceTotalAmount>
  <cbc:ChargeTotalAmount currencyID="EUR">4.40</cbc:ChargeTotalAmount>
  <cbc:PrepaidAmount currencyID="EUR">8.05</cbc:PrepaidAmount>
  <cbc:PayableAmount currencyID="EUR">0.00</cbc:PayableAmount>
 </cac:LegalMonetaryTotal>
 <cac:InvoiceLine>
  <cbc:ID>0</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">1.00</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">3.02</cbc:LineExtensionAmount>
  <cac:Item>
   <cbc:Name>ACHILLEA MILLEFOLIUM – DUIZENDBLAD - ‘Summer Pastels mix’</cbc:Name>
   <cac:ClassifiedTaxCategory>
    <cbc:ID>S</cbc:ID>
    <cbc:Percent>21.00</cbc:Percent>
    <cac:TaxScheme>
     <cbc:ID>VAT</cbc:ID>
    </cac:TaxScheme>
   </cac:ClassifiedTaxCategory>
  </cac:Item>
  <cac:Price>
   <cbc:PriceAmount currencyID="EUR">3.02</cbc:PriceAmount>
   <cbc:BaseQuantity unitCode="C62">1.00</cbc:BaseQuantity>
  </cac:Price>
 </cac:InvoiceLine>
</Invoice>
Am I doing something wrong? I must say this is very complicated to figure out. Not any grudges to you Nicolas, I so glad you intergrated this is Hikashop with the PDF plugin.

Do you have any pointers for me?

Thanks in advance,

Gossen Rijkeboer
25 Feb 2026 17:12

Coupon and VAT incorrect

Category: Discount & Coupon

Unfortunately, it seems that coupons and discounts used with floating taxes still don't work. We have tried to make it work for years now, but no luck. So we're running a script to correct the amounts when we import transactions to our accounting software. The issue, I think, is that Hikashop always calculates the coupon/discount value based on the subtotal instead of the grand total including taxes, regardless of the "Before/After taxes" setting or the "Tax Category" option you select.
10 Feb 2026 10:14

Error on login

Category: Customers

I disabled the Hikashop GA4 plugin and this seems to work:

#
#<?php die('Forbidden.'); ?>
#Date: 2026-02-10 09:04:54 UTC
#Software: Joomla! 5.4.2 Stable [ Kutegemea ] 6-January-2026 16:00 GMT

#Fields: datetime priority clientip category message
2026-02-10T09:04:54+00:00 CRITICAL 83.86.253.48 error Uncaught Throwable of type mysqli_sql_exception thrown with message "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1". Stack trace: #0 [ROOT]/libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php(138): mysqli->prepare()
#1 [ROOT]/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php(972): Joomla\Database\Mysqli\MysqliStatement->__construct()
#2 [ROOT]/libraries/vendor/joomla/database/src/DatabaseDriver.php(1780): Joomla\Database\Mysqli\MysqliDriver->prepareStatement()
#3 [ROOT]/plugins/system/hikashop_ga4/hikashop_ga4.php(856): Joomla\Database\DatabaseDriver->setQuery()
#4 [ROOT]/plugins/system/hikashop_ga4/hikashop_ga4.php(869): plgSystemHikashop_ga4->_isCartPage()
#5 [ROOT]/plugins/system/hikashop_ga4/hikashop_ga4.php(75): plgSystemHikashop_ga4->getCartJS()
#6 [ROOT]/administrator/components/com_hikashop/pluginCompatJ4.php(68): plgSystemHikashop_ga4->onBeforeCompileHead()
#7 [ROOT]/libraries/vendor/joomla/event/src/Dispatcher.php(454): hikashopJoomlaPlugin->__call()
#8 [ROOT]/libraries/src/Document/Renderer/Html/MetasRenderer.php(62): Joomla\Event\Dispatcher->dispatch()
#9 [ROOT]/libraries/src/Document/HtmlDocument.php(578): Joomla\CMS\Document\Renderer\Html\MetasRenderer->render()
#10 [ROOT]/libraries/src/Document/HtmlDocument.php(897): Joomla\CMS\Document\HtmlDocument->getBuffer()
#11 [ROOT]/libraries/src/Document/HtmlDocument.php(650): Joomla\CMS\Document\HtmlDocument->_renderTemplate()
#12 [ROOT]/libraries/src/Application/CMSApplication.php(1120): Joomla\CMS\Document\HtmlDocument->render()
#13 [ROOT]/libraries/src/Application/SiteApplication.php(745): Joomla\CMS\Application\CMSApplication->render()
#14 [ROOT]/libraries/src/Application/CMSApplication.php(309): Joomla\CMS\Application\SiteApplication->render()
#15 [ROOT]/includes/app.php(58): Joomla\CMS\Application\CMSApplication->execute()
#16 [ROOT]/index.php(51): require_once('...')
#17 {main}
09 Feb 2026 15:28

ubl errors

Category: Checkout

-- HikaShop version -- : 6.3.0
-- Joomla version -- : 5.4
-- PHP version -- : 8.4

did a ubl test on www.ubl.be/validator/
but got errors:

UBL.BE : Error

[BR-S-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.
Specification identifier MUST have the value 'urn:cen.eu:en16931:2017#conformant#urn:UBL.BE:1.0.0.20180214'.
[ubl-BE-01]-At least two AdditionalDocumentReference elements must be present.
[ubl-BE-10]-cac:cac:TaxTotal/cac:TaxSubtotal/cac:TaxCategory/cbc:Name must be in BTCC list :
[ubl-BE-14]-Invoice/cac:InvoiceLine/cac:TaxTotal/cbc:TaxAmount is Mandatory.
[ubl-BE-15]-cac:ClassifiedTaxCategory/cbc:Name must be present.
01 Feb 2026 10:31

500 A database error has occurred. Please enable debug mode for more information

Category: Install & Update

-- HikaShop version -- : 6.3
-- Joomla version -- : 5.42
-- PHP version -- : 8.3x
-- Browser(s) name and version -- : Chrome à jour Version 144.0.7559.110 (Build officiel) (64 bits)
-- Error-message(debug-mod must be tuned on) -- : 500 A database error has occurred. Please enable debug mode for more information.during update from 6.2 to 6.3

Hello

I have this error during update from 6.2 to 6.3

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near
'mon_grouping";s:1:"3";s:13:"positive_sign";s:0:"";s:13:"negative_sign";s:1:"-...' at line 152
.../libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php:138
133         $this->connection   = $connection;
134         $this->query        = $query;
135 
136         $query = $this->prepareParameterKeyMapping($query);
137 
138         $this->statement  = $connection->prepare($query);
139 
140         if (!$this->statement) {
141             throw new PrepareStatementFailureException($this->connection->error, $this->connection->errno);
142         }
143     }
mysqli->prepare()
Joomla\Database\Mysqli\MysqliStatement->__construct()
Joomla\Database\Mysqli\MysqliDriver->prepareStatement()
Joomla\Database\DatabaseDriver->setQuery()
hikashopUpdateHelper->processSQLfile()
hikashopUpdateHelper->addDefaultData()
updateController->install()
Joomla\CMS\MVC\Controller\BaseController->execute()
require_once()
Joomla\CMS\Dispatcher\LegacyComponentDispatcher::Joomla\CMS\Dispatcher\{closure}()
Joomla\CMS\Dispatcher\LegacyComponentDispatcher->dispatch()
Joomla\CMS\Component\ComponentHelper::renderComponent()
Joomla\CMS\Application\AdministratorApplication->dispatch()
Joomla\CMS\Application\AdministratorApplication->doExecute()
Joomla\CMS\Application\CMSApplication->execute()
require_once()
mysqli->prepare()
.../libraries/vendor/joomla/database/src/Mysqli/MysqliStatement.php:138
133         $this->connection   = $connection;
134         $this->query        = $query;
135 
136         $query = $this->prepareParameterKeyMapping($query);
137 
138         $this->statement  = $connection->prepare($query);
139 
140         if (!$this->statement) {
141             throw new PrepareStatementFailureException($this->connection->error, $this->connection->errno);
142         }
143     }
Joomla\Database\Mysqli\MysqliStatement->__construct()
.../libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:972
967      * @since   2.0.0
968      * @throws  PrepareStatementFailureException
969      */
970     protected function prepareStatement(string $query): StatementInterface
971     {
972         return new MysqliStatement($this->connection, $query);
973     }
974 
975     /**
976      * Unlocks tables in the database.
977      *
Joomla\Database\Mysqli\MysqliDriver->prepareStatement()
.../libraries/vendor/joomla/database/src/DatabaseDriver.php:1780
1775 
1776         $query->setLimit($limit, $offset);
1777 
1778         $sql = $this->replacePrefix((string) $query);
1779 
1780         $this->statement = $this->prepareStatement($sql);
1781 
1782         $this->sql    = $query;
1783         $this->limit  = (int) max(0, $limit);
1784         $this->offset = (int) max(0, $offset);
1785 
Joomla\Database\DatabaseDriver->setQuery()
.../administrator/components/com_hikashop/helpers/update.php:937
932 			$query = $c;
933 		}
934 
935 		$query = trim($query);
936 		if(!empty($query) && $this->checkSQLquery($query)) {
937 			$this->db->setQuery($query);
938 			try {
939 				 $this->db->execute();
940 			} catch(Exception $e) {}
941 		}
942 		unset($query);
hikashopUpdateHelper->processSQLfile()
.../administrator/components/com_hikashop/helpers/update.php:866
861 (11, 'Order to ship', 'O:8:"stdClass":27:{s:7:"display";s:7:"listing";s:9:"date_type";s:7:"created";s:10:"date_group";s:5:"%j %Y";s:10:"periodType";s:14:"proposedPeriod";s:14:"proposedPeriod";s:3:"all";s:6:"period";s:1:"0";s:7:"content";s:6:"orders";s:7:"filters";s:54:"a:1:{s:14:"a.order_status";a:1:{i:0;s:9:"confirmed";}}";s:15:"category_childs";s:1:"0";s:9:"customers";s:14:"last_customers";s:15:"customers_order";s:5:"sales";s:8:"partners";s:14:"last_customers";s:14:"partners_order";s:5:"sales";s:12:"compare_with";s:7:"periods";s:14:"period_compare";s:4:"none";s:5:"limit";s:0:"";s:6:"region";s:5:"world";s:6:"format";s:5:"UTF-8";s:10:"map_source";s:8:"shipping";s:12:"product_data";s:5:"sales";s:16:"product_order_by";s:4:"best";s:15:"orders_order_by";s:4:"last";s:8:"compares";N;s:10:"categories";s:3:"all";s:8:"products";s:6:"a:0:{}";s:7:"coupons";s:6:"a:0:{}";s:6:"status";s:0:"";}', 0, 11, 'all');
862 EOD;
863 		$this->db->setQuery($query);
864 		$this->db->execute();
865 
866 		$this->processSQLfile('currencies.sql');
867 
868 		$this->db->setQuery($query);
869 		$this->db->execute();
870 
871 		$config = hikashop_config();
hikashopUpdateHelper->addDefaultData()
.../administrator/components/com_hikashop/controllers/update.php:30
25 		$newConfig->installcomplete = 1;
26 		$config = hikashop_config();
27 		$config->save($newConfig);
28 		$updateHelper = hikashop_get('helper.update');
29 		$updateHelper->addJoomfishElements();
30 		$updateHelper->addDefaultData();
31 		$updateHelper->createUploadFolders();
32 		$lang = JFactory::getLanguage();
33 		$code = $lang->getTag();
34 		$updateHelper->installMenu($code);
35 		if($code != 'en-GB') {
updateController->install()
.../libraries/src/MVC/Controller/BaseController.php:730
725         }
726 
727         // Record the actual task being fired
728         $this->doTask = $doTask;
729 
730         return $this->$doTask();
731     }
732 
733     /**
734      * Method to get a model object, loading it if required.
735      *
Joomla\CMS\MVC\Controller\BaseController->execute()
.../administrator/components/com_hikashop/hikashop.php:75
70 	$app->enqueueMessage('Page not found : '.$taskGroup, 'warning');
71 	return;
72 }
73 
74 hikaInput::get()->set('view', $classGroup->getName() );
75 $classGroup->execute( hikaInput::get()->get('task','listing'));
76 $classGroup->redirect();
77 if(hikaInput::get()->getString('tmpl') !== 'component'){
78 	echo hikashop_footer();
79 }
80 
require_once()
.../libraries/src/Dispatcher/LegacyComponentDispatcher.php:71
66         // Load common and local language files.
67         $lang->load($this->app->scope, JPATH_BASE) || $lang->load($this->app->scope, JPATH_BASE . '/components/' . $this->app->scope);
68 
69         // Execute the component
70         $loader = static function ($path) {
71             require_once $path;
72         };
73         $loader($path);
74     }
75 }
Arguments
0	
string(82) "/homepages/3/d4298756585/htdocs/administrator/components/com_hikashop/hikashop.php"
Joomla\CMS\Dispatcher\LegacyComponentDispatcher::Joomla\CMS\Dispatcher\{closure}()
.../libraries/src/Dispatcher/LegacyComponentDispatcher.php:73
68 
69         // Execute the component
70         $loader = static function ($path) {
71             require_once $path;
72         };
73         $loader($path);
74     }
75 }
Joomla\CMS\Dispatcher\LegacyComponentDispatcher->dispatch()
.../libraries/src/Component/ComponentHelper.php:361
356         if (!static::isEnabled($option)) {
357             throw new MissingComponentException(Text::_('JLIB_APPLICATION_ERROR_COMPONENT_NOT_FOUND'), 404);
358         }
359 
360         ob_start();
361         $app->bootComponent($option)->getDispatcher($app)->dispatch();
362         $contents = ob_get_clean();
363 
364         // Revert the scope
365         $app->scope = $scope;
366 
Joomla\CMS\Component\ComponentHelper::renderComponent()
.../libraries/src/Application/AdministratorApplication.php:150
145         $this->dispatchEvent(
146             'onAfterInitialiseDocument',
147             new AfterInitialiseDocumentEvent('onAfterInitialiseDocument', ['subject' => $this, 'document' => $document])
148         );
149 
150         $contents = ComponentHelper::renderComponent($component);
151         $document->setBuffer($contents, ['type' => 'component']);
152 
153         // Trigger the onAfterDispatch event.
154         $this->dispatchEvent(
155             'onAfterDispatch',
Joomla\CMS\Application\AdministratorApplication->dispatch()
.../libraries/src/Application/AdministratorApplication.php:206
201             ['option' => 'com_users', 'task' => 'method.add'],
202             ['option' => 'com_users', 'task' => 'method.save'],
203         ]);
204 
205         // Dispatch the application
206         $this->dispatch();
207 
208         // Mark afterDispatch in the profiler.
209         JDEBUG ? $this->profiler->mark('afterDispatch') : null;
210     }
211 
Joomla\CMS\Application\AdministratorApplication->doExecute()
.../libraries/src/Application/CMSApplication.php:304
299             $this->sanityCheckSystemVariables();
300             $this->setupLogging();
301             $this->createExtensionNamespaceMap();
302 
303             // Perform application routines.
304             $this->doExecute();
305 
306             // If we have an application document object, render it.
307             if ($this->document instanceof \Joomla\CMS\Document\Document) {
308                 // Render the application output.
309                 $this->render();
Joomla\CMS\Application\CMSApplication->execute()
.../administrator/includes/app.php:58
53 
54 // Set the application as global app
55 \Joomla\CMS\Factory::$application = $app;
56 
57 // Execute the application.
58 $app->execute();
require_once()
.../administrator/index.php:32
27  * define() is used rather than "const" to not error for PHP 5.2 and lower
28  */
29 \define('_JEXEC', 1);
30 
31 // Run the application - All executable code should be triggered through this file
32 require_once __DIR__ . '/includes/app.php';
Arguments
0	
string(62) "/homepages/3/d4298756585/htdocs/administrator/includes/app.php"
29 Jan 2026 22:41

price_site_id

Category: Development

Hi, after updating to 6.2.0 I noticed an issue with price selection. If a product has two prices — one with a string in price_site_id and one with an empty price_site_id — the product page only shows the one with the Site ID, even if it's higher. However, the category listing still shows the lower (empty Site ID) price.

I have 'Show several prices' enabled, but var_dump($this->row->prices) in the template shows only one price object. It seems the core filters out the second price before it reaches the view. Is this an intended change in specificity logic?

var dump on product listing

array(1) { [0]=> object(stdClass)#5677 (13) { ["price_id"]=> int(191478) ["price_currency_id"]=> int(81) ["price_product_id"]=> int(56480) ["price_value"]=> string(12) "740503.68000" ["price_min_quantity"]=> int(0) ["price_access"]=> string(3) "all" ["price_site_id"]=> string(0) "" ["price_users"]=> string(0) "" ["price_start_date"]=> int(0) ["price_end_date"]=> int(0) ["price_zone_id"]=> string(0) "" ["price_value_with_tax"]=> float(858985) ["taxes"]=> array(1) { ["0000_00000003"]=> object(stdClass)#5667 (20) { ["taxation_id"]=> int(3) ["zone_namekey"]=> array(1) { [0]=> string(22) "country_Kazakhstan_109" } ["category_namekey"]=> string(11) "default_tax" ["tax_namekey"]=> string(15) "НДС 16% (KZ)" ["taxation_published"]=> int(1) ["taxation_type"]=> string(0) "" ["taxation_access"]=> string(3) "all" ["taxation_cumulative"]=> int(0) ["taxation_post_code"]=> string(0) "" ["taxation_date_start"]=> int(1767291300) ["taxation_date_end"]=> int(0) ["taxation_internal_code"]=> string(0) "" ["taxation_note"]=> string(57) "Налог на добавленную стоимость" ["taxation_site_id"]=> string(0) "" ["taxation_ordering"]=> int(0) ["tax_rate"]=> string(7) "0.16000" ["zone_type"]=> string(7) "country" ["tax_ratio"]=> int(1) ["tax_amount"]=> float(118481) ["amount"]=> float(740504) } } } } 858 985 KZT за шт.


vardump form product page

array(1) { [0]=> object(stdClass)#5309 (14) { ["price_id"]=> int(191483) ["price_currency_id"]=> int(81) ["price_product_id"]=> int(56480) ["price_value"]=> string(12) "623793.10345" ["price_min_quantity"]=> int(0) ["price_access"]=> string(3) "all" ["price_site_id"]=> string(1) "A" ["price_users"]=> string(0) "" ["price_start_date"]=> int(0) ["price_end_date"]=> int(0) ["price_zone_id"]=> string(0) "" ["price_value_with_tax"]=> float(723600) ["taxes_added"]=> bool(true) ["taxes"]=> array(1) { ["0000_00000003"]=> object(stdClass)#5307 (20) { ["taxation_id"]=> int(3) ["zone_namekey"]=> array(1) { [0]=> string(22) "country_Kazakhstan_109" } ["category_namekey"]=> string(11) "default_tax" ["tax_namekey"]=> string(15) "НДС 16% (KZ)" ["taxation_published"]=> int(1) ["taxation_type"]=> string(0) "" ["taxation_access"]=> string(3) "all" ["taxation_cumulative"]=> int(0) ["taxation_post_code"]=> string(0) "" ["taxation_date_start"]=> int(1767291300) ["taxation_date_end"]=> int(0) ["taxation_internal_code"]=> string(0) "" ["taxation_note"]=> string(57) "Налог на добавленную стоимость" ["taxation_site_id"]=> string(0) "" ["taxation_ordering"]=> int(0) ["tax_rate"]=> string(7) "0.16000" ["zone_type"]=> string(7) "country" ["tax_ratio"]=> int(1) ["tax_amount"]=> float(99807) ["amount"]=> float(623793) } } } }
23 Jan 2026 13:30

Compatibilité Joomla 6

Category: Checkout

-- url of the page with the problem -- : julie-julon.fr/index.php/
-- HikaShop version -- : 6.2.0
-- Joomla version -- : 5.4.2
-- PHP version -- : 8.5
-- Browser(s) name and version -- : Version 144.0.7559.59 (Build officiel) (x86_64)

Bonjour,

Avant de passer à Joomla version 6, je me demande si Hikashop est compatible avec cette version.
J'ai déjà planté le site la semainer dernière et, avant de changer de vrsion, j'ai de nombreuses lignes d'avertissement.
Les voici

HikaShop Cart notification Plugin Plugin
HikaShop Content Markdown Plugin Plugin
Hikashop Date Picker Plugin Plugin
Hikashop Email History Plugin Plugin
HikaShop order history plugin Plugin
HikaShop KashFlow plugin Plugin
Hikashop Massaction Address Plugin Plugin
Hikashop Massaction Category Plugin Plugin
Hikashop Massaction Order Plugin Plugin
Hikashop Massaction Product Plugin Plugin
Hikashop Massaction User Plugin Plugin
HikaShop Shipping manual - Prices per product plugin Plugin
Hikashop TaxCloud Plugin Plugin
HikaShop joomla user account link plugin Plugin
HikaShop Free orders validation Plugin Plugin
HikaShop Payza payment plugin Plugin
HikaShop AliPay payment plugin Plugin
HikaShop Worldline SIPS payment plugin Plugin
HikaShop Worldline SIPS V2 payment plugin Plugin
HikaShop Authorize.net payment plugin Plugin
HikaShop bank transfer payment plugin Plugin
HikaShop Be2Bill payment plugin Plugin
HikaShop Beanstream payment plugin Plugin
HikaShop Bluepaid payment plugin Plugin
HikaShop Borgun payment plugin Plugin
HikaShop CardSave payment plugin Plugin
HikaShop check payment plugin Plugin
HikaShop Monetico payment plugin Plugin
HikaShop collect on delivery payment plugin Plugin
HikaShop common payment API plugin Plugin
HikaShop credit card payment plugin Plugin
HikaShop ePay payment plugin Plugin
HikaShop eSelect/Moneris payment plugin Plugin
HikaShop eWAY payment plugin Plugin
HikaShop First Data payment plugin Plugin
HikaShop HSBC payment plugin Plugin
HikaShop iPayDNA payment plugin Plugin
HikaShop iVeri payment plugin Plugin
HikaShop MIGS VPC payment plugin Plugin
HikaShop Monetico payment plugin Plugin
HikaShop Moneybookers payment plugin Plugin
HikaShop NETS payment plugin Plugin
HikaShop Ogone payment plugin Plugin
HikaShop PayBox payment plugin Plugin
HikaShop PayGate payment plugin Plugin
HikaShop PayJunction payment plugin Plugin
HikaShop Payment Express PxPost payment plugin Plugin
HikaShop Paypal payment plugin Plugin
HikaShop Paypal Advanced payment plugin Plugin
HikaShop Paypal Checkout payment plugin Plugin
HikaShop Paypal Express Checkout payment plugin Plugin
Hikashop Paypal Website Payments Pro Hosted Payment plugin Plugin
HikaShop PayPal Pro payment plugin Plugin
HikaShop PayPlug payment plugin Plugin
HikaShop PayPlug v2 payment plugin Plugin
HikaShop PayU India payment plugin Plugin
HikaShop Post Finance payment plugin Plugin
HikaShop Purchase Order payment plugin Plugin
HikaShop Payment Express PxPay payment plugin Plugin
HikaShop Servired payment plugin Plugin
HikaShop VirtualMerchant payment plugin Plugin
HikaShop Western Union payment plugin Plugin
HikaShop WestPac API payment plugin Plugin
HikaShop WorldNetTPS payment plugin Plugin
HikaShop Australia Post shipping plugin V2 Plugin
HikaShop CANPAR shipping plugin Plugin
HikaShop Fedex shipping plugin Plugin
HikaShop manual shipping plugin Plugin
HikaShop UPS shipping plugin Plugin
HikaShop USPS shipping plugin Plugin
HikaShop Quickicon plugin Plugin
HikaShop categories search plugin Plugin
HikaShop products search plugin Plugin
HikaShop massaction plugin
Problème potentiel de mise à jour.
Plugin
HikaShop Payment Notification plugin Plugin
HikaShop product tag translation plugin
Problème potentiel de mise à jour.
Plugin
HikaShop Microdata on Product Page plugin Plugin
Redirect Joomla registration to HikaShop plugin Plugin
HikaShop Google Dynamic Remarketing (conversion tracking) plugin Plugin
Hikashop Social Networks plugin Plugin
HikaShop user synchronization plugin
Problème potentiel de mise à jour.
Plugin
Mijoshop Fallback Redirect plugin Plugin
HikaShop no SSL outside checkout plugin Plugin
Redshop Fallback Redirect plugin Plugin
VirtueMart Fallback Redirect plugin Plugin
HikaShop Content Module Module
HikaShop Cart Module Module
HikaShop Currency Switcher Module Module
Hikashop product tag insertion plugin Plugin
Smart Search - HikaShop Products Plugin
HikaShop Dashboard Module
30 Oct 2025 09:05

order discount tax

Category: Discount & Coupon

I'm creating an integration with an external service and saving all order data to a file to check the values. The default tax category is 23. I'm adding a coupon with a fixed value of 10 and setting the Automatic Taxes to NO and the Tax Category to Default Tax Category. In the order data, my coupon has a value of 10, but the VAT rate is 0. The order_discount_tax in the Hikashop table is also 0.
21 Sep 2025 07:51

A Conditional Product Surcharge?

Category: Development

-- HikaShop version -- : 6.1

I have a customer who owns 3 pawn shops, and wants to sell products online which may include firearms. In the U.S., these items can't be shipped directly to the customer, but can be transferred to a licensed firearm dealer anywhere in the country ( this is called an FFL Transfer, and includes a base surcharge - usually $25 ). There will also be one location where customers can pick up the firearm directly without an FFL Transfer fee.

Products which require a FFL Transfer belong to their own Subcategory within the "firearms" Category. I have already customized the checkout to display a notice if one of these items is in the customer's cart, so I have code to loop through the cart and test for those items.

A ) The shop is willing restrict any single order to a single FFL Transfer destination, so I have a custom DB table to store dealers (over 50,000 of them) and am currently planning to store the customer's preference in a Hikashop custom field appended to the Customer table, so that they will have a recallable preference for future orders. Each Order will store the destination requested for that particular order.

B ) The firearms themselves will be listed as "virtual goods" so that a Shipping Address will be required only if the order contains something other than firearms. Only 1 of the customer's 3 shop locations can allow customers to pickup a firearm after a purchase, so I could test the FFL ID field for that value.

C ) Since the Customer's Hikashop Shipping address may not be known during the order, my tentative plan right now is to add a custom field to the Item, with the pawn shop's FFL ID as the default value for all firearms. It's going to take a tricky javascript driven modal selector to make it simpler to choose an FFL Dealer by providing first the state, then the city and finally a MUCH shorter dropdown of FFL Licensed businesses.


I suspect that there will be three scenarios:

An order with only firearms - which will require no Shipping address and a chosen FFL Dealer ID attached to each Order along with a FFL Transfer surcharge for each firearm.

An order with no firearms - which will require a Shipping address or possibly a PickUp shipping at any of the three pawn shop locations.

An order with firearms AND non-firearm items - which will require a Shipping address AND a chosen FFL Dealer ID attached to each Order along with a FFL Transfer surcharge for each firearm.


I've read about the Custom Field price plugin, and think it might work here. I think the best way to make this happen is to count the number of Firearms in the cart and place that value in a hidden custom field for the Order -- then ONLY IF the Customer Pickup for that one free shop location is not chosen for the order, to calculate that fee value based upon that hidden custom field value.

Where does an order-based fee created by this plugin appear on an invoice? Is the fee created by the plugin treated as a new Item? As a discount applied after the subtotal line? I do not know if the fee needs to be taxable.

Thank you for your information and advice.
19 Sep 2025 11:07

US import Tariff - Product pricing

Category: Content Creation

Hi,

It's not possible to have formulas or conditions based on the address information with the price calculations plugin, at least not at the moment.

However, since HikaShop 5.1.2, product prices can be restricted based on the zone. And thus, you can configure different prices for different countries in each product. So, you could update HikaShop to use that.

Another possibility is to create discounts with negative amounts / percentages. Discounts can be restricted on the zone and on the products / categories too, so they will act as a fee.
The advantage with this is that you can configure fees for whole categories. For example, if you know that all products of category X require Y% of taxes for the USA, then you could just create one discount for the whole category. This would also allow you to not update HikaShop if that's a problem on your website for some reason.
The downside is that you cant configure real discounts on the products anymore ( or you have to restrict the real discounts for other countries ) because you can only have one discount applied to a product at a time and the real discount would take precedence over the fee discount.
Displaying 21 - 32 out of 32 results.
Time to create page: 0.229 seconds
Powered by Kunena Forum