進項憑證檢核規則
最後更新:2026-11-04
程式:
PCE_LIB_AP_Validate.js 的 validateRecord 適用:交易子列表存檔、PCE 進項資料存檔、進項 CSV、AP Write。畫面、CSV、API 用同一套規則。
HTML:HTML 版 · English
PDF:PDF(含索引)
沒通過會擋下存檔或寫入。差額在容許範圍內的稅額只回警告,仍可存檔。API 成功時警告在 warnings。
格式 21/25 要先用 invCatCode 或 docFormatName 對到其中一筆格式主檔。對不到是 lookup 錯誤,不是下面這些欄位規則。
下列欄位不在這套檢核:總計、申報營業稅、已申報、來源交易、clientRef。
1. 憑證格式
| 代碼 | 名稱 |
|---|---|
| 21 | 三聯式統一發票(invCatCode 01)/電子計算機統一發票(05) |
| 22 | 二聯式收銀機統一發票、載有稅額之其他憑證 |
| 23 | 三聯式/電子計算機/三聯式收銀機之進貨退出或折讓證明單(逐筆) |
| 24 | 二聯式收銀機及載有稅額之其他憑證之進貨退出或折讓證明單(逐筆) |
| 25 | 進項三聯式收銀機(06)/一般稅額計算之電子發票(07) |
| 26 | 彙總登錄每張稅額 500 元以下之進項三聯式、電子計算機統一發票 |
| 27 | 彙總登錄每張稅額 500 元以下之進項二聯式收銀機、載有稅額之其他憑證 |
| 28 | 進項海關代徵營業稅繳納證 |
| 29 | 進項海關退還溢繳營業稅申報單 |
憑證格式代碼必填。沒選就停,不再檢其他欄。代碼 DocTypeRequired。
2. 每次都檢的共通欄位
| 欄位 | 規則 | 代碼 |
|---|---|---|
| 憑證開立日期 | 必填 | DocDateRequired |
| 資料所屬年月 | 必填。空白時改用憑證開立日期換算。須為民國五碼 YYYMM(年三位+月二位,月 01~12,例如 11508) | DocPeriodRequired、DocPeriodFormat |
| 申報期別 | 必填,不會自動補。格式同資料所屬年月 | FilingPeriodRequired、FilingPeriodFormat |
| 買受人統一編號 | 必填、8 碼、檢查碼須正確 | BuyerTaxIdRequired、BuyerTaxIdLengthNotValid、BuyerTaxIdNotValid |
| 課稅別 | 必填,只允許 1 應稅、2 零稅率、3 免稅 | TaxTypeRequired、TaxTypeInvalid |
| 進項扣抵代號 | 必填。應稅可為 1~4;零稅率或免稅只能 3 或 4 | DeductionCodeRequired、DeductionCodeInvalid |
扣抵代號:1 進項可扣抵之進貨及費用、2 進項可扣抵之固定資產、3 進項不可扣抵之進貨及費用、4 進項不可扣抵之固定資產。
課稅別主檔若還有 F(作廢)、D(空白未使用),這套檢核仍只接受 1、2、3。
3. 號碼欄:依格式必填、擇一或禁填
同一列只能走一條號碼路徑。兩個都填,或該填的都沒填,會擋下。
| 格式 | 發票號碼 | 其他憑證號碼 | 公用事業載具流水號 | 海關代徵營業稅繳納認證碼 |
|---|---|---|---|---|
| 21 | 必填 | 禁填 | 禁填 | 禁填 |
| 22,未勾彙加 | 與其他憑證擇一 | 與發票號碼擇一 | 禁填 | 禁填 |
| 22,彙加(A) | 禁填 | 必填 | 禁填 | 禁填 |
| 23 | 必填 | 禁填 | 禁填 | 禁填 |
| 24 | 與其他憑證擇一 | 與發票號碼擇一 | 禁填 | 禁填 |
| 25 | 與載具流水號擇一 | 禁填 | 與發票號碼擇一 | 禁填 |
| 26 | 必填 | 禁填 | 禁填 | 禁填 |
| 27 | 與其他憑證擇一 | 與發票號碼擇一 | 禁填 | 禁填 |
| 28、29 | 禁填 | 禁填 | 禁填 | 必填 |
擇一失敗的代碼:發票與其他憑證是 GuiNumberCommonNumberConflict;格式 25 發票與載具是 GuiNumberUtilityConflict。禁填的代碼:GuiNumberMustNotHave、CommonNumberMustNotHave、UtilityCarrierMustNotHave、CustomsAuthCodeMustNotHave。格式 22 彙加卻填了發票號碼:GuiNumberMustNotHaveOnSummary。格式 22 彙加卻沒填其他憑證:SummaryMarkRequiresOtherDoc。
3.1 發票號碼格式、字軌、重複
有填發票號碼時:
- 須為 1~2 位大寫英文+ 8 位數字。0 位英文或小寫會擋下。代碼
GuiFormatError、GuiTrackRequired。 - 字軌須在財政部字軌表。期別優先用憑證開立日期換算的雙月期(單月進到下一個雙月,例如 11507 與 11508 都屬 11508);沒有日期才用資料所屬年月。格式 23 比對 21 與 25 的字軌;格式 24 比對 22 的字軌;其餘比對自己的格式代碼。代碼
GuiTrackPeriodRequired、GuiTrackDocTypeRequired、GuiTrackNotAllowed。 - 同一筆憑證格式主檔(下拉選到的那一列)不可重複。格式 21 的三聯式與電子計算機是兩筆主檔,互不列入對方的重複檢查。比對範圍:未停用的 PCE 進項資料(編輯時排除自己);帳上若有 API進項資料,再加待審與轉入失敗,不含退回與已轉入。同一支 API 或同一份 CSV 裡,後面的列也會把前面已通過檢核的號碼當成重複。格式 23、24 不查重複。 代碼
GuiNumberDuplicated。
3.2 其他憑證號碼
格式 22、24、27 走其他憑證時,號碼不可長得像發票字軌(前段英文、後段 8 碼數字)。代碼 CommonNumberSimilarToGuiNumber。
3.3 公用事業載具流水號
僅格式 25,且選擇載具路徑時:
- 長度 10 碼。代碼
UtilityCarrierLength。 - 須以
BB開頭(比對前轉成大寫)。代碼UtilityCarrierPrefix。 - 不可與既有進項資料重複(編輯時排除自己)。代碼
UtilityCarrierDuplicated。
3.4 海關代徵營業稅繳納認證碼
僅格式 28、29:
- 必填,長度 14。代碼
CustomsAuthCodeRequired、CustomsAuthCodeLength。 - 第 1 位不得空白。代碼
CustomsAuthCodePos1。 - 第 3 位不得為字元
1。代碼CustomsAuthCodePos3。
4. 銷售人統編
| 情況 | 規則 |
|---|---|
| 格式 28、29 | 禁填。代碼 SellerTaxIdMustNotHave |
| 彙加註記為 A(含格式 26、27,這兩種必須是 A) | 禁填。代碼 SellerTaxIdMustNotHave |
| 格式 21、23、25,且不是彙加 A | 必填 |
| 格式 22、24,且填了發票號碼 | 必填 |
| 格式 24,且填了其他憑證號碼 | 必填 |
| 其餘有填統編時 | 不強制,但有填就要合法 |
必填卻空白:SellerTaxIdRequired。有填時須 8 碼且檢查碼正確:SellerTaxIdLengthError、SellerTaxIdValueError。
格式 22 走其他憑證、且未勾彙加時,銷售人統編可以空白。
5. 銷售金額
去掉小數點後超過 12 個字元就擋下(含負號)。代碼 SalesAmtLengthError。
| 情況 | 規則 | 代碼 |
|---|---|---|
| 格式 28、29 | 必填。此欄是營業稅稅基 | TaxBaseRequired |
| 格式 29 | 須約等於稅額 ÷ 5%(四捨五入),差額不可大於 1 元 | TaxBaseNotMatchTaxAmt |
| 課稅別 1,且不是 28、29 | 須大於 0 | SalesAmtShouldBeGreaterThanZero |
格式 28、29 不套用「應稅須大於 0」。零稅率、免稅沒有「須大於 0」。
6. 稅額
課稅別 2 或 3:稅額必須為 0。代碼 TaxAmtShouldBeZero。
課稅別不是 1、2、3 時,稅額公式先不跑(課稅別本身會先被擋下)。
格式 22、24、27 或格式 25 的號碼欄還沒擇一,或兩個都填時,先不檢稅額,避免和「擇一」重複報錯。
號碼路徑已確定,且課稅別為應稅時:
| 情況 | 規則 |
|---|---|
| 22、27,且填了發票號碼 | 稅額必須為 0(銷售金額已含稅)。代碼 TaxAmtShouldBeZero |
| 22、27,且填了其他憑證 | 稅額 0 視為含稅,通過。稅額不是 0 時,須等於銷售金額 × 5%(四捨五入) |
| 21、23、24、25 | 稅額須等於銷售金額 × 5%(四捨五入)。格式 24 沒有「稅額 0 代表含稅」 |
| 26、28、29 | 不套用 × 5% |
× 5% 的差額:0 元通過;1~5 元只警告,仍可存檔;大於 5 元擋下。一般路徑代碼 TaxAmtNotEqual(警告 TaxAmtToleranceWarning)。格式 22/27 的其他憑證路徑代碼 TaxAmtOtherDocInvalid(警告 TaxAmtOtherDocToleranceWarning)。
6.1 彙加平均每張稅額
格式 26、27,且課稅別為應稅、彙總張數大於 0 時,平均每張稅額不得大於 500 元。代碼 SummaryTaxPerDocExceed。
- 格式 26:用畫面上的稅額 ÷ 彙總張數。
- 格式 27 且稅額為 0(含稅):先把含稅銷售額還原成隱含稅額(銷售金額 × 5% ÷ 1.05,四捨五入),再除以張數。
- 格式 27 且稅額不是 0:用畫面上的稅額 ÷ 張數。
7. 課稅別與格式
| 格式 | 允許的課稅別 | 代碼 |
|---|---|---|
| 28 | 只允許應稅(1)或免稅(3),不可零稅率 | TaxTypeNotAllowed |
| 29 | 只允許應稅(1) | TaxTypeNotAllowed |
| 其餘 | 1、2、3 | TaxTypeInvalid |
8. 彙加註記與彙總張數
彙加註記:A 彙加、B 分攤。
| 規則 | 代碼 |
|---|---|
| 格式 26、27 必須為彙加(A) | SummaryMarkMustBeA |
| 格式 22 不可勾分攤(B) | SummaryMarkShareNotAllowed |
| 分攤(B)不可填彙總張數(含格式 25) | ShareMarkNoSummaryQty |
| 格式 26、27,或格式 22/25 勾了彙加(A)時,彙總張數須為數字且大於 1 | SummaryQtyInvalid |
9. 開立年月與申報期別
兩邊都是有效 YYYMM 之後:
| 格式 | 規則 | 代碼 |
|---|---|---|
| 23、24、29 | 開立年月與申報期別須屬同一雙月期。單月會進到下一個雙月,例如 11507 與 11508 都屬 11508 | DocPeriodMustEqualFiling |
| 21、22、25、26、27、28 | 開立年月不可大於申報期別 | DocPeriodAfterFiling |
| 21、22、25、26、27、28 | 開立年月距申報期別不可超過 120 個月(10 年)。剛好 120 個月可以 | DeductionPeriodExceed10Years |
格式 23、24、29 不另跑 10 年檢核;它們已限制在同一雙月期。
10. 錯誤代碼對照
| 代碼 | 說明 |
|---|---|
DocTypeRequired | 憑證格式代碼必填 |
DocDateRequired | 憑證開立日期必填 |
DocPeriodRequired | 資料所屬年月必填 |
DocPeriodFormat | 資料所屬年月不是民國五碼 |
FilingPeriodRequired | 申報期別必填 |
FilingPeriodFormat | 申報期別不是民國五碼 |
DocPeriodMustEqualFiling | 23/24/29 不是同一雙月期 |
DocPeriodAfterFiling | 開立年月大於申報期別 |
DeductionPeriodExceed10Years | 扣抵超過 10 年 |
BuyerTaxIdRequired | 買受人統編必填 |
BuyerTaxIdLengthNotValid | 買受人統編不是 8 碼 |
BuyerTaxIdNotValid | 買受人統編檢查碼錯誤 |
SellerTaxIdRequired | 銷售人統編必填 |
SellerTaxIdLengthError | 銷售人統編不是 8 碼 |
SellerTaxIdValueError | 銷售人統編檢查碼錯誤 |
SellerTaxIdMustNotHave | 此情況不可填銷售人統編 |
GuiNumberRequired | 發票號碼必填 |
GuiFormatError | 發票號碼格式錯誤 |
GuiTrackRequired | 發票號碼缺少字軌 |
GuiTrackPeriodRequired | 無法判定字軌期別 |
GuiTrackDocTypeRequired | 無法判定憑證格式 |
GuiTrackNotAllowed | 字軌不在財政部字軌表 |
GuiNumberDuplicated | 發票號碼重複 |
GuiNumberMustNotHave | 此格式不可填發票號碼 |
GuiNumberMustNotHaveOnSummary | 格式 22 彙加不可填發票號碼 |
GuiNumberCommonNumberConflict | 發票號碼與其他憑證須擇一 |
GuiNumberUtilityConflict | 格式 25 發票號碼與載具須擇一 |
CommonNumberMustNotHave | 此格式不可填其他憑證號碼 |
CommonNumberSimilarToGuiNumber | 其他憑證號碼不可像發票字軌 |
SummaryMarkRequiresOtherDoc | 格式 22 彙加時其他憑證必填 |
UtilityCarrierMustNotHave | 此格式不可填載具流水號 |
UtilityCarrierLength | 載具流水號不是 10 碼 |
UtilityCarrierPrefix | 載具流水號不是 BB 開頭 |
UtilityCarrierDuplicated | 載具流水號重複 |
CustomsAuthCodeMustNotHave | 此格式不可填海關認證碼 |
CustomsAuthCodeRequired | 海關認證碼必填 |
CustomsAuthCodeLength | 海關認證碼不是 14 碼 |
CustomsAuthCodePos1 | 海關認證碼第 1 位空白 |
CustomsAuthCodePos3 | 海關認證碼第 3 位為 1 |
SalesAmtLengthError | 銷售金額過長 |
SalesAmtShouldBeGreaterThanZero | 應稅時銷售金額須大於 0 |
TaxBaseRequired | 格式 28/29 稅基必填 |
TaxBaseNotMatchTaxAmt | 格式 29 稅基與稅額不符 |
TaxAmtShouldBeZero | 稅額須為 0 |
TaxAmtNotEqual | 稅額與銷售金額 × 5% 差額大於 5 |
TaxAmtToleranceWarning | 稅額差額 1~5 元(警告) |
TaxAmtOtherDocInvalid | 其他憑證稅額不合理 |
TaxAmtOtherDocToleranceWarning | 其他憑證稅額差額 1~5 元(警告) |
SummaryTaxPerDocExceed | 平均每張稅額大於 500 |
TaxTypeRequired | 課稅別必填 |
TaxTypeInvalid | 課稅別不是 1、2、3 |
TaxTypeNotAllowed | 格式 28/29 的課稅別不允許 |
DeductionCodeRequired | 扣抵代號必填 |
DeductionCodeInvalid | 扣抵代號與課稅別不相容 |
SummaryMarkMustBeA | 格式 26/27 須為彙加 |
SummaryMarkShareNotAllowed | 格式 22 不可分攤 |
ShareMarkNoSummaryQty | 分攤不可填彙總張數 |
SummaryQtyInvalid | 彙總張數須大於 1 |