Waluty i podatki w Sylius. Jak działa wielowalutowość oraz mechanizm VAT w praktyce?

Obsługa walut i podatków to jeden z najważniejszych obszarów każdego systemu e-commerce B2B i B2C. To od poprawnej konfiguracji płatności, kursów wymiany, stawek podatkowych i sposobu liczenia VAT zależy nie tylko to, co zobaczy klient w koszyku, ale też spójność raportowania, integracji z ERP i obsługi zamówień.

Waluty i podatki Sylius
10.06
2026
Kategorie:

W tym tekście wyjaśnię, jak działa obsługa walut oraz mechanizm podatkowy w Syliusie, na czym opiera się logika przeliczania cen, czym różni się waluta bazowa od walut dostępnych dla klientów i w jaki sposób framework oblicza podatki dla konkretnych pozycji koszyka.

Jak działa obsługa walut w Syliusie?

Konfiguracja dostępna jest w panelu administracyjnym w sekcji Configuration → Currencies. Z tego miejsca administrator może dodać do systemu waluty, które będą później wykorzystywane w kanałach sprzedaży.

Samo dodanie pozycji do systemu jest proste: wystarczy wybrać ją z listy i zapisać konfigurację. Trzeba jednak pamiętać, że utworzenie waluty w konfiguracji globalnej nie oznacza jeszcze, że klient zobaczy ją w sklepie.

Dlatego po dodaniu należy przypisać ją do odpowiedniego kanału. To istotny krok, ponieważ Sylius od początku zakłada pracę z kanałami sprzedaży, a te mogą mieć różne ustawienia walutowe.

Base Currency a dostępne waluty w Syliusie

Każdy kanał sprzedaży w Syliusie posiada jedną walutę bazową, czyli Base Currency. To właśnie w niej przechowywane są ceny produktów w bazie danych.

Obok waluty bazowej kanał może mieć również skonfigurowaną listę dostępnych walut, czyli Currencies. Są to opcje, które klient może wybrać podczas korzystania ze sklepu. Przykładowo kanał może mieć bazową walutę PLN, ale jednocześnie umożliwiać klientom wyświetlanie cen w EUR albo USD.

To rozróżnienie jest kluczowe. W standardowym mechanizmie wielowalutowości Sylius nie przechowuje osobnej ceny produktu dla każdej waluty. Cena wariantu zapisana jest względem kanału, a ten posiada niezmienną walutę bazową. Wartości w pozostałych walutach są wynikiem przeliczenia. Jeśli projekt wymaga niezależnych cen w różnych walutach, nie jest to już zwykła konfiguracja, tylko osobna decyzja architektoniczna dotycząca pricingu.

Jak działa przeliczanie walut w Syliusie?

Mechanizm wielowalutowości w Syliusie opiera się o Exchange Rate, czyli kurs wymiany. Podczas przeliczania system pobiera cenę źródłową i mnoży ją przez współczynnik ratio. Za sam proces odpowiada komponent CurrencyConverter.

Warto zwrócić uwagę na ważny szczegół: kursy wymiany w Syliusie są dwukierunkowe. Oznacza to, że kurs z PLN do EUR i kurs z EUR do PLN są traktowane jako ten sam wpis. Zapisujemy tylko jeden kurs, powiedzmy EUR → PLN. Jeżeli sklep będzie potrzebował przeliczenia PLN → EUR, po prostu przemnoży przez odwrócony mnożnik (1/mnożnik). Jeśli sklep ma obsługiwać przeliczenia w obu kierunkach w różnych kwotach, by móc zdefiniować spread, wymaga to osobnej implementacji.

Przeczytaj więcej: techniczna lista kontrolna cross-border e-commerce.

Jak Sylius zapisuje walutę w zamówieniu?

Podczas składania zamówienia Sylius zapisuje walutę, w której klient złożył zamówienie, w polu currencyCode. Jest to zawsze base currency danego kanału.

Ma to znaczenie przy bardziej zaawansowanych potrzebach biznesowych, takich jak raportowanie historycznych wartości, integracje księgowe, synchronizacja z ERP albo analiza różnic kursowych. Jeśli organizacja potrzebuje przechowywać kurs użyty w danym zamówieniu, warto uwzględnić to już na etapie projektowania architektury i ewentualnie rozszerzyć standardowy mechanizm.

Czy Sylius automatycznie pobiera kursy walut?

Sylius nie posiada wbudowanego mechanizmu automatycznej aktualizacji kursów walut. Te mogą być aktualizowane ręcznie z poziomu panelu administracyjnego, za pomocą pluginów albo przez własną integrację, na przykład cykliczne zadanie pobierające dane z ECB lub NBP.

To nie jest przypadkowy brak funkcji, tylko świadoma decyzja architektoniczna. Framework nie uzależnia podstawowego działania systemu od konkretnego zewnętrznego API i nie narzuca jednego źródła danych walutowych. Dzięki temu zespół wdrożeniowy może sam zdecydować, skąd pobierać kursy, jak często je aktualizować i w jaki sposób kontrolować politykę przeliczania cen.

Jak działa system podatków w Sylius?

Mechanizm podatków w Syliusie opiera się na kilku pojęciach, które razem tworzą model obliczania VAT lub innych podatków sprzedażowych. Najważniejsze z nich to TaxCategory, TaxRate oraz TaxZone.

TaxCategory określa kategorię podatkową produktu. Może to być na przykład żywność, książki, elektronika albo dowolna inna grupa objęta określoną logiką podatkową.

TaxRate definiuje konkretną stawkę podatkową, która jest powiązana zarówno z kategorią podatkową, jak i ze strefą geograficzną. Dzięki temu ten sam typ produktu może mieć różne opodatkowanie w zależności od lokalizacji klienta lub rynku, na którym działa kanał sprzedaży.

Zone, czyli strefy, mogą między innymi być użyte do definicji podatków. Z perspektywy podatków strefa jest konieczna. Natomiast nie każda strefa może być użyta do podatków. Strefy posiadają „Zasięg" (Scope). Tylko scope „All" i „Tax" może być użyty w podatkach i odpowiadać za obszar geograficzny. Mechanizm ten opiera się o strefy, czyli Zone, które mogą składać się z krajów, prowincji albo innych stref.

Jak Sylius oblicza podatek?

Proces obliczania podatku w Syliusie przebiega wieloetapowo. Najpierw framework określa strefę klienta na podstawie adresu zamówienia. Wykorzystywany jest do tego mechanizm ZoneMatcherInterface, który dopasowuje adres do odpowiedniej strefy.

Następnie dla każdej pozycji koszyka system wyszukuje odpowiednią stawkę podatkową, czyli TaxRate, która pasuje do kategorii podatkowej produktu oraz strefy klienta. Jeśli system znajdzie właściwą stawkę, może przejść do obliczenia wartości podatku.

Samo obliczenie wykonywane jest przez kalkulator podatkowy, który odpowiada za wyliczenie konkretnych wartości i zastosowanie ich do pozycji koszyka lub zamówienia. W praktyce oznacza to, że logika podatkowa w Syliusie nie jest zaszyta w jednym miejscu, lecz wynika z konfiguracji kategorii, stawek, stref i typu kalkulatora.

Included in price? Jak Sylius obsługuje ceny netto i brutto

Przy konfiguracji TaxRate dostępna jest flaga included in price? To ustawienie określa, czy podatek jest już zawarty w cenie produktu, czy powinien zostać doliczony do ceny na końcu procesu.

Jeżeli flaga jest aktywna, cena traktowana jest jako brutto. Jeśli flaga nie jest zaznaczona, cena traktowana jest jako netto.

To ustawienie powinno być dobrze przemyślane, szczególnie w projektach łączących sprzedaż B2B i B2C albo działających na wielu rynkach. Błędna konfiguracja może prowadzić do różnic w prezentacji cen, wartości koszyka, raportowaniu i danych przekazywanych do systemów zewnętrznych.

Jakie kalkulatory podatkowe dostępne są w Sylius?

Sylius domyślnie udostępnia dwa kalkulatory podatkowe: DefaultCalculator oraz DecimalCalculator. Każdy z nich pełni inną rolę i może być używany w zależności od potrzeb projektu.

DefaultCalculator

Zaokrągla wynik do pełnych groszy.

DecimalCalculator

Zwraca wynik bez zaokrąglania.

Czy można stworzyć własny kalkulator podatkowy w Sylius?

Tak. Jedną z dużych zalet architektury Syliusa jest możliwość rozszerzania logiki podatkowej bez konieczności przebudowy całego mechanizmu. Jeśli projekt wymaga niestandardowego sposobu wyliczania podatków, można przygotować własny kalkulator implementujący odpowiedni interfejs.

W praktyce często oznacza to stworzenie osobnej klasy oraz zmianę konfiguracji kalkulatora w ustawieniach systemu i odpowiednich TaxRate. Dzięki temu własna logika może zostać wpięta w istniejący proces obliczeń, zamiast zastępować całość mechanizmu podatkowego.

Co odpowiada za waluty i podatki w Sylius?

ElementOdpowiedzialność
Base CurrencyWaluta bazowa kanału sprzedaży
Exchange RatePrzeliczanie cen między walutami
CurrencyConverterMechanizm przeliczania wartości
TaxCategoryKategoria podatkowa produktu
TaxRateStawka podatkowa
ZoneObszar obowiązywania podatku
ZoneMatcherInterfaceDopasowanie klienta do strefy podatkowej
TaxCalculatorWyliczanie wartości podatku

Przeczytaj więcej: nasza historia z Syliusem.

FAQ – waluty i podatki w Sylius

Czy Sylius obsługuje wiele walut?

Tak. Sylius pozwala przypisywać wiele walut do kanału sprzedaży i przeliczać ceny przy użyciu kursów wymiany.

Czy Sylius automatycznie pobiera kursy walut?

Nie. Kursy walut można aktualizować ręcznie lub za pomocą własnych integracji i pluginów.

Jak Sylius oblicza podatek VAT?

Framework określa strefę klienta, wyszukuje odpowiednią stawkę podatkową i używa kalkulatora do wyliczenia podatku dla pozycji koszyka.

Czy można stworzyć własny kalkulator podatkowy w Sylius?

Tak. Architektura frameworka pozwala rozszerzać logikę podatkową i implementować własne kalkulatory.

Czy Sylius zapisuje kurs waluty w zamówieniu?

Nie. Standardowo Sylius składa zamówienie w walucie bazowej, więc nie tylko kurs, ale i widziana waluta nie zostaje zapisana.

Czy Sylius obsługuje ceny brutto i netto?

Tak. Mechanizm TaxRate pozwala określić, czy podatek jest zawarty w cenie produktu, czy powinien zostać doliczony osobno.

← Wróć do bloga

Powiązane artykuły