WordPress

WooCommerce稅金設定教學:稅率、稅級到前台顯示一次設定完成

網路商店結帳到最後一步,價格忽然跳動,是不少消費者都遇過的事。商店頁看到的是 1,000 元,結帳畫面卻變成 1,050 元。開店的賣家自己也未必講得清楚,後台商品編輯畫面打的那個數字,算不算已經含稅。這不是無關緊要的小細節,填錯方向,前台顯示的價格可能整批跟著偏移。

WooCommerce 的稅金設定(Tax Settings)要解開的就是這個謎團。從最上游「輸入價格時算不算含稅」,到中游的稅率表、稅級,再到前台商店頁與結帳頁該不該顯示含稅,每一層都彼此牽動,一個選項沒對齊,後面顯示的價格就可能跟顧客實際要付的錢兜不起來。

先從最上游、也最容易被忽略的那個選項講起,弄懂它,後面幾個設定為什麼會互相連動就看得懂了。

WooCommerce稅金設定的四層資料流:從輸入價格含稅與否、稅率表與稅級、運費課稅到前台顯示層層連動
WooCommerce稅金設定分四層:輸入價格算不算含稅、稅率表與稅級、運費是否課稅、前台顯示,一層沒對齊價格就會兜不起來。

含稅定價與未稅定價的選擇牽動後續所有設定步驟

WooCommerce 有一個藏在 General 設定頁裡的選項叫「Prices entered with tax(輸入價格時是否已含稅)」,它決定的不是一個可有可無的小細節,而是後台商品編輯畫面裡,你打的那個數字代表什麼。這個設定只有兩個選項可選:「Yes, I will enter prices inclusive of tax(是,我輸入的價格已經含稅)」與「No, I will enter prices exclusive of tax(否,我輸入的是未稅價格)」。選前者,系統會把你打的數字當成含稅總價,自己反推出稅前金額;選後者,系統會把你打的數字當成稅前價格,再自己加上稅額。

在WooCommerce稅金選項的「售價包含稅金」選擇含稅或未稅,決定後台輸入的價格代表的意義
「售價包含稅金」選含稅時,後台打的數字就是含稅總價,系統會自動反推出稅前金額。

WooCommerce 官方文件給的換算範例設定在英國情境,商店設定的稅率是 20%,如果選「含稅」並且希望商品最終賣£9.99,就直接在商品價格欄打£9.99,WooCommerce 會自動反推出稅前基礎價£8.325、稅額£1.665,顯示時再四捨五入成整齊的數字;如果選「未稅」但同樣想要£9.99 的總價,後台就要打£8.325,系統加 20%稅之後一樣顯示成£9.99。換算成台灣情境會更好理解:商品未稅價 1,000 元、稅率 5%,選「未稅」的話後台輸入 1000,系統自動加 5%,前台顯示 1,050 元;選「含稅」的話後台直接輸入 1050,系統會反推出稅前 1,000 元、稅額 50 元。兩種輸入方式算出來的最終售價可以一樣,差別只在後台那個數字代表的意義不同。

這個選項不是孤立存在的,它會跟另外兩個顯示設定綁在一起,分別是「商店頁顯示的價格是否含稅」與「購物車、結帳頁顯示的價格是否含稅」(這兩個設定會在後面章節詳細說明)。如果這三個地方沒有一致選「含稅」或「未稅」,計算出來的價格有時會比店面顯示的小數位還精細,可能出現非預期的四捨五入誤差。這時 WooCommerce 會直接跳出警告,告訴你這三個設定彼此衝突,並附上一個「Use recommended settings(套用建議設定)」的按鈕,一鍵就能把後兩個顯示設定對齊「Prices entered with tax」的值。看到這個警告不用緊張,它其實是 WooCommerce 在提醒你,前面提到的價格跳動問題,根源可能就出在這裡。

啟用稅金功能後,稅金選項頁的設定決定稅額計算基準

弄懂輸入方式之後,下一步是把稅金功能真正打開。啟用只是一個開關,開關打開之後,還有兩個會實際影響金額怎麼計算的設定要決定,一個是系統要用哪個地址去判斷稅率,另一個是稅額要怎麼捨入。這兩個設定對只服務台灣境內顧客的賣家影響其實不大,但知道它們在做什麼,比照抄預設值更踏實。

啟用的路徑在 WooCommerce > Settings > General,捲到頁面下方會看到「Taxes and coupons」區塊,勾選「Enable tax rates and calculations(啟用稅率與計算)」再存檔,存檔之後設定選單才會多出一個新的「Tax」分頁,之後所有跟稅金有關的設定都在這個分頁裡處理。

在WooCommerce一般設定勾選「啟用稅率及稅額計算」,設定選單才會出現稅金分頁
先在「一般」設定勾選啟用稅金並存檔,稅金分頁才會出現,之後的稅率設定都在那裡處理。

進到 Tax 分頁,第一個要決定的是「Calculate tax based on(依什麼地址計算稅率)」,有三個選項。預設是 Customer shipping address,依顧客的收件地址計算稅率;另一個是 Customer billing address,依帳單地址計算;第三個是 Shop base address,不管顧客在哪裡,一律用商店登記地址的稅率。選前兩者的話,顧客得先在購物車或結帳頁填好對應地址,WooCommerce 才能算出稅額;選 Shop base address 則不用等地址,商品一開始顯示就是稅後價格。

第二個要決定的是「Round tax at subtotal level(在小計層級捨入稅額)」,預設是關閉的,也就是每個品項各自算稅、各自四捨五入之後再加總;勾選之後,系統會改成先把所有品項的稅額加總,最後才捨入一次。這兩種算法在特定訂單組合下,金額可能會差到一塊錢以內,實務上該用哪一種,通常由所在稅務管轄區的規定決定,沒有特別規定的話用預設值就好。對只服務台灣境內顧客、用單一 5%稅率的賣家來說,這兩個設定其實不太會改變最後付款金額,唯一有感的差別是 Calculate tax based on 會決定顧客要不要先填地址才看得到含稅後的價格。

台灣賣家的標準稅率設定通常只需要填三個欄位

前面兩節決定了系統怎麼計算,稅率表本身才是實際要動手填的地方。稅率表位在 Tax 分頁底下的 Standard rates 子分頁,點「Insert row」就能新增一列。整張表看起來欄位不少,但台灣賣家真正會用到的只有三個。

完整欄位包括 Country code(兩碼國別代碼,留空代表套用所有國家)、State code、Postcode/ZIP、City、Rate %(稅率,例如 20 代表 20%)、Tax name(顯示給顧客看的稅名,例如 VAT)、Priority、Compound(是否疊加在其他稅之上)、以及 Shipping(勾選後這筆稅率也會套用到運費)。填完點「Save changes」就會存檔。

對台灣賣家而言,實際要填的只有三個地方:Country code 填 TW,Rate %填 5,Shipping 先勾起來。台灣營業稅一般稅率就是 5%,直接照填即可,這篇不打算展開稅法細節。運費最終要不要真的被課稅,還要看後面章節提到的 Shipping tax class 設定,這裡先確保稅率本身「有能力」套用到運費,兩件事要一起看才完整。至於 State code、Postcode、City,因為台灣沒有跨州跨郡的差別稅率,留空就好。Tax name 建議填「營業稅」,原因是如果之後把 Display tax totals 設成 Itemized(後面章節會說明這個設定),結帳頁會顯示這裡填的名稱,填「營業稅」讀起來才順。

在WooCommerce標準稅率表新增一列台灣營業稅:國碼TW、稅率5、勾選運送方式
台灣賣家的標準稅率通常只要填三格:國碼填TW、稅率填5、運送方式打勾,稅名建議寫營業稅。

多數台灣賣家只用標準稅率,但兩種情況要另立稅級

稅級(Tax class)跟稅率(Tax rate)是兩個不同層次的東西,前面那節填的 Standard rates,本身就是一張稅級,只是它剛好是預設、也是多數賣家唯一會用到的那張。稅級的本質是一整張獨立的稅率表,不是稅率表裡的一個欄位,搞清楚這個區別,後面關於免稅商品與海外銷售的設定才不會混淆。

多數台灣賣家只會用到 Standard rates 這一張表就夠了,但有兩種情況需要另外開一張稅級,一種是商品本身剛好落在法定免稅清單裡,另一種是要賣數位商品給海外顧客、需要套用當地稅制。這兩種情況怎麼判斷自己屬不屬於,重點各自不同。

三個內建稅級和商品免稅的設定方式

WooCommerce 內建就有三張稅級可以用,分別是 Standard rates、Reduced rate、Zero rate,每一張都是各自獨立的稅率表。Standard rates 這個名稱本身無法刪除,如果整張表留空不填任何一列,就等同於不套用任何稅率。

要把特定商品設成不課稅,WooCommerce 提供兩種做法,一種是把該商品的 Tax class 指定成 Zero rate,另一種是直接把商品的 Tax status 設成 None。哪些商品真的該免稅,依主管機關的規定為準,這篇不逐條展開稅法細節。實務上比較穩妥的做法,是只有「確定屬於免稅」的商品才設成 Zero rate 或 None,不要因為自己覺得合理就先設下去;拿不準的話,維持標準稅率、再請教自己配合的記帳或會計,是比較保險的路線。這一節談的是 WooCommerce 介面「怎麼設免稅商品」的機制,不是判斷哪些商品該免稅的稅法問題,兩者要分開看。

額外稅級的建立方式,以及賣數位商品給海外顧客的用途

如果真的需要用到 Standard rates 以外的稅級,設定的地方在 Tax 分頁裡的「Tax options」子分頁,裡面有一個「Additional tax classes(額外稅級)」欄位,每一行輸入一個稅級名稱,例如 Digital Goods,存檔之後這個名稱就會變成頁面上方一個新的分頁,裡面是一張全新的、空白的稅率表,可以照前面 Standard rates 的方式逐一填列。

一個台灣賣家真的用得到這個機制的情境,是網站除了服務台灣顧客,也賣數位商品(課程、電子書、軟體授權之類)給海外顧客。這種情況為什麼要另開一張稅級,而不是把海外稅率跟台灣的 5%混在同一張表裡,原因很簡單,不同國家的稅率天差地遠,混在一起會讓稅率表變得難以維護,也容易套錯。WooCommerce 官方針對這個情境有一份專門的文件,示範的做法是另外新增一個稅級,例如同樣命名為 Digital Goods,在該稅級底下逐一輸入歐盟各成員國的 VAT 稅率,也支援用 CSV 批次匯入;文件也提醒,這個機制要生效,Calculate tax based on 必須設為 Customer shipping address 或 Customer billing address 其中之一(而非商店登記地),系統才會依顧客所在地而非商店所在地計算稅額。

稅級開好、稅率也填好之後,還有最後一步最容易被漏掉,就是要到每個商品的編輯畫面,在 Product data > General 底下,把 Tax status(Taxable、Shipping only、None 三選一)與 Tax class(下拉選單會列出所有已建立的稅級,包含剛新增的那個)實際指定好,商品才會真的套用到對的稅率表。這一步漏掉的話,前面新開的稅級形同虛設,商品還是照原本的 Standard rates 計算。官方文件也特別提醒,Tax status 如果設成 None,不管全域的稅率、稅級怎麼設,這個商品都不會被課稅,這一點在後面驗證設定時還會再提到。

在商品編輯畫面把稅金狀態設為應課稅、稅率類別選標準,商品才會真的套用稅率
全域設定之外,別忘了到商品編輯畫面確認稅金狀態是應課稅,設成「無」的話再怎麼設都不會課稅。

運費是否課稅,由稅級設定和購物車商品共同決定

運費要不要課稅,不是一個獨立的開關可以直接勾選,而是由「Shipping tax class」這個設定,加上購物車裡實際裝了什麼稅級的商品,兩者一起決定的。這個邏輯稍微繞一點,但弄懂之後就能套用在自己商店的商品組合上。

Shipping tax class 預設值是「Shipping tax class based on cart items」,也就是運費的稅率跟著購物車裡商品的稅級走。判斷順序是這樣的,訂單裡只要有一項商品屬於 Standard rate 稅級,運費就套用 Standard rate 的稅率,就算它不是購物車裡最高的稅率也一樣;如果訂單裡完全沒有 Standard rate 商品,系統就會套用 Additional tax classes 清單中排在最前面的那個稅級稅率。所以如果賣家的商品都不是標準稅率,又希望運費套用其中最高的稅率,官方文件建議把稅率最高的那個額外稅級排在清單最上面。除了跟著購物車走,Shipping tax class 也可以直接指定成某個固定稅級,例如 Standard、Reduced rate 或 Zero rate,這樣一來不論購物車裡裝了什麼商品,運費都一律套用指定的那個稅級。

真正決定「某一筆稅率要不要套用到運費」的開關,其實是前面稅率表裡每一列的 Shipping 勾選框,這個開關獨立於 Shipping tax class 設定之外運作,兩者要一起確認才完整。如果那一列沒勾選 Shipping,就算商品本身有課稅,運費也不會被加稅。對只用一張標準稅率、沒有多個稅級互相搶運費稅率的台灣賣家來說,這一整套邏輯可以簡化成一句話,Shipping tax class 維持預設的「based on cart items」即可,只要在標準稅率那一列勾選了 Shipping(也就是前面填稅率表時提到的第三個要填的欄位),運費就會一併課 5%營業稅。

商店頁與結帳頁的價格,要顯示含稅還是未稅

前面幾節處理的是後台怎麼計算,前台顧客實際看到的數字,才是價格會不會跳動的關鍵。WooCommerce 把「商店頁顯示的價格」與「購物車、結帳頁顯示的價格」拆成兩個各自獨立的設定,分別是「Display prices in the shop(商店頁、商品頁列表)」與「Display prices during cart and checkout(購物車、結帳頁)」,兩者都可以選 Including tax(含稅)或 Excluding tax(未稅)。

把WooCommerce商店頁與結帳頁的價格顯示都設成含稅,顧客一路看到的都是含稅價
面向台灣消費者,商店頁與結帳頁都設成含稅,商店頁看到的價格就是結帳要付的價格,不會臨時變動。

這兩個設定可以設定成不一樣,例如商店頁顯示未稅價、結帳頁才顯示含稅價,這種做法常見於同時服務一般消費者與批發企業買家的商店,企業買家習慣先看未稅價再自己計算進項稅額。除了這兩個顯示開關,WooCommerce 還有一個「Price display suffix(價格顯示後綴)」欄位,可以用{price_including_tax}或{price_excluding_tax}這兩個佔位符,在價格後面加註文字,例如輸入「含稅:{price_including_tax}」,商店裡就會顯示成「含稅:$59.74」,讓價格的含稅狀態一目了然。

面向台灣一般消費者銷售的 WooCommerce 商店,比較建議的做法是把 Prices entered with tax、Display prices in the shop、Display prices during cart and checkout 這三個設定都選成「含稅」,也就是前面提到的 Yes/Including tax。這樣一來,商店頁一開始看到的價格,就是結帳最後要付的價格,不會出現顧客滑到結帳最後一步,價格才忽然跳動的狀況,呼應了本篇一開頭提到的那個謎題。如果賣家同時在做 B2B 生意,想在商店頁給企業買家看未稅價,才需要把商店頁設成未稅、結帳頁設成含稅,兩處分開處理。

結帳頁面的稅額顯示方式,加上設定完成後的驗證步驟

前面把該設定的地方都設好了,結帳頁怎麼呈現稅額,也是容易被忽略的一個環節。

「Display tax totals(稅額總計顯示方式)」決定購物車與結帳頁的稅額怎麼呈現,有兩種選項。「As a single total」會把所有適用稅率合併顯示成一行,標籤是英文預設的「Tax」;「Itemized」則會依前面稅率表裡填的 Tax name 個別列出,例如同一筆訂單同時套用兩種稅率時,各自列一行顯示名稱與金額。這也是前面建議把 Tax name 填成「營業稅」的原因,選 Itemized 的話,結帳頁看到的就會是「營業稅」而不是英文的「Tax」。要留意的是,如果想修改「Tax」這個預設英文標籤本身,而不是改個別稅率的名稱,得透過自訂翻譯字串處理,沒辦法直接在稅率表裡改掉。

把WooCommerce稅額總計顯示方式設為「每項商品」(Itemized),結帳頁就會列出稅名
稅額總計選「每項商品」(Itemized),結帳頁就會顯示稅率表裡填的稅名,例如營業稅。

現行 WooCommerce 的結帳頁面採用區塊式編輯器,也就是 Checkout block。裡面的「訂單摘要(Order Summary)」區塊負責呈現整筆訂單的內容,另外有一個獨立的「Taxes」區塊,官方說明是專門顯示購物車稅額這一行。這代表區塊式結帳頁本身不需要另外設定稅金邏輯,它顯示的就是前面幾節在 Tax 設定頁配好的結果,賣家不必因為換成區塊式結帳,就把稅金設定重新設定一次。

設定做完之後,別急著收工,花幾分鐘照下面順序驗證一次,會比事後接到顧客反映稅額算錯再回頭查更省事。第一步,確認 General 頁的 Enable tax rates and calculations 已經勾選並存檔。第二步,確認對應的稅級,例如 Standard rates,裡面至少有一列稅率,而且 Country code 等欄位真的涵蓋要測試的地址。第三步,確認要測試的商品 Tax status 是 Taxable,前面提到過,Tax status 設成 None 的話,不管全域怎麼設都不會被課稅,這是購物車沒出現稅金最常見的原因,也是最容易被忽略的一步,因為前面幾節談的都是全域設定,商品層級這個開關反而最容易漏掉。第四步,實際跑一次完整的結帳流程,換幾種不同地址測試,包含境內地址、以及商店設定範圍以外的地址,檢查購物車與結帳頁顯示的稅額是否符合預期,有沒有該課稅卻沒課到,或者不該課稅卻被課到的狀況。

前台購物車顯示預估總金額NT$760並註明包含NT$36營業稅,證明5%稅率已生效
設定完成後實際加入購物車驗證,總金額下方標明「包含NT$36營業稅」,就知道5%營業稅有正確算進去。

累積幾筆測試或實際訂單之後,還可以到 WooCommerce > Analytics > Taxes 這個稅務報表頁面,依稅碼或日期查看已收取的稅額,也能匯出 CSV,拿來核對數字是否合理,算是比實際結帳測試更後一層的確認。把這幾個環節都對齊了,商店頁看到的價格、結帳畫面顯示的價格,跟顧客最後實際付的錢,就會是同一個數字,不會再有跳動的意外。

常見問答

本區問答由 AI 依文章內容自動整理,僅供快速參考,正式內容仍以全文為準。

台灣賣家的標準稅率通常要填哪些欄位?

主要只要填三個地方:國別代碼填 TW、稅率填 5(對應台灣 5% 營業稅)、並勾選運送方式讓運費也套用這個稅率,其餘國家、州別、郵遞區號、城市欄位留空就好。

怎麼把特定商品設定成免課稅?

把該商品的稅率類別指定成 Zero rate,或直接把稅金狀態設成 None 即可免稅;哪些商品真的該免稅要依主管機關規定認定,不確定的話維持標準稅率並請教會計比較保險。

運費一定會被課到營業稅嗎?

不一定,運費課稅由 Shipping tax class 設定加上購物車裡商品的稅級共同決定;只要標準稅率那一列有勾選 Shipping,商品又是標準稅率,運費就會一併課稅,沒勾就不會加稅。

商店頁跟結帳頁能分開設含稅嗎?

可以,這兩個顯示設定各自獨立,例如商店頁顯示未稅價、結帳頁才顯示含稅價,這種做法常見於同時服務一般消費者與批發企業買家的商店,企業買家習慣先看未稅價再自行計算進項稅額。

設定完稅金後要怎麼驗證有沒有正確課稅?

先確認一般設定已勾選啟用稅率與計算並存檔,再確認稅率表裡有填對應稅率、商品的稅金狀態是應課稅,接著實際跑一次結帳流程換不同地址測試,檢查顯示的稅額是否符合預期。

資料來源
  1. Setting up Taxes in WooCommerce — WooCommerce
  2. Setting up EU VAT Rates for Digital Products — WooCommerce
  3. Block References — WooCommerce