Skip to main content

hs_predict/rules/
jp_table.rs

1//! Japan Customs 統計品目番号 (statistical item code) lookup table.
2//!
3//! Japanese tariff codes are 9-digit numbers that extend the 6-digit HS code
4//! with Japan-specific sub-classifications (e.g. `"281511000"`).
5//!
6//! Source: 実行関税率表 (Japan Customs Tariff Schedule)
7//! Valid from: **2026-04-01** (2026年4月改正)
8//! Reference: <https://www.customs.go.jp/tariff/2026_04_01/index.htm>
9//!
10//! **Note**: The tariff schedule is revised annually. Verify codes against the
11//! current schedule before using in customs declarations.
12
13/// A Japan tariff entry mapping an HS heading to a statistical item code.
14#[derive(Debug)]
15pub struct JpRule {
16    /// Six-digit HS 2022 code (e.g. `"281511"`).
17    pub hs_code: &'static str,
18
19    /// Nine-digit Japan statistical item code (e.g. `"281511000"`).
20    ///
21    /// For most basic chemicals the last three digits are `"000"`, indicating
22    /// no Japan-specific sub-classification within that HS subheading.
23    pub jp_code: &'static str,
24
25    /// Short description in Japanese.
26    pub jp_description: &'static str,
27
28    /// Applicable tariff rate (informational, e.g. `"free"` or `"6.5%"`).
29    /// `None` when the rate is complex (depends on end-use, origin, etc.).
30    pub tariff_rate: Option<&'static str>,
31}
32
33/// Tariff schedule year used for [`JP_RULES`].
34pub const JP_TARIFF_YEAR: u16 = 2026;
35
36/// Static Japan tariff code table (HS 2022 → 統計品目番号 2026).
37///
38/// Ordered by HS code for readability.
39pub static JP_RULES: &[JpRule] = &[
40    // ═══════════════════════════════════════════════
41    // Chapter 25
42    // ═══════════════════════════════════════════════
43    JpRule {
44        hs_code: "250100",
45        jp_code: "250100000",
46        jp_description: "塩化ナトリウム(食塩等)",
47        tariff_rate: Some("free"),
48    },
49
50    // ═══════════════════════════════════════════════
51    // Chapter 28 — 無機化学品
52    // ═══════════════════════════════════════════════
53    JpRule {
54        hs_code: "280110",
55        jp_code: "280110000",
56        jp_description: "塩素",
57        tariff_rate: Some("free"),
58    },
59    JpRule {
60        hs_code: "280130",
61        jp_code: "280130000",
62        jp_description: "臭素",
63        tariff_rate: Some("free"),
64    },
65    JpRule {
66        hs_code: "280610",
67        jp_code: "280610000",
68        jp_description: "塩化水素(塩酸)",
69        tariff_rate: Some("free"),
70    },
71    JpRule {
72        hs_code: "280700",
73        jp_code: "280700000",
74        jp_description: "硫酸;発煙硫酸",
75        tariff_rate: Some("free"),
76    },
77    JpRule {
78        hs_code: "280800",
79        jp_code: "280800000",
80        jp_description: "硝酸;混酸",
81        tariff_rate: Some("free"),
82    },
83    JpRule {
84        hs_code: "280810",
85        jp_code: "280810000",
86        jp_description: "発煙硝酸",
87        tariff_rate: Some("free"),
88    },
89    JpRule {
90        hs_code: "280890",
91        jp_code: "280890000",
92        jp_description: "硝酸(その他)",
93        tariff_rate: Some("free"),
94    },
95    JpRule {
96        hs_code: "280920",
97        jp_code: "280920000",
98        jp_description: "リン酸及びポリリン酸",
99        tariff_rate: Some("free"),
100    },
101    JpRule {
102        hs_code: "281000",
103        jp_code: "281000000",
104        jp_description: "ホウ素の酸化物;ホウ酸",
105        tariff_rate: Some("free"),
106    },
107    JpRule {
108        hs_code: "281111",
109        jp_code: "281111000",
110        jp_description: "フッ化水素(フッ酸)",
111        tariff_rate: Some("free"),
112    },
113    JpRule {
114        hs_code: "281122",
115        jp_code: "281122000",
116        jp_description: "二酸化ケイ素(合成)",
117        tariff_rate: Some("free"),
118    },
119    JpRule {
120        hs_code: "281400",
121        jp_code: "281400000",
122        jp_description: "アンモニア(無水又は水溶液)",
123        tariff_rate: Some("free"),
124    },
125    JpRule {
126        hs_code: "281410",
127        jp_code: "281410000",
128        jp_description: "アンモニア(無水)",
129        tariff_rate: Some("free"),
130    },
131    JpRule {
132        hs_code: "281420",
133        jp_code: "281420000",
134        jp_description: "アンモニア水",
135        tariff_rate: Some("free"),
136    },
137    JpRule {
138        hs_code: "281511",
139        jp_code: "281511000",
140        jp_description: "水酸化ナトリウム(固体)",
141        tariff_rate: Some("free"),
142    },
143    JpRule {
144        hs_code: "281512",
145        jp_code: "281512000",
146        jp_description: "水酸化ナトリウム水溶液(苛性ソーダ液)",
147        tariff_rate: Some("free"),
148    },
149    JpRule {
150        hs_code: "281520",
151        jp_code: "281520000",
152        jp_description: "水酸化カリウム(苛性カリ)",
153        tariff_rate: Some("free"),
154    },
155    JpRule {
156        hs_code: "281600",
157        jp_code: "281600000",
158        jp_description: "酸化亜鉛;過酸化亜鉛",
159        tariff_rate: Some("free"),
160    },
161    JpRule {
162        hs_code: "281700",
163        jp_code: "281700000",
164        jp_description: "酸化亜鉛;過酸化亜鉛",
165        tariff_rate: Some("free"),
166    },
167    JpRule {
168        hs_code: "281820",
169        jp_code: "281820000",
170        jp_description: "酸化アルミニウム(人造コランダム以外)",
171        tariff_rate: Some("free"),
172    },
173    JpRule {
174        hs_code: "281910",
175        jp_code: "281910000",
176        jp_description: "三酸化クロム",
177        tariff_rate: Some("free"),
178    },
179    JpRule {
180        hs_code: "282010",
181        jp_code: "282010000",
182        jp_description: "二酸化マンガン",
183        tariff_rate: Some("free"),
184    },
185    JpRule {
186        hs_code: "282110",
187        jp_code: "282110000",
188        jp_description: "鉄の酸化物及び水酸化物",
189        tariff_rate: Some("free"),
190    },
191    JpRule {
192        hs_code: "282200",
193        jp_code: "282200000",
194        jp_description: "鉄のコバルト酸化物;コバルト酸化物",
195        tariff_rate: Some("free"),
196    },
197    JpRule {
198        hs_code: "282300",
199        jp_code: "282300000",
200        jp_description: "チタンの酸化物",
201        tariff_rate: Some("free"),
202    },
203    JpRule {
204        hs_code: "282520",
205        jp_code: "282520000",
206        jp_description: "水酸化カルシウム",
207        tariff_rate: Some("free"),
208    },
209    JpRule {
210        hs_code: "282720",
211        jp_code: "282720000",
212        jp_description: "塩化カルシウム",
213        tariff_rate: Some("free"),
214    },
215    JpRule {
216        hs_code: "282739",
217        jp_code: "282739000",
218        jp_description: "その他の金属の塩化物(塩化第二鉄等)",
219        tariff_rate: Some("free"),
220    },
221    JpRule {
222        hs_code: "282741",
223        jp_code: "282741000",
224        jp_description: "塩化亜鉛",
225        tariff_rate: Some("free"),
226    },
227    JpRule {
228        hs_code: "282810",
229        jp_code: "282810000",
230        jp_description: "次亜塩素酸ナトリウム",
231        tariff_rate: Some("free"),
232    },
233    JpRule {
234        hs_code: "283010",
235        jp_code: "283010000",
236        jp_description: "硫化ナトリウム",
237        tariff_rate: Some("free"),
238    },
239    JpRule {
240        hs_code: "283110",
241        jp_code: "283110000",
242        jp_description: "塩化カリウム",
243        tariff_rate: Some("free"),
244    },
245    JpRule {
246        hs_code: "283311",
247        jp_code: "283311000",
248        jp_description: "硫酸二ナトリウム",
249        tariff_rate: Some("free"),
250    },
251    JpRule {
252        hs_code: "283322",
253        jp_code: "283322000",
254        jp_description: "硫酸アルミニウム",
255        tariff_rate: Some("free"),
256    },
257    JpRule {
258        hs_code: "283325",
259        jp_code: "283325000",
260        jp_description: "硫酸銅",
261        tariff_rate: Some("free"),
262    },
263    JpRule {
264        hs_code: "283329",
265        jp_code: "283329000",
266        jp_description: "その他の硫酸塩(硫酸亜鉛等)",
267        tariff_rate: Some("free"),
268    },
269    JpRule {
270        hs_code: "283410",
271        jp_code: "283410000",
272        jp_description: "硝酸カリウム",
273        tariff_rate: Some("free"),
274    },
275    JpRule {
276        hs_code: "283421",
277        jp_code: "283421000",
278        jp_description: "硝酸ナトリウム",
279        tariff_rate: Some("free"),
280    },
281    JpRule {
282        hs_code: "283530",
283        jp_code: "283530000",
284        jp_description: "リン酸ナトリウム(三リン酸ナトリウム等)",
285        tariff_rate: Some("free"),
286    },
287    JpRule {
288        hs_code: "283531",
289        jp_code: "283531000",
290        jp_description: "三リン酸ナトリウム(トリポリリン酸ナトリウム)",
291        tariff_rate: Some("free"),
292    },
293    JpRule {
294        hs_code: "283620",
295        jp_code: "283620000",
296        jp_description: "炭酸ナトリウム",
297        tariff_rate: Some("free"),
298    },
299    JpRule {
300        hs_code: "283630",
301        jp_code: "283630000",
302        jp_description: "炭酸水素ナトリウム",
303        tariff_rate: Some("free"),
304    },
305    JpRule {
306        hs_code: "283640",
307        jp_code: "283640000",
308        jp_description: "炭酸カリウム",
309        tariff_rate: Some("free"),
310    },
311    JpRule {
312        hs_code: "283650",
313        jp_code: "283650000",
314        jp_description: "炭酸カルシウム",
315        tariff_rate: Some("free"),
316    },
317    JpRule {
318        hs_code: "283911",
319        jp_code: "283911000",
320        jp_description: "ケイ酸ナトリウム(メタケイ酸ナトリウム等)",
321        tariff_rate: Some("free"),
322    },
323    JpRule {
324        hs_code: "284130",
325        jp_code: "284130000",
326        jp_description: "過マンガン酸カリウム",
327        tariff_rate: Some("free"),
328    },
329    JpRule {
330        hs_code: "284321",
331        jp_code: "284321000",
332        jp_description: "硝酸銀",
333        tariff_rate: Some("free"),
334    },
335    JpRule {
336        hs_code: "284700",
337        jp_code: "284700000",
338        jp_description: "過酸化水素",
339        tariff_rate: Some("free"),
340    },
341
342    // ═══════════════════════════════════════════════
343    // Chapter 29 — 有機化学品
344    // ═══════════════════════════════════════════════
345    JpRule {
346        hs_code: "290110",
347        jp_code: "290110000",
348        jp_description: "飽和非環式炭化水素(ヘキサン等)",
349        tariff_rate: Some("free"),
350    },
351    JpRule {
352        hs_code: "290211",
353        jp_code: "290211000",
354        jp_description: "シクロヘキサン",
355        tariff_rate: Some("free"),
356    },
357    JpRule {
358        hs_code: "290220",
359        jp_code: "290220000",
360        jp_description: "ベンゼン",
361        tariff_rate: Some("free"),
362    },
363    JpRule {
364        hs_code: "290230",
365        jp_code: "290230000",
366        jp_description: "トルエン",
367        tariff_rate: Some("free"),
368    },
369    JpRule {
370        hs_code: "290244",
371        jp_code: "290244000",
372        jp_description: "混合キシレン異性体",
373        tariff_rate: Some("free"),
374    },
375    JpRule {
376        hs_code: "290312",
377        jp_code: "290312000",
378        jp_description: "ジクロロメタン(塩化メチレン)",
379        tariff_rate: Some("free"),
380    },
381    JpRule {
382        hs_code: "290313",
383        jp_code: "290313000",
384        jp_description: "クロロホルム(トリクロロメタン)",
385        tariff_rate: Some("free"),
386    },
387    JpRule {
388        hs_code: "290314",
389        jp_code: "290314000",
390        jp_description: "四塩化炭素",
391        tariff_rate: Some("free"),
392    },
393    JpRule {
394        hs_code: "290511",
395        jp_code: "290511000",
396        jp_description: "メタノール(メチルアルコール)",
397        tariff_rate: Some("free"),
398    },
399    JpRule {
400        hs_code: "290512",
401        jp_code: "290512000",
402        jp_description: "プロパン-1-オール(プロピルアルコール)",
403        tariff_rate: Some("free"),
404    },
405    JpRule {
406        hs_code: "290513",
407        jp_code: "290513000",
408        jp_description: "ブタン-1-オール(n-ブチルアルコール)",
409        tariff_rate: Some("free"),
410    },
411    JpRule {
412        hs_code: "290531",
413        jp_code: "290531000",
414        jp_description: "エチレングリコール(エタンジオール)",
415        tariff_rate: Some("free"),
416    },
417    JpRule {
418        hs_code: "290532",
419        jp_code: "290532000",
420        jp_description: "プロピレングリコール(1,2-プロパンジオール)",
421        tariff_rate: Some("free"),
422    },
423    JpRule {
424        hs_code: "290911",
425        jp_code: "290911000",
426        jp_description: "ジエチルエーテル",
427        tariff_rate: Some("free"),
428    },
429    JpRule {
430        hs_code: "291010",
431        jp_code: "291010000",
432        jp_description: "エチレンオキサイド(酸化エチレン)",
433        tariff_rate: Some("free"),
434    },
435    JpRule {
436        hs_code: "291211",
437        jp_code: "291211000",
438        jp_description: "ホルムアルデヒド(ホルマリン)",
439        tariff_rate: Some("free"),
440    },
441    JpRule {
442        hs_code: "291411",
443        jp_code: "291411000",
444        jp_description: "アセトン",
445        tariff_rate: Some("free"),
446    },
447    JpRule {
448        hs_code: "291511",
449        jp_code: "291511000",
450        jp_description: "ギ酸",
451        tariff_rate: Some("free"),
452    },
453    JpRule {
454        hs_code: "291521",
455        jp_code: "291521000",
456        jp_description: "酢酸",
457        tariff_rate: Some("free"),
458    },
459    JpRule {
460        hs_code: "291523",
461        jp_code: "291523000",
462        jp_description: "酢酸エチル",
463        tariff_rate: Some("free"),
464    },
465    JpRule {
466        hs_code: "291529",
467        jp_code: "291529000",
468        jp_description: "酢酸塩(酢酸ナトリウム等)",
469        tariff_rate: Some("free"),
470    },
471    JpRule {
472        hs_code: "291631",
473        jp_code: "291631000",
474        jp_description: "安息香酸、その塩及びエステル",
475        tariff_rate: Some("free"),
476    },
477    JpRule {
478        hs_code: "291711",
479        jp_code: "291711000",
480        jp_description: "シュウ酸、その塩及びエステル",
481        tariff_rate: Some("free"),
482    },
483    JpRule {
484        hs_code: "291735",
485        jp_code: "291735000",
486        jp_description: "無水フタル酸",
487        tariff_rate: Some("free"),
488    },
489    JpRule {
490        hs_code: "291811",
491        jp_code: "291811000",
492        jp_description: "乳酸、その塩及びエステル",
493        tariff_rate: Some("free"),
494    },
495    JpRule {
496        hs_code: "291814",
497        jp_code: "291814000",
498        jp_description: "クエン酸",
499        tariff_rate: Some("free"),
500    },
501    JpRule {
502        hs_code: "292141",
503        jp_code: "292141000",
504        jp_description: "アニリン",
505        tariff_rate: Some("free"),
506    },
507    JpRule {
508        hs_code: "292419",
509        jp_code: "292419000",
510        jp_description: "その他の非環式アミド(DMF等)",
511        tariff_rate: Some("free"),
512    },
513    JpRule {
514        hs_code: "290711",
515        jp_code: "290711000",
516        jp_description: "フェノール",
517        tariff_rate: Some("free"),
518    },
519    JpRule {
520        hs_code: "293090",
521        jp_code: "293090000",
522        jp_description: "その他の有機硫黄化合物(DMSO等)",
523        tariff_rate: Some("free"),
524    },
525
526    // ═══════════════════════════════════════════════
527    // Chapter 31 — 肥料
528    // ═══════════════════════════════════════════════
529    JpRule {
530        hs_code: "310210",
531        jp_code: "310210000",
532        jp_description: "尿素",
533        tariff_rate: Some("free"),
534    },
535    JpRule {
536        hs_code: "310230",
537        jp_code: "310230000",
538        jp_description: "硝酸アンモニウム",
539        tariff_rate: Some("free"),
540    },
541
542    // ═══════════════════════════════════════════════
543    // Chapter 72–81 — 金属
544    // ═══════════════════════════════════════════════
545    JpRule {
546        hs_code: "720310",
547        jp_code: "720310000",
548        jp_description: "直接還元鉄鉱石で得た鉄製品",
549        tariff_rate: Some("free"),
550    },
551    JpRule {
552        hs_code: "740311",
553        jp_code: "740311000",
554        jp_description: "精製銅(カソード等)",
555        tariff_rate: Some("free"),
556    },
557    JpRule {
558        hs_code: "750110",
559        jp_code: "750110000",
560        jp_description: "ニッケル(未加工、合金でないもの)",
561        tariff_rate: Some("free"),
562    },
563    JpRule {
564        hs_code: "760110",
565        jp_code: "760110000",
566        jp_description: "アルミニウム(未加工、合金でないもの)",
567        tariff_rate: Some("free"),
568    },
569    JpRule {
570        hs_code: "760310",
571        jp_code: "760310000",
572        jp_description: "アルミニウム粉末(非板状構造)",
573        tariff_rate: Some("free"),
574    },
575    JpRule {
576        hs_code: "760711",
577        jp_code: "760711000",
578        jp_description: "アルミニウム箔(裏打ちなし)",
579        tariff_rate: Some("free"),
580    },
581    JpRule {
582        hs_code: "780110",
583        jp_code: "780110000",
584        jp_description: "精製鉛(未加工)",
585        tariff_rate: Some("free"),
586    },
587    JpRule {
588        hs_code: "790111",
589        jp_code: "790111000",
590        jp_description: "亜鉛(未加工、純度≥99.99%)",
591        tariff_rate: Some("free"),
592    },
593    JpRule {
594        hs_code: "800110",
595        jp_code: "800110000",
596        jp_description: "スズ(未加工、合金でないもの)",
597        tariff_rate: Some("free"),
598    },
599
600    // ═══════════════════════════════════════════════
601    // Chapter 71 — 貴金属
602    // ═══════════════════════════════════════════════
603    JpRule {
604        hs_code: "710691",
605        jp_code: "710691000",
606        jp_description: "銀(未加工)",
607        tariff_rate: Some("free"),
608    },
609    JpRule {
610        hs_code: "710812",
611        jp_code: "710812000",
612        jp_description: "金(非貨幣用、未加工)",
613        tariff_rate: Some("free"),
614    },
615
616    // ═══════════════════════════════════════════════
617    // Chapter 22
618    // ═══════════════════════════════════════════════
619    JpRule {
620        hs_code: "220710",
621        jp_code: "220710000",
622        jp_description: "変性していないエチルアルコール(アルコール分≥80%)",
623        tariff_rate: None, // complex rate
624    },
625];
626
627/// Look up the Japan tariff code for a 6-digit HS code.
628///
629/// Returns `None` if no Japan-specific entry is registered for this code.
630pub fn find_jp_rule(hs_code: &str) -> Option<&'static JpRule> {
631    JP_RULES.iter().find(|r| r.hs_code == hs_code)
632}
633
634#[cfg(test)]
635mod tests {
636    use super::*;
637
638    #[test]
639    fn naoh_solid_has_jp_code() {
640        let rule = find_jp_rule("281511").unwrap();
641        assert_eq!(rule.jp_code, "281511000");
642        assert_eq!(rule.tariff_rate, Some("free"));
643    }
644
645    #[test]
646    fn acetone_has_jp_code() {
647        let rule = find_jp_rule("291411").unwrap();
648        assert_eq!(rule.jp_code, "291411000");
649    }
650
651    #[test]
652    fn unknown_hs_returns_none() {
653        assert!(find_jp_rule("999999").is_none());
654    }
655
656    #[test]
657    fn tariff_year_is_2026() {
658        assert_eq!(JP_TARIFF_YEAR, 2026);
659    }
660}