貿易融資文件審核技能 (Trade Finance Document Checking Skill)
技能概述 (Skill Overview)
本技能指導 Claude 執行專業的國際貿易融資文件審核,包括信用狀(L/C)檢查、單據不符點分析、UCP 600 合規驗證,以及 SWIFT 訊息格式驗證。
核心規範 (Core Standards)
1. UCP 600 (跟單信用狀統一慣例)
- Article 14: 單據審核標準工作天(5 個銀行工作日)
- Article 18: 商業發票要求
- Article 20-25: 運輸單據規定
- Article 38: 可轉讓單據
2. ISBP 745 (國際標準銀行實務)
- 拼字錯誤容忍度標準
- 單據一致性檢查
- 日期邏輯驗證
3. SWIFT 訊息標準
- MT700: 信用狀開狀
- MT710: 信用狀修改
- MT740: 信用狀授權
- MT799: 銀行間自由格式訊息
文件審核工作流程 (Document Checking Workflow)
Step 1: 信用狀基本資訊驗證
檢查項目:
- 信用狀編號 (L/C Number)
- 開狀日期 (Issue Date)
- 有效期限 (Expiry Date)
- 開狀銀行 (Issuing Bank)
- 受益人 (Beneficiary)
- 申請人 (Applicant)
- 信用狀金額 (L/C Amount)
- 幣別 (Currency)
範例檢查程式碼:
def validate_lc_basics(lc_data):
required_fields = [
'lc_number', 'issue_date', 'expiry_date',
'issuing_bank', 'beneficiary', 'applicant',
'lc_amount', 'currency'
]
discrepancies = []
for field in required_fields:
if field not in lc_data or not lc_data[field]:
discrepancies.append(f"缺少必要欄位: {field}")
# 日期邏輯檢查
if lc_data['issue_date'] >= lc_data['expiry_date']:
discrepancies.append("開狀日期不得晚於或等於有效期限")
return discrepancies
Step 2: 單據一致性檢查 (Document Consistency Check)
必須檢查的關鍵欄位:
| 檢查項目 | 商業發票 | 裝箱單 | 提單 | 保險單 |
|---|---|---|---|---|
| 受益人名稱 | ✓ | ✓ | ✓ | ✓ |
| 申請人名稱 | ✓ | ✓ | ✓ | ✓ |
| 貨物描述 | ✓ | ✓ | ✓ | ✓ |
| 數量/重量 | ✓ | ✓ | ✓ | - |
| 發票金額 | ✓ | - | - | - |
| 保險金額 | - | - | - | ✓ |
| 起運港 | ✓ | - | ✓ | ✓ |
| 目的港 | ✓ | - | ✓ | ✓ |
不符點範例 (Common Discrepancies):
❌ 嚴重不符 (Major Discrepancy):
- 商業發票金額 USD 50,000 超過信用狀金額 USD 48,000
- 提單顯示 "Freight Collect" 但 L/C 要求 "Freight Prepaid"
- 保險金額不足(應為發票金額 110%)
⚠️ 輕微不符 (Minor Discrepancy):
- 受益人名稱拼字差異: "TAIWAN TEXTILE CO LTD" vs "TAIWAN TEXTILE CO., LTD"
- 貨物描述略有差異但不影響實質內容
- 單據日期順序合理但未完全一致
Step 3: 運輸單據審核 (Transport Document Review)
提單 (Bill of Lading) 檢查清單:
1. 提單類型確認:
□ 已裝船提單 (On Board B/L)
□ 收貨待運提單 (Received for Shipment B/L)
□ 清潔提單 (Clean B/L)
2. 必要批註 (Required Notations):
□ "Shipped on Board" 日期戳記
□ "Freight Prepaid" 或 "Freight Collect"
□ "Notify Party" 資訊完整
3. 簽署要求 (Signature Requirements):
□ 船公司或其代理人簽署
□ 簽署日期在 L/C 有效期內
□ 簽署者身份清楚標示
4. 份數要求 (Number of Originals):
□ 通常要求全套正本 (Full Set of Originals)
□ 例: "3/3" 表示三份正本全部提示
Step 4: SWIFT MT700 格式驗證
MT700 必要欄位檢查:
:20: Sender's Reference (發送行參考號)
:31C: Date of Issue (開狀日期)
:31D: Date and Place of Expiry (有效期與地點)
:50: Applicant (申請人)
:59: Beneficiary (受益人)
:32B: Currency Code, Amount (幣別與金額)
:41D: Available With... By... (付款方式)
:42C: Drafts at... (匯票期限)
:43P: Partial Shipments (分批裝運)
:43T: Transshipment (轉運)
:44A: Loading on Board/Dispatch (裝運港)
:44B: For Transportation to... (目的港)
:44C: Latest Date of Shipment (最遲裝運日)
:45A: Description of Goods (貨物描述)
:46A: Documents Required (所需單據)
:47A: Additional Conditions (附加條款)
:71B: Charges (費用負擔)
格式驗證範例:
def validate_mt700_format(mt700_message):
"""驗證 MT700 SWIFT 訊息格式"""
mandatory_fields = {
':20:': '發送行參考號',
':31C:': '開狀日期',
':31D:': '有效期限',
':50:': '申請人',
':59:': '受益人',
':32B:': '金額',
':45A:': '貨物描述',
':46A:': '所需單據'
}
errors = []
for tag, description in mandatory_fields.items():
if tag not in mt700_message:
errors.append(f"缺少必要欄位 {tag} ({description})")
# 日期格式檢查 (YYMMDD)
import re
date_pattern = r':31[CD]:(\d{6})'
dates = re.findall(date_pattern, mt700_message)
for date in dates:
if not validate_date_format(date):
errors.append(f"日期格式錯誤: {date}")
return errors
def validate_date_format(date_str):
"""檢查 YYMMDD 格式"""
if len(date_str) != 6:
return False
year, month, day = int(date_str[:2]), int(date_str[2:4]), int(date_str[4:6])
return 1 <= month <= 12 and 1 <= day <= 31
不符點分類與處理 (Discrepancy Classification)
分類標準 (Classification Criteria)
第一級 - 致命性不符 (Fatal Discrepancies):
- 金額超出信用狀限額
- 單據偽造或造假
- 裝運日期逾期
- 缺少必要單據
處理: 必須拒付 (Must Refuse Payment)
第二級 - 重大不符 (Major Discrepancies):
- 貨物描述實質不符
- 運輸條款不符 (如 Freight Terms)
- 保險金額不足
- 提單非清潔提單
處理: 通知申請人決定是否接受 (Notify Applicant)
第三級 - 輕微不符 (Minor Discrepancies):
- 拼字錯誤但不影響辨識
- 地址格式差異
- 單據日期順序問題
處理: 視銀行政策決定 (Bank Discretion)
自動化審核輸出格式 (Automated Review Output)
審核報告模板
# 信用狀單據審核報告
## Document Review Report
**信用狀編號:** [L/C Number]
**審核日期:** [Review Date]
**審核人員:** Claude AI Trade Finance System
---
## 一、基本資訊核對 (Basic Information Verification)
| 項目 | 信用狀要求 | 實際單據 | 狀態 |
|------|-----------|---------|------|
| 受益人 | [Required] | [Actual] | ✓/✗ |
| 申請人 | [Required] | [Actual] | ✓/✗ |
| 金額 | [Required] | [Actual] | ✓/✗ |
| 裝運期限 | [Required] | [Actual] | ✓/✗ |
---
## 二、單據檢查結果 (Document Check Results)
### 商業發票 (Commercial Invoice)
- ✓ 發票金額符合信用狀限額
- ✓ 貨物描述與信用狀一致
- ⚠️ 受益人地址格式略有差異
### 提單 (Bill of Lading)
- ✓ 清潔已裝船提單
- ✓ 運費預付 (Freight Prepaid)
- ✗ 裝運日期 2024-12-20 超過信用狀要求的 2024-12-15
### 保險單 (Insurance Policy)
- ✓ 保險金額為發票金額 110%
- ✓ 投保險別符合要求 (CIF)
---
## 三、不符點彙總 (Discrepancy Summary)
### 🔴 致命性不符 (Fatal - 1項)
1. **裝運逾期**: 提單日期 2024-12-20 超過信用狀最遲裝運日 2024-12-15
**建議處理**: 拒付並通知申請人
### 🟡 輕微不符 (Minor - 1項)
1. **地址格式**: 受益人地址 "NO.100" vs "NO. 100" (空格差異)
**建議處理**: 可接受範圍內的文書差異
---
## 四、審核結論 (Conclusion)
**整體評估**: ❌ 不建議付款 (Payment NOT Recommended)
**主要原因**: 裝運逾期為致命性不符點
**後續行動建議**:
1. 立即通知申請人單據存在不符點
2. 等待申請人指示是否接受不符點
3. 若申請人拒絕接受,退回單據予受益人
4. 若申請人同意接受,可酌收不符點手續費後付款
---
**審核完成時間**: [Timestamp]
**系統版本**: Trade Finance AI v1.0
**合規依據**: UCP 600, ISBP 745
最佳實踐建議 (Best Practices)
1. 審核時效管理
# 5個銀行工作日規則 (UCP 600 Article 14)
from datetime import datetime, timedelta
def calculate_review_deadline(presentation_date):
"""計算審核截止日"""
banking_days = 0
current_date = presentation_date
while banking_days < 5:
current_date += timedelta(days=1)
# 排除週末和國定假日
if current_date.weekday() < 5 and not is_bank_holiday(current_date):
banking_days += 1
return current_date
2. 常見錯誤預防清單
✓ 檢查清單 (Checklist):
□ 所有單據日期邏輯正確 (發票→裝船→提單)
□ 金額計算正確 (總金額 = 單價 × 數量)
□ 幣別一致性 (所有單據使用同一幣別)
□ 受益人/申請人名稱完全一致
□ 起運港/目的港與信用狀一致
□ 裝運日期在有效期限內
□ 單據份數符合要求 (如 3/3 提單正本)
□ 所有簽章與蓋章完整
□ 沒有未經授權的修改或塗改
□ 保險金額至少為 CIF 價格 110%
3. 風險旗標 (Risk Flags)
高風險指標:
- 首次往來客戶
- 高風險國家/地區
- 金額異常龐大
- 貨物描述模糊
- 受益人頻繁更換銀行
- 第三方單據過多
處理原則:
- 加強盡職調查 (Enhanced Due Diligence)
- 要求額外擔保文件
- 上報高階主管審核
- 考慮是否通報 AML 單位
進階功能 (Advanced Features)
1. AI 輔助貨物描述比對
from difflib import SequenceMatcher
def compare_goods_description(lc_description, invoice_description):
"""使用 AI 比對貨物描述相似度"""
# 移除標點符號和統一大小寫
lc_clean = lc_description.upper().replace(',', '').replace('.', '')
inv_clean = invoice_description.upper().replace(',', '').replace('.', '')
# 計算相似度
similarity = SequenceMatcher(None, lc_clean, inv_clean).ratio()
if similarity >= 0.95:
return "完全一致", similarity
elif similarity >= 0.85:
return "實質一致(輕微差異)", similarity
elif similarity >= 0.70:
return "部分一致(需人工確認)", similarity
else:
return "不符", similarity
2. SWIFT 訊息自動生成
def generate_mt730_acknowledgement(mt700_data):
"""自動生成 MT730 信用狀確認電文"""
mt730 = f"""
{{1:F01TPBKTWTP0XXX0000000000}}
{{2:I730HSBCHKHHXXXXN}}
{{4:
:20:{mt700_data['reference']}
:21:{mt700_data['related_reference']}
:30:{datetime.now().strftime('%y%m%d')}
:58A:{mt700_data['beneficiary_bank']}
:72:/ACC/WE ACKNOWLEDGE RECEIPT OF YOUR
//MT700 DATED {mt700_data['issue_date']}
//AND CONFIRM THAT THE CREDIT IS AVAILABLE
//AT OUR COUNTERS
-}}
"""
return mt730
合規注意事項 (Compliance Notes)
制裁篩選 (Sanctions Screening)
- 所有交易對手必須通過 OFAC/UN/EU 制裁名單篩選
- 貨物不得涉及軍民兩用品項 (Dual-Use Goods)
- 注意特定國家禁運規定
洗錢防制 (AML/CFT)
- 可疑交易指標識別
- KYC 文件完整性檢查
- 最終受益人 (UBO) 確認
資料隱私 (Data Privacy)
- 遵守 GDPR/個資法規定
- 客戶資料加密儲存
- 存取權限管理
使用此技能的指令範例
# 1. 基本文件審核
claude "請使用貿易融資技能審核這份信用狀單據組合"
# 2. 生成不符點報告
claude "根據 UCP 600 標準,分析這些單據並產生完整的不符點報告"
# 3. SWIFT 訊息驗證
claude "檢查這個 MT700 訊息格式是否符合 SWIFT 標準"
# 4. 批次審核
claude "批次審核資料夾中所有 L/C 案件並輸出 CSV 報表"
技能維護與更新
版本: 1.0
最後更新: 2025-01-19
維護者: Trade Finance Department
下次檢視日期: 2025-07-19
變更記錄:
- 2025-01-19: 初始版本建立,包含 UCP 600 和 ISBP 745 標準