무역 업무의 구조 · 통관과 시스템 · 실습
HS 분류·관세·FTA 계산과 제재 스크리닝
목표
수입 신고 8라인을 HS 코드로 분류하고, 과세환율로 과세가격을 만들고, FTA 적용 가능 여부를 가려 관세와 부가가치세를 계산한 뒤, 거래 상대를 제재 목록과 대조해 신고 요약을 만듭니다.
왜 중요한가
통관은 세 가지 질문에 답하는 일입니다. 이 물건은 무엇인가(HS 코드), 얼마짜리인가(과세가격), 어디서 왔는가(원산지). HS 코드는 세계 공통의 품목 분류 체계로 앞 6자리가 국제 공통이고 뒤는 나라마다 붙입니다. 세율은 코드에 달려 있으므로 분류가 틀리면 세금이 틀리고, 나중에 추징과 가산세가 따라옵니다. 과세가격은 국내에서는 운임과 보험을 포함한 CIF 기준으로 잡고, 외화는 세관이 정한 주간 과세환율로 바꿉니다. 원산지는 FTA 특혜세율의 열쇠입니다 — 협정 상대국 원산이고 원산지증명서가 있어야 낮은 세율을 받습니다.
국내 수출입 신고는 관세청의 전자통관시스템(UNI-PASS)으로 하고, 무역 회사의 ERP 는 신고 데이터를 전자문서로 넘깁니다. 그래서 ERP 의 품목 마스터에는 HS 코드가, 거래처 마스터에는 국가와 제재 스크리닝 결과가 있어야 합니다. 제재·수출통제 스크리닝은 거래 상대가 각국 제재 목록에 있는지, 물품이 전략물자인지 확인하는 절차이고, 걸리면 거래를 멈춥니다. 이름은 표기가 조금씩 달라(L.L.C. 와 LLC) 정규화가 필요하지만, 너무 느슨하면 오탐이 넘칩니다.
이 실습의 규칙
- 과세가격(원) =
cif_usd× 신고일이 속한 주의usd_krw, 원 미만 버림. 주는week_start이상 다음week_start미만입니다. - FTA 적용 조건:
fta_claimed가Y,coo_no가 있음, 원산국의fta_partner가NONE이 아님, 그리고fta.csv에 (HS 코드, 그 상대) 행이 있음. 사유 어휘:OK,NOT_CLAIMED,NO_COO,NO_AGREEMENT,NO_PREFERENCE(이 순서로 먼저 걸리는 것 하나). - 관세 = 과세가격 × 적용세율 ÷ 100, 10원 미만 버림. 부가가치세 = (과세가격 + 관세) × 10%, 10원 미만 버림.
- 스크리닝 정규화: 대문자로 바꾸고, 마침표·쉼표·하이픈을 지우고, 연속 공백을 하나로.
EXACT는 대소문자만 무시하고 같은 경우,NORMALIZED는 정규화 뒤에 같은 경우, 그 외NONE.EXACT·NORMALIZED는HOLD,NONE은CLEAR.
단계
1. 오른쪽 예시의 생성기를 /root/trade/make_customs.py 로 저장하고 python3 make_customs.py 로 실행하세요. 품목표·협정표·국가표·신고 라인·환율·거래처·제재 목록 일곱 파일이 만들어집니다.
2. items.csv 의 설명을 tariff.csv 와 맞춰 /root/trade/classification.csv 에 line,hs_code 머리글로 8줄 적으세요.
3. /root/trade/taxable_value.csv 에 line,cif_usd,rate,taxable_krw 머리글로 8줄 적으세요.
4. FTA 적용 여부를 /root/trade/fta_check.csv 에 line,origin,partner,claimed,has_coo,eligible,reason 머리글로 8줄 적으세요. claimed·has_coo·eligible 은 Y/N 입니다.
5. 관세를 /root/trade/duty.csv 에 line,hs_code,rate_pct,basis,duty_krw 머리글로 8줄 적으세요. basis 는 FTA 또는 BASIC 이고 rate_pct 는 소수 첫째 자리입니다.
6. 부가가치세를 /root/trade/vat.csv 에 line,taxable_krw,duty_krw,vat_krw 머리글로 8줄 적고, /root/trade/tax_totals.txt 에 duty_total=, vat_total=, fta_saving= 세 줄을 적으세요. fta_saving 은 모든 라인을 기본세율로 계산한 관세 합에서 실제 관세 합을 뺀 값입니다.
7. 거래처 8곳을 제재 목록과 대조해 /root/trade/screening.csv 에 party_id,name,match_name,match_type,action 머리글로 적고, /root/trade/screening.txt 에 hold_count=, clear_count= 두 줄을 적으세요. match_name 은 걸린 제재 목록의 이름이고 없으면 비웁니다.
8. /root/trade/declaration_summary.json 에 lines, taxable_total_krw, duty_total_krw, vat_total_krw, fta_lines, screening_hold, ready_to_file 일곱 키로 요약을 쓰고, /root/trade/customs_memo.md 에 ## 신고 요약, ## FTA 적용, ## 제재 스크리닝, ## 시스템 연동 메모 네 절로 메모를 쓰세요. ready_to_file 은 스크리닝 보류가 하나라도 있으면 false 입니다.
참고
- 분류는 설명을 읽고 품목표의 어느 줄에 해당하는지 고르는 일입니다. 와인은 색과 무관하게 같은 코드입니다.
- 10원 미만 버림은
x // 10 * 10입니다. - 흔한 실수 1: 과세환율을 신고일 당일 환율로 찾는 것. 주간 환율이라 그 주의 시작일로 찾습니다.
- 흔한 실수 2: 원산지증명서가 있으면 무조건 FTA 를 적용하는 것. 협정이 없는 나라(JP)와 그 품목에 특혜가 없는 상대(US 의 3926.90)는 안 됩니다.
- 흔한 실수 3: 스크리닝에서
Golden Trading Company를GOLDEN TRADING LLC와 같다고 보는 것. 정규화 규칙 밖의 느슨한 매칭은 오탐입니다.
단계 8개
- 품목표·신고 라인·제재 목록 만들기
- HS 코드로 분류하기
- 과세환율로 과세가격 만들기
- FTA 적용 가능 여부 판정하기
- 관세 계산하기
- 부가가치세와 합계 내기
- 제재 목록 스크리닝하기
- 신고 요약과 연동 메모 쓰기