简介:一份面向外贸企业、报关行及关务人员的实用文档,用于起草提交给海关的进口货物价格构成与状况说明。文档先给出标准函件框架,围绕货物状况、原因说明、责任承担、费用与法律责任等要点展开,并提示可参照填写船名航次、提单号、报关号等信息;随后简要介绍海关估价协议的一般性规则,包括成交价值作为首要估价依据、特殊因素的价格调整、以及无法按成交价值确定时的多种估价方法及适用顺序,帮助读者在异常申报、价格质疑或清关受阻时从容应对。资源为单个docx文件,约13KB,内容精炼、结构清晰,便于直接修改套用。目前已有147人学习下载,适合需要快速撰写规范海关说明,或想理清价格构成与海关估价逻辑的关务从业者参考。
1. 海关要的不是发票,是价格怎么来的
做进出口的人大多经历过这种场景:货物都到港了,报关行忽然传话,说海关对申报价格有疑问,要求补充一份「价格构成情况说明」。这时候翻箱倒柜找合同、找发票、找付款水单,凑齐了交上去,又被退回,理由是「构成说明不完整」或「与发票金额逻辑不一致」。原因很简单:海关要的不是你报了多少价,而是这个价格是怎么拼出来的——哪些是货价,哪些是运费保险,哪些是包装费,哪些是付给境外卖方的特许权使用费,哪些又从价格里扣掉了。这份说明文件的口径、字段和逻辑链条,直接决定审价是放行还是转入后续估价甚至移交稽查。
这篇内容围绕「海关说明价格构成情况说明.docx」这个场景展开,适合三类人:关务或报关行里做单证的人,被海关价格质疑后需要补料的人,以及想从源头把出口或进口申报价做扎实的外贸运营。后面不讲虚的,直接拆清楚价格构成的法律底层逻辑、说明文档的标准骨架、可复现的批量生成方法,以及最容易翻车的几个细节。
2. 价格构成的底层逻辑:成交价格法的加减项框架
2.1 为什么说成交价格不是发票金额那么简单
海关审定完税价格的首要方法是成交价格法,也就是以买方实付或应付给卖方的价格为基础,再按规则做加法或减法调整。这个「实付应付价格」不等于形式发票上的总金额,它包括直接支付和间接支付两部分。直接支付好理解,就是货款;间接支付最常见的是买方替卖方承担了某些费用,比如境外段的运费原本该卖方付,结果合同约定由买方付并在发票外单独结算,这种就必须计入完税价格。
做价格构成说明之前,先想清楚一个判断:你的申报价格到底是「成交价格法」下的价格,还是「倒扣价格法」「计算价格法」等其他方法的结果。绝大多数一般贸易走的是成交价格法,所以说明的核心任务只有一个——证明申报价格等于「实付应付 + 应加项 - 应扣项」。这个等式写清楚了,说明就成功了一半。
2.2 应加项里最容易漏的四个费用
根据海关估价协定的通行口径,应加项主要覆盖四类:佣金和经纪费,但购货佣金除外;与货物有关的容器和包装费用;买方免费或减价提供的协助费用,比如模具、设计费;特许权使用费和转售收益。
这里有两个高频误判。第一个是购货佣金——买方为自己的采购行为付给境内中间商的佣金,不计入完税价格;但付给境外卖方或卖方代理的销售佣金,必须计入。判断标准是谁的服务对象是买方还是卖方,不是看合同里写没写「佣金」两个字。第二个是协助费用——很多加工贸易企业把模具费单独付给境外公司,发票上的货物单价看着很低,但模具费不摊进货物价格里,海关一旦发现就会按协助费处理,补税的同时还要交滞纳金。
2.3 应扣项的边界:不是所有运费都能扣
说到减项,核心是运保费的处理。完税价格以到岸价格(CIF)为基础,所以海运或空运的进口运费和保险费要计入;但如果成交方式是FOB,运费是到了境内才结算的境内运输段费用,这种境外段以外的部分不应计入完税价格。实际做单时最容易出问题的不是该不该扣,而是分摊公式。同一票货物里有多种品名,境内外运费只有一张总单,很多企业直接按毛重分摊,忽略了运费单上可能同时包含境外段和境内段。正确做法是先拆分运输区间,再把境外段的金额按各品名的重量占比或体积占比摊进对应的完税价格。
2.4 从法律依据倒推说明文档的必备字段
把底层逻辑转成文档结构,说明里至少要能回答以下几个问题:买卖双方是否存在特殊关系;是否受让方限制转售或使用;价格是否取决于后续某个条件;有没有需要加计的协助费和特许权使用费。这些正是海关审查价格是否客观可核实时的关注点。所以规范的说明文档不是一段散文,而是一个「事实陈述 + 金额拆解 + 佐证凭证」的结构化信息包。
【事实陈述】本票货物由上海XX贸易有限公司(买方)与新加坡YY公司(卖方)于2024年6月18日签订合同编号SHP20240618,成交方式FOB SINGAPORE,双方经公平谈判定价,无特殊关系,不受转售限制。 【金额拆解】发票金额:USD 120,000.00(对应货物数量2000件,单价USD 60/件);境外运费:USD 2,400.00;保险费:USD 480.00;包装费:USD 600.00;完税价格合计:USD 123,480.00。 【佐证凭证】详见附件:合同、商业发票、运费单、保险单、付款水单。上面这个三段式是出口方身份的简化示例,进口方申报时的字段稍有差别,但骨架一样。写进说明里的每一个数字都必须能在合同或发票里找到出处,这是后文所有模板的第一原则。
3. 说明文档的落地骨架:从空白 docx 到可交单的说明
3.1 封面与基础信息区:让审价关员 30 秒定位到票
文档开头部分的作用是让看到的人立刻知道「这是哪一票、谁申报的、报了什么」。不需要做花哨的封面页,用表格列出基本信息反而更高效。我一般会放以下字段:申报单位、统一社会信用代码、报关单号、提运单号、发票号、合同号、贸易国别、成交方式、币制、申报总金额、申报日期。每一行都对应报关单上已有的字段,方便关员对照。
这一区域最容易犯的错是把报关单号写错位。报关单号是 18 位,前 4 位是关区代码,后 14 位是流水号,复制时容易串位。另外币制要写英文三字母代码(USD、EUR、JPY),不要写「美元」这种中文俗称,因为内部系统按代码检索,写中文会在转人工时增加沟通成本。
3.2 价格构成明细表:一行一费,总账能平
接下来是全文档的核心区——价格构成明细表。每一行写一个价格组成项,列字段包括:序号、费用名称、费用说明、币制、金额、对应凭证编号、是否计入完税价格。最后一列最关键,它直接告诉审价关员哪些钱进了完税价格,哪些没有进,为什么没进。
表格的「费用说明」列要具体到能复核的程度。运费不能只写「运费」,要写「海运运费,自新加坡港至上海港,提单号OOLU1234567,计费重量 8,600KG,总运费 USD 2,400.00,按毛重分摊至本票货物」。保险费的说明要写清保险单号和被保险货物描述。包装费的说明则要注明「木质托盘重新熏蒸后随货出口」或「一次性纸箱包装」,因为包装是否可回收、是否随货走会直接影响计税口径。
下面是一个可复制的格式范例:
| 序号 | 费用名称 | 费用说明 | 币制 | 金额 | 凭证编号 | 是否计入完税价格 |
|---|---|---|---|---|---|---|
| 1 | 货价 | 合同SHP20240618项下2000件 | USD | 120,000.00 | INV-20240618 | 是 |
| 2 | 境外运费 | 海运运费,自新加坡至上海,提单号OOLU1234567 | USD | 2,400.00 | BL-0888 | 是 |
| 3 | 保险费 | 保单号PICC-20240615 | USD | 480.00 | INS-2256 | 是 |
| 4 | 包装费 | 内部加厚瓦楞纸箱,随货不回收 | USD | 600.00 | PKG-103 | 是 |
| 5 | 购货佣金 | 买方支付给境内中间商XX货代,与卖方无关 | USD | 1,200.00 | COMM-330 | 否 |
| 合计 | — | — | — | 124,680.00 | — | 计入完税价格 123,480.00 |
这张表不是把数字排整齐就行,关键在于「是否计入完税价格」这一列的逻辑。表里的第 5 行购货佣金是典型的「入境前已支付但不计入完税价格」的项目,如果佣金是付给境外卖方指定代理的,这一行的「是否计入」就必须改成「是」,所以写说明之前先把佣金支付对象合同翻出来确认一遍。
3.3 文字说明区:三段式叙述把数据串成逻辑
表格只回答了「价格由哪些部分构成」,但没回答「为什么是这么构成的」。文字说明区的作用就是把表格里的数字还原成交易事实,让审价关员不用靠猜。我常用的三段式是:交易背景 -> 定价依据 -> 支付路径。
交易背景段写入买卖双方关系、合同签订方式、询盘和还盘的过程,篇幅两到三行就够。定价依据段写同类产品在不同客户之间的价格水平区间、本次价格是否受任何后续条件影响、有没有返利或折扣协议。支付路径段写货款、运费、保险费的支付对象和结算方式,比如TT付款或信用证结算,购付汇水单号列在最后。三段合起来,配合明细表,就能覆盖审价环节的大部分问题。
3.4 佐证材料清单:附件列表要「指哪打哪」
文档最后附一个佐证材料清单,把前面表格里的「凭证编号」和附件一一对应。清单字段包含:附件序号、附件名称、对应价格构成项、页数。这样做的好处是收单的人可以直接按编号索引,不用在一沓快递单和银行回单里翻找。常见佐证材料包括:合同、商业发票、装箱单、运费单、保险单、付款水单或购汇凭证、特许权使用费合同或分摊说明、原厂成本表(用于协助费说明)。
务必注意附件扫描件的清晰度。很多企业拍照上传的银行回单边缘不齐,字符识别后金额串位,审价人员一旦对某个数字有疑问,整份说明的可信度都会下降。文件命名用「凭证编号-附件名称」格式,例如「BL-0888-海运提单.pdf」,压缩包或附件包里的文件名和清单列的表对应上,避免出现「附件1」和清单对不上的情况。
4. 用 Python 从 ERP 导出数据批量生成「价格构成说明.docx」
4.1 为什么值得写脚本而不是 Word 手敲
一票两票用 Word 手敲没问题,但一个报关行每月几十票、一个外贸公司同时向多个口岸申报,每票都要把明细表、文字段、附件清单从头写一遍,既慢又容易出错。更关键的是,手敲文档里的数字直接从发票复制,和历史申报数据没有勾稽关系,审计时一旦被问到某个月的申报价格为什么比另一个月高 5%,翻半天也答不上来。用脚本从 ERP 或 Excel 台账批量生成,首先数字不会抄错,其次文档结构固定,字段完整率有保证,最后每次生成的说明都能作为结构化记录留档,后续核查时按报关单号就能检索。
4.2 python-docx 的安装与最小工作流
生成 .docx 最成熟的开源方案是 python-docx 库。安装命令是pip install python-docx,它会自动装好依赖。核心工作流是:读一个包含价格要素的 Excel 或 CSV 台账,对每一票数据调用一个生成函数,最后输出独立的 .docx 文件。下面这个示例假设你已经有一张名为price_basis.csv的台账,字段包括报关单号、品名、数量、货价、运费、保费、包装费、购货佣金等。
import csv from docx import Document from docx.shared import Pt from docx.oxml.ns import qn def build_price_statement(row): """根据台账中的一行数据生成价格构成说明 docx""" doc = Document() # 设置正文中文字体,避免 Word 打开后中文显示成乱码 style = doc.styles['Normal'] style.font.name = 'Times New Roman' style.font.size = Pt(10.5) style._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体') # 标题 doc.add_heading('价格构成情况说明', level=1) # 基础信息区 doc.add_heading('一、基本信息', level=2) info_table = doc.add_table(rows=0, cols=4) info_table.style = 'Table Grid' base_fields = [ ('报关单号', row['decl_no']), ('合同号', row['contract_no']), ('提运单号', row['bill_no']), ('发票号', row['inv_no']), ('成交方式', row['trade_mode']), ('币制', row['currency']), ('申报总金额', row['total_amt']), ('申报日期', row['decl_date']), ] # 每两个 key-value 组成一行四列,保持表格紧凑 for i in range(0, len(base_fields), 2): cells = info_table.add_row().cells cells[0].text = base_fields[i][0] + ':' cells[1].text = base_fields[i][1] if i + 1 < len(base_fields): cells[2].text = base_fields[i + 1][0] + ':' cells[3].text = base_fields[i + 1][1] # 明细表 doc.add_heading('二、价格构成明细', level=2) detail_table = doc.add_table(rows=1, cols=7) detail_table.style = 'Table Grid' headers = ['序号', '费用名称', '费用说明', '币制', '金额', '凭证编号', '是否计入完税价格'] for idx, h in enumerate(headers): detail_table.rows[0].cells[idx].text = h # 按固定顺序写入每行明细 items = [ ('1', '货价', '货物本身价款', row['currency'], row['goods_value'], row['invoice_no'], '是'), ('2', '境外运费', '自起运港至目的港运输费', row['currency'], row['freight'], row['bl_no'], '是'), ('3', '保险费', '运输保险费用', row['currency'], row['insurance'], row['policy_no'], '是'), ('4', '包装费', '随货包装材料费', row['currency'], row['packing'], row['packing_no'], '是'), ] # 若台账中存在购货佣金,单独追加为不计入完税价格的行 if row.get('commission'): items.append(('5', '购货佣金', '买方支付给境内采购代理', row['currency'], row['commission'], row['commission_no'], '否')) for r in items: cells = detail_table.add_row().cells for col_idx, val in enumerate(r): cells[col_idx].text = str(val) doc.save(f"{row['decl_no']}_价格构成说明.docx") with open('price_basis.csv', newline='', encoding='utf-8-sig') as f: reader = csv.DictReader(f) for row in reader: build_price_statement(row)代码做了四件事:读取台账、创建文档、写入基础信息和明细表、按报关单号另存为独立文件。utf-8-sig编码是为了兼容 Excel 导出的 CSV,直接utf-8读有时会把带 BOM 的表头读成\ufeffdecl_no,查半天查不出原因。
4.3 参数怎么改:台账字段设计决定脚本可维护性
上面脚本里的字段名和你的台账列名必须一致。建议在 Excel 台账里单独建一个「价格要素」Sheet,列固定为:decl_no, contract_no, bill_no, inv_no, trade_mode, currency, total_amt, decl_date, goods_value, freight, insurance, packing, packing_no, commission, commission_no。
有两个字段特别提醒:total_amt是发票总金额,goods_value是货价净额,两者不要把概念混在一起。后面表里的合计逻辑是goods_value + freight + insurance + packing,等于total_amt减去不计入完税价格的佣金。如果表里算出来不平,先检查台账的这四个数字是不是来自同一张发票,而不是一部分取自合同、一部分取自形式发票。
4.4 从脚本到批量:一次生成几十票时注意文件命名和编码
批量生成后要检查三个位置:文件名不能有空格和斜杠,否则在部分关务系统里上传会报错;日期字段建议统一写成YYYYMMDD格式,2024/6/18这种混合格式在排序时会把 10 月排到 6 月前面;金额字段不要写千分位逗号,123,480.00在转成 Excel 后会被识别成文本,后续对账又要手工处理。
小批量验证用 3 票数据试跑,检查生成的 docx 用 Word 打开后表格有没有挤到一起、中文字体显示是否正常。python-docx 生成的表格默认宽度偏窄,插入内容多的费用说明列会换行,建议在生成后手动调整一列列宽,或者在建表后用table.columns[3].width单独设置金额列的宽度。若想固定列宽,需要在表格 XML 层面设置,代码里可加入如下片段:
from docx.shared import Cm for col_idx, col in enumerate(detail_table.columns): col.width = Cm(2.5 if col_idx == 0 else 3.0)设置Cm之后,Word 里表格会尽量按设定宽度呈现,但若单元格内容超长,Word 仍会强制换行而不是撑破页面,这个和 HTML 表格的行为不同,不必担心溢出边界。
5. 先议价价格、运保费分摊与特殊关系披露:审价质疑的三个高频死角
5.1 先议价(first sale)做说明时,金额口径只有一个
「先议价」场景常见于中间商贸易:工厂把货卖给中间商,中间商再转卖给国内买方,申报价格用的是工厂给中间商的价格,也就是第一次销售的价格。海关对先议价的使用要求不变——申报价必须是真实的第一次销售价格,且中间商的分销职能不是「有名无实」。写构成说明时,最需要讲清楚的是中间商在交易里承担了什么:有没有自持库存、是否承担质量责任、是否独立谈判合同条款。如果中间商只是一个签单的皮包,那先议价价格可能不被接受,完税价格会调整到第二次销售价格。
这种情况下的价格构成明细表有个特点,不能只列一个「货价」。要在说明段里明确写出「工厂->中间商价格」和「中间商->境内买方价格」两套价格,并说明申报采用前者,同时提供工厂给中间商的发票、中间商给买方的发票和中间商的成本利润证明。两套价格的差价(也就是中间商的毛利)不计入完税价格,但要在文字说明里写清楚差价的构成,否则审价人员会认为你隐瞒了中间环节利润。
5.2 运保费分摊的口径:按毛重还是按体积,得先看运输合同
同一提单下多品名货物只出一张运费单时,分摊口径直接决定每个品名的完税价格。按毛重分摊最常见,但重货和抛货拼柜时按毛重会让抛货承担过多运费。按体积分摊适合轻抛货,但需要提供包装尺寸明细。还有一种情况是运输合同里已经约定了按货值分摊,比如快递类业务,这时直接按货值比例摊即可。
写说明时,运输方式不同,参数选择也不同。海运整箱按一个固定运费分摊到品名;海运拼箱和空运按计费重量分摊,计费重量取毛重和体积重的大者。最容易忽略的是「境内段和境外段拆分」——如果运费单同时包含提货费和派送费,要先剔除境内段金额,剩余境外段才能计入完税价格。在说明的运费行里提供分摊公式比只写总数更稳妥,例如「运费总额 USD 2,400.00 = 境外海运费 USD 2,100.00 + 国内派送费 USD 300.00,本次仅将 USD 2,100.00 计入完税价格,国内派送费为境内运输段费用」。
5.3 特殊关系披露不是写「无」就完事,要写判断过程
很多企业看到「是否存在特殊关系」就填「否」,其实这个字段不是让表个态,而是要披露事实。如果买卖双方有股权关系、共同董事、或一方是另一方的独家代理,填「是」并不等于完税价格必然被调整;相反,填「否」但被查到实际存在关系,整份说明的可信度立刻归零。正确的做法是:如实披露关系类型,再说明成交价格未受该关系影响。支撑这个结论的论据可以写同期同品质产品卖给独立客户的出口价格记录,或卖方向海关交验的成本核算表,证明卖给关联方的价格没有低于成本。
披露段的参考写法:「买方与卖方存在股权关联关系,卖方持有买方 30% 股份。但本票交易价格经双方独立协商,参考了卖方同期向非关联日本客户销售同型号产品的单价,价格区间一致,不因关联关系而调整。」这种写法把事实和结论分开,审价人员顺着你的论据去查也有据可依。
5.4 特许权使用费的分摊说明:专利费和品牌费不能混写
特许权使用费必须计入完税价格的情形是:费用与进口货物有关,且支付作为该货物销售的条件。说明文档里要把专利许可费、商标许可费、版权费分开列,不能笼统写「技术费」。专利费的判断标准是货物是否包含相应专利技术;商标费要看货物是否使用该商标且在进口后是否重新加工,如果进口后直接贴牌转售,商标费通常要计入;如果进口后经过实质性加工改变性质,计入的可能性就小。
分摊方法上,按销售数量摊是最常见做法。公式为「本票应摊许可费 = 本期应付特许权使用费总额 × 本票货物数量 / 许可期内销售总数量」,但要注意许可合同里「许可期」的定义,有的是合同自然年度,有的是产品生命周期。把这个公式和相关参数直接写进说明里,比让审价人员去读厚厚的许可合同高效得多。表格里特许权使用费单独一行,费用说明列标注「依据许可协议L-2024-05第3.2条,按季度销售数量分摊」,凭证编号填许可协议编号和分摊计算表编号,在佐证清单里加一项「特许权使用费分摊计算表」。
5.5 退回重写的常见信号:价格构成文档不被接受的五种表现
最后一条是从多年操作经验里提炼的「重写信号」,收到以下反馈时,不用再试图在原文档上小修小补,直接重写效率更高:报关行反馈「金额逻辑对不上」,通常是把人民币和美元混在同一张表里;反馈「费用说明太笼统」,比如只写「运费、保费」没有对应凭证编号;反馈「特殊关系栏与实际不符」,多半是股权信息被忽略;反馈「缺少签章或落款日期」,说明文档被当作无效文件;反馈「佐证材料与清单不符」,通常是附件清单列的凭证和实际扫描件对不上。重写时按本文第 3 章的骨架来:基础信息区 -> 价格构成明细表 -> 文字说明区 -> 佐证材料清单,任何一个字段都至少要能在附件里找到对应凭证。这份文档本身不产生任何关税,但它决定了你的申报价格能不能被高效接受,也决定了一票货是三天放行还是一个月后收到补税通知书。
本文还有配套的精品资源,点击获取