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: "284150",
331        jp_code: "284150000",
332        jp_description: "その他のクロム酸塩及び重クロム酸塩(重クロム酸カリウム等)",
333        tariff_rate: Some("free"),
334    },
335    JpRule {
336        hs_code: "284161",
337        jp_code: "284161000",
338        jp_description: "過マンガン酸カリウム",
339        tariff_rate: Some("free"),
340    },
341    JpRule {
342        hs_code: "284321",
343        jp_code: "284321000",
344        jp_description: "硝酸銀",
345        tariff_rate: Some("free"),
346    },
347    JpRule {
348        hs_code: "284700",
349        jp_code: "284700000",
350        jp_description: "過酸化水素",
351        tariff_rate: Some("free"),
352    },
353
354    // ═══════════════════════════════════════════════
355    // Chapter 29 — 有機化学品
356    // ═══════════════════════════════════════════════
357    JpRule {
358        hs_code: "290110",
359        jp_code: "290110000",
360        jp_description: "飽和非環式炭化水素(ヘキサン等)",
361        tariff_rate: Some("free"),
362    },
363    JpRule {
364        hs_code: "290211",
365        jp_code: "290211000",
366        jp_description: "シクロヘキサン",
367        tariff_rate: Some("free"),
368    },
369    JpRule {
370        hs_code: "290220",
371        jp_code: "290220000",
372        jp_description: "ベンゼン",
373        tariff_rate: Some("free"),
374    },
375    JpRule {
376        hs_code: "290230",
377        jp_code: "290230000",
378        jp_description: "トルエン",
379        tariff_rate: Some("free"),
380    },
381    JpRule {
382        hs_code: "290244",
383        jp_code: "290244000",
384        jp_description: "混合キシレン異性体",
385        tariff_rate: Some("free"),
386    },
387    JpRule {
388        hs_code: "290312",
389        jp_code: "290312000",
390        jp_description: "ジクロロメタン(塩化メチレン)",
391        tariff_rate: Some("free"),
392    },
393    JpRule {
394        hs_code: "290313",
395        jp_code: "290313000",
396        jp_description: "クロロホルム(トリクロロメタン)",
397        tariff_rate: Some("free"),
398    },
399    JpRule {
400        hs_code: "290314",
401        jp_code: "290314000",
402        jp_description: "四塩化炭素",
403        tariff_rate: Some("free"),
404    },
405    JpRule {
406        hs_code: "290511",
407        jp_code: "290511000",
408        jp_description: "メタノール(メチルアルコール)",
409        tariff_rate: Some("free"),
410    },
411    JpRule {
412        hs_code: "290512",
413        jp_code: "290512000",
414        jp_description: "プロパン-1-オール(プロピルアルコール)",
415        tariff_rate: Some("free"),
416    },
417    JpRule {
418        hs_code: "290513",
419        jp_code: "290513000",
420        jp_description: "ブタン-1-オール(n-ブチルアルコール)",
421        tariff_rate: Some("free"),
422    },
423    JpRule {
424        hs_code: "290531",
425        jp_code: "290531000",
426        jp_description: "エチレングリコール(エタンジオール)",
427        tariff_rate: Some("free"),
428    },
429    JpRule {
430        hs_code: "290532",
431        jp_code: "290532000",
432        jp_description: "プロピレングリコール(1,2-プロパンジオール)",
433        tariff_rate: Some("free"),
434    },
435    JpRule {
436        hs_code: "290911",
437        jp_code: "290911000",
438        jp_description: "ジエチルエーテル",
439        tariff_rate: Some("free"),
440    },
441    JpRule {
442        hs_code: "291010",
443        jp_code: "291010000",
444        jp_description: "エチレンオキサイド(酸化エチレン)",
445        tariff_rate: Some("free"),
446    },
447    JpRule {
448        hs_code: "291211",
449        jp_code: "291211000",
450        jp_description: "ホルムアルデヒド(ホルマリン)",
451        tariff_rate: Some("free"),
452    },
453    JpRule {
454        hs_code: "291411",
455        jp_code: "291411000",
456        jp_description: "アセトン",
457        tariff_rate: Some("free"),
458    },
459    JpRule {
460        hs_code: "291511",
461        jp_code: "291511000",
462        jp_description: "ギ酸",
463        tariff_rate: Some("free"),
464    },
465    JpRule {
466        hs_code: "291521",
467        jp_code: "291521000",
468        jp_description: "酢酸",
469        tariff_rate: Some("free"),
470    },
471    JpRule {
472        hs_code: "291523",
473        jp_code: "291523000",
474        jp_description: "酢酸エチル",
475        tariff_rate: Some("free"),
476    },
477    JpRule {
478        hs_code: "291529",
479        jp_code: "291529000",
480        jp_description: "酢酸塩(酢酸ナトリウム等)",
481        tariff_rate: Some("free"),
482    },
483    JpRule {
484        hs_code: "291631",
485        jp_code: "291631000",
486        jp_description: "安息香酸、その塩及びエステル",
487        tariff_rate: Some("free"),
488    },
489    JpRule {
490        hs_code: "291711",
491        jp_code: "291711000",
492        jp_description: "シュウ酸、その塩及びエステル",
493        tariff_rate: Some("free"),
494    },
495    JpRule {
496        hs_code: "291735",
497        jp_code: "291735000",
498        jp_description: "無水フタル酸",
499        tariff_rate: Some("free"),
500    },
501    JpRule {
502        hs_code: "291811",
503        jp_code: "291811000",
504        jp_description: "乳酸、その塩及びエステル",
505        tariff_rate: Some("free"),
506    },
507    JpRule {
508        hs_code: "291814",
509        jp_code: "291814000",
510        jp_description: "クエン酸",
511        tariff_rate: Some("free"),
512    },
513    JpRule {
514        hs_code: "292141",
515        jp_code: "292141000",
516        jp_description: "アニリン",
517        tariff_rate: Some("free"),
518    },
519    JpRule {
520        hs_code: "292419",
521        jp_code: "292419000",
522        jp_description: "その他の非環式アミド(DMF等)",
523        tariff_rate: Some("free"),
524    },
525    JpRule {
526        hs_code: "290711",
527        jp_code: "290711000",
528        jp_description: "フェノール",
529        tariff_rate: Some("free"),
530    },
531    JpRule {
532        hs_code: "293090",
533        jp_code: "293090000",
534        jp_description: "その他の有機硫黄化合物(DMSO等)",
535        tariff_rate: Some("free"),
536    },
537
538    // ═══════════════════════════════════════════════
539    // Chapter 31 — 肥料
540    // ═══════════════════════════════════════════════
541    JpRule {
542        hs_code: "310210",
543        jp_code: "310210000",
544        jp_description: "尿素",
545        tariff_rate: Some("free"),
546    },
547    JpRule {
548        hs_code: "310230",
549        jp_code: "310230000",
550        jp_description: "硝酸アンモニウム",
551        tariff_rate: Some("free"),
552    },
553
554    // ═══════════════════════════════════════════════
555    // Chapter 72–81 — 金属
556    // ═══════════════════════════════════════════════
557    JpRule {
558        hs_code: "720310",
559        jp_code: "720310000",
560        jp_description: "直接還元鉄鉱石で得た鉄製品",
561        tariff_rate: Some("free"),
562    },
563    JpRule {
564        hs_code: "740311",
565        jp_code: "740311000",
566        jp_description: "精製銅(カソード等)",
567        tariff_rate: Some("free"),
568    },
569    JpRule {
570        hs_code: "750110",
571        jp_code: "750110000",
572        jp_description: "ニッケル(未加工、合金でないもの)",
573        tariff_rate: Some("free"),
574    },
575    JpRule {
576        hs_code: "760110",
577        jp_code: "760110000",
578        jp_description: "アルミニウム(未加工、合金でないもの)",
579        tariff_rate: Some("free"),
580    },
581    JpRule {
582        hs_code: "760310",
583        jp_code: "760310000",
584        jp_description: "アルミニウム粉末(非板状構造)",
585        tariff_rate: Some("free"),
586    },
587    JpRule {
588        hs_code: "760711",
589        jp_code: "760711000",
590        jp_description: "アルミニウム箔(裏打ちなし)",
591        tariff_rate: Some("free"),
592    },
593    JpRule {
594        hs_code: "780110",
595        jp_code: "780110000",
596        jp_description: "精製鉛(未加工)",
597        tariff_rate: Some("free"),
598    },
599    JpRule {
600        hs_code: "790111",
601        jp_code: "790111000",
602        jp_description: "亜鉛(未加工、純度≥99.99%)",
603        tariff_rate: Some("free"),
604    },
605    JpRule {
606        hs_code: "800110",
607        jp_code: "800110000",
608        jp_description: "スズ(未加工、合金でないもの)",
609        tariff_rate: Some("free"),
610    },
611
612    // ═══════════════════════════════════════════════
613    // Chapter 71 — 貴金属
614    // ═══════════════════════════════════════════════
615    JpRule {
616        hs_code: "710691",
617        jp_code: "710691000",
618        jp_description: "銀(未加工)",
619        tariff_rate: Some("free"),
620    },
621    JpRule {
622        hs_code: "710812",
623        jp_code: "710812000",
624        jp_description: "金(非貨幣用、未加工)",
625        tariff_rate: Some("free"),
626    },
627
628    // ═══════════════════════════════════════════════
629    // Chapter 22
630    // ═══════════════════════════════════════════════
631    JpRule {
632        hs_code: "220710",
633        jp_code: "220710000",
634        jp_description: "変性していないエチルアルコール(アルコール分≥80%)",
635        tariff_rate: None, // complex rate
636    },
637
638    // ═══════════════════════════════════════════════
639    // Chapter 28 — v0.5 additions
640    // ═══════════════════════════════════════════════
641    JpRule {
642        hs_code: "280410",
643        jp_code: "280410000",
644        jp_description: "水素",
645        tariff_rate: Some("free"),
646    },
647    JpRule {
648        hs_code: "280420",
649        jp_code: "280420000",
650        jp_description: "窒素",
651        tariff_rate: Some("free"),
652    },
653    JpRule {
654        hs_code: "280440",
655        jp_code: "280440000",
656        jp_description: "酸素",
657        tariff_rate: Some("free"),
658    },
659    JpRule {
660        hs_code: "281121",
661        jp_code: "281121000",
662        jp_description: "二酸化炭素",
663        tariff_rate: Some("free"),
664    },
665    JpRule {
666        hs_code: "281129",
667        jp_code: "281129000",
668        jp_description: "非金属の無機酸素化合物(二酸化硫黄等)",
669        tariff_rate: Some("free"),
670    },
671    JpRule {
672        hs_code: "281830",
673        jp_code: "281830000",
674        jp_description: "水酸化アルミニウム",
675        tariff_rate: Some("free"),
676    },
677    // NOTE: 281921 and 281929 were removed — they are not valid HS 2022 subheadings.
678    // Heading 28.19 (chromium oxides/hydroxides) only has subheadings .10 and .90.
679    // Dichromates belong under heading 28.41: see 284130 and 284150 below.
680    JpRule {
681        hs_code: "282611",
682        jp_code: "282611000",
683        jp_description: "フッ化物(アンモニウム又はナトリウム)",
684        tariff_rate: Some("free"),
685    },
686    JpRule {
687        hs_code: "282710",
688        jp_code: "282710000",
689        jp_description: "塩化アンモニウム",
690        tariff_rate: Some("free"),
691    },
692    JpRule {
693        hs_code: "282731",
694        jp_code: "282731000",
695        jp_description: "塩化マグネシウム",
696        tariff_rate: Some("free"),
697    },
698    JpRule {
699        hs_code: "282732",
700        jp_code: "282732000",
701        jp_description: "塩化アルミニウム",
702        tariff_rate: Some("free"),
703    },
704    JpRule {
705        hs_code: "282733",
706        jp_code: "282733000",
707        jp_description: "塩化鉄",
708        tariff_rate: Some("free"),
709    },
710    JpRule {
711        hs_code: "282735",
712        jp_code: "282735000",
713        jp_description: "塩化ニッケル",
714        tariff_rate: Some("free"),
715    },
716    JpRule {
717        hs_code: "282746",
718        jp_code: "282746000",
719        jp_description: "塩化銅",
720        tariff_rate: Some("free"),
721    },
722    JpRule {
723        hs_code: "283210",
724        jp_code: "283210000",
725        jp_description: "亜硫酸ナトリウム(メタ重亜硫酸ナトリウム等)",
726        tariff_rate: Some("free"),
727    },
728    JpRule {
729        hs_code: "283220",
730        jp_code: "283220000",
731        jp_description: "チオ硫酸ナトリウム",
732        tariff_rate: Some("free"),
733    },
734    JpRule {
735        hs_code: "283319",
736        jp_code: "283319000",
737        jp_description: "アルカリ金属の硫酸塩(硫酸カリウム等)",
738        tariff_rate: Some("free"),
739    },
740    JpRule {
741        hs_code: "283321",
742        jp_code: "283321000",
743        jp_description: "硫酸マグネシウム",
744        tariff_rate: Some("free"),
745    },
746    JpRule {
747        hs_code: "283429",
748        jp_code: "283429000",
749        jp_description: "その他の硝酸塩(硝酸カルシウム、硝酸銅等)",
750        tariff_rate: Some("free"),
751    },
752
753    // ═══════════════════════════════════════════════
754    // Chapter 29 — v0.5 additions
755    // ═══════════════════════════════════════════════
756    JpRule {
757        hs_code: "290124",
758        jp_code: "290124000",
759        jp_description: "ブタ-1,3-ジエン",
760        tariff_rate: Some("free"),
761    },
762    JpRule {
763        hs_code: "290125",
764        jp_code: "290125000",
765        jp_description: "スチレン",
766        tariff_rate: Some("free"),
767    },
768    JpRule {
769        hs_code: "290321",
770        jp_code: "290321000",
771        jp_description: "塩化ビニル(クロロエチレン)",
772        tariff_rate: Some("free"),
773    },
774    JpRule {
775        hs_code: "290512",
776        jp_code: "290512000",
777        jp_description: "プロパン-2-オール(イソプロピルアルコール)",
778        tariff_rate: Some("free"),
779    },
780    JpRule {
781        hs_code: "290539",
782        jp_code: "290539000",
783        jp_description: "その他のジオール(ネオペンチルグリコール等)",
784        tariff_rate: Some("free"),
785    },
786    JpRule {
787        hs_code: "290545",
788        jp_code: "290545000",
789        jp_description: "グリセリン",
790        tariff_rate: Some("free"),
791    },
792    JpRule {
793        hs_code: "290549",
794        jp_code: "290549000",
795        jp_description: "その他の多価アルコール(TMP、ペンタエリスリトール等)",
796        tariff_rate: Some("free"),
797    },
798    JpRule {
799        hs_code: "290941",
800        jp_code: "290941000",
801        jp_description: "ジエチレングリコール(2,2'-オキシジエタノール)",
802        tariff_rate: Some("free"),
803    },
804    JpRule {
805        hs_code: "291020",
806        jp_code: "291020000",
807        jp_description: "プロピレンオキサイド(1,2-エポキシプロパン)",
808        tariff_rate: Some("free"),
809    },
810    JpRule {
811        hs_code: "291412",
812        jp_code: "291412000",
813        jp_description: "ブタノン(メチルエチルケトン)",
814        tariff_rate: Some("free"),
815    },
816    JpRule {
817        hs_code: "291421",
818        jp_code: "291421000",
819        jp_description: "シクロヘキサノン",
820        tariff_rate: Some("free"),
821    },
822    JpRule {
823        hs_code: "291515",
824        jp_code: "291515000",
825        jp_description: "プロピオン酸、その塩及びエステル",
826        tariff_rate: Some("free"),
827    },
828    JpRule {
829        hs_code: "291519",
830        jp_code: "291519000",
831        jp_description: "その他の飽和非環式モノカルボン酸(酪酸等)",
832        tariff_rate: Some("free"),
833    },
834    JpRule {
835        hs_code: "291524",
836        jp_code: "291524000",
837        jp_description: "酢酸ブチル",
838        tariff_rate: Some("free"),
839    },
840    JpRule {
841        hs_code: "291611",
842        jp_code: "291611000",
843        jp_description: "アクリル酸及びその塩",
844        tariff_rate: Some("free"),
845    },
846    JpRule {
847        hs_code: "291613",
848        jp_code: "291613000",
849        jp_description: "アクリル酸メチル",
850        tariff_rate: Some("free"),
851    },
852    JpRule {
853        hs_code: "291614",
854        jp_code: "291614000",
855        jp_description: "メタクリル酸メチル(MMA)",
856        tariff_rate: Some("free"),
857    },
858    JpRule {
859        hs_code: "291619",
860        jp_code: "291619000",
861        jp_description: "不飽和モノカルボン酸のエステル(アクリル酸ブチル等)",
862        tariff_rate: Some("free"),
863    },
864    JpRule {
865        hs_code: "291712",
866        jp_code: "291712000",
867        jp_description: "アジピン酸、その塩及びエステル",
868        tariff_rate: Some("free"),
869    },
870    JpRule {
871        hs_code: "291714",
872        jp_code: "291714000",
873        jp_description: "無水マレイン酸",
874        tariff_rate: Some("free"),
875    },
876    JpRule {
877        hs_code: "291719",
878        jp_code: "291719000",
879        jp_description: "その他の非環式ポリカルボン酸(コハク酸等)",
880        tariff_rate: Some("free"),
881    },
882    JpRule {
883        hs_code: "291736",
884        jp_code: "291736000",
885        jp_description: "テレフタル酸及びその塩",
886        tariff_rate: Some("free"),
887    },
888    JpRule {
889        hs_code: "292121",
890        jp_code: "292121000",
891        jp_description: "エチレンジアミン及びその塩",
892        tariff_rate: Some("free"),
893    },
894    JpRule {
895        hs_code: "292122",
896        jp_code: "292122000",
897        jp_description: "ヘキサメチレンジアミン及びその塩",
898        tariff_rate: Some("free"),
899    },
900    JpRule {
901        hs_code: "292610",
902        jp_code: "292610000",
903        jp_description: "アクリロニトリル",
904        tariff_rate: Some("free"),
905    },
906    JpRule {
907        hs_code: "292920",
908        jp_code: "292920000",
909        jp_description: "イソシアナート(TDI、MDI等)",
910        tariff_rate: Some("free"),
911    },
912
913    // ═══════════════════════════════════════════════
914    // Chapter 38 — 各種化学工業生産品 (v0.5)
915    // ═══════════════════════════════════════════════
916    JpRule {
917        hs_code: "380210",
918        jp_code: "380210000",
919        jp_description: "活性炭",
920        tariff_rate: Some("free"),
921    },
922    JpRule {
923        hs_code: "380800",
924        jp_code: "380800000",
925        jp_description: "殺虫剤、殺菌剤、除草剤等の調製品",
926        tariff_rate: None, // complex rate depending on active ingredient
927    },
928    JpRule {
929        hs_code: "382499",
930        jp_code: "382499000",
931        jp_description: "その他の化学調製品(他に分類されないもの)",
932        tariff_rate: None,
933    },
934
935    // ═══════════════════════════════════════════════
936    // Chapters 21, 30, 33 — special-use products (v0.5)
937    // ═══════════════════════════════════════════════
938    JpRule {
939        hs_code: "210690",
940        jp_code: "210690000",
941        jp_description: "食品調製品(他に分類されないもの)",
942        tariff_rate: None,
943    },
944    JpRule {
945        hs_code: "300490",
946        jp_code: "300490000",
947        jp_description: "医薬品(投与量形態にしたもの等)",
948        tariff_rate: None,
949    },
950    JpRule {
951        hs_code: "330499",
952        jp_code: "330499000",
953        jp_description: "美容品・化粧品調製品(その他)",
954        tariff_rate: None,
955    },
956];
957
958/// Look up the Japan tariff code for a 6-digit HS code.
959///
960/// Returns `None` if no Japan-specific entry is registered for this code.
961pub fn find_jp_rule(hs_code: &str) -> Option<&'static JpRule> {
962    JP_RULES.iter().find(|r| r.hs_code == hs_code)
963}
964
965#[cfg(test)]
966mod tests {
967    use super::*;
968
969    #[test]
970    fn naoh_solid_has_jp_code() {
971        let rule = find_jp_rule("281511").unwrap();
972        assert_eq!(rule.jp_code, "281511000");
973        assert_eq!(rule.tariff_rate, Some("free"));
974    }
975
976    #[test]
977    fn acetone_has_jp_code() {
978        let rule = find_jp_rule("291411").unwrap();
979        assert_eq!(rule.jp_code, "291411000");
980    }
981
982    #[test]
983    fn unknown_hs_returns_none() {
984        assert!(find_jp_rule("999999").is_none());
985    }
986
987    #[test]
988    fn tariff_year_is_2026() {
989        assert_eq!(JP_TARIFF_YEAR, 2026);
990    }
991}