Magento 2订单怎么处理才不漏发不错款?发票、发货与退款工作流实战
本文目录
- 订单的state和status到底有什么区别?
- 一笔订单的生命周期:从Pending到Complete经历了什么?
- 开发票(Invoice)为什么是“确认收款”而不是发货?
- 创建发货(Shipment):追踪号和部分发货怎么处理?
- 退款单(Credit Memo)为什么必须先开票才能退?
- 取消、保留、重新下单:那些非主线的订单操作怎么用?
- 实战:一个跨境订单从下单到完成,后台到底点了哪几下?
- 部分发货、缺货、合并:复杂订单怎么拆着处理?
- 不同客户、不同订单:客户分组和订单处理怎么联动?
- 订单邮件、发票PDF和客户账户:售后体验怎么做到位?
- 订单数据怎么和财务、ERP对上账?
- 订单处理最容易出事的几个坑,怎么提前避开?
- 常见问题解答
- Magento里订单的state和status有什么区别?
- 为什么开发票(Invoice)不等于发货?
- 客户要退款,但我还没给订单开发票,怎么退?
- 在线退款(Refund Online)和离线退款(Refund Offline)怎么选?
- 一张订单的商品没法一次发齐,怎么办?
- 权威参考资料
Magento 2的订单处理是出海卖家每天都要碰、却最容易处理得稀里糊涂的环节。很多人以为“订单来了就发货”那么简单,结果钱没确认收到就把货发了、想退款发现退不了、客户问追踪号后台却查不到——根子都在于没搞懂Magento把一笔订单拆成了订单、发票、发货、退款单四个独立单据,它们之间有严格的先后顺序。
保哥这篇按订单的真实生命周期讲透:订单状态state和status到底差在哪、Pending到Complete中间经历了什么、开发票(Invoice)为什么是“确认收款”而不是发货、创建发货(Shipment)怎么填追踪号和部分发货、退款单(Credit Memo)为什么必须先开票才能退、在线退款和离线退款怎么选,再到取消和保留订单、一个跨境订单从下单到完成后台到底点了哪几下、部分发货怎么分批处理、最容易出事的几个坑。看完你就能把“钱收得明白、货发得清楚、款退得规范”这条履约链路理顺。
先讲个保哥真见过的乱子。一个做户外用品的卖家,客户下单后他直接在后台点了“发货”(Ship),货也寄出去了,结果月底对账发现这笔钱压根没确认收到——他从头到尾没开过发票(Invoice)。在Magento里,开发票才代表你确认了这笔钱,发货只是记录货物寄出,两件事是分开的。他把顺序搞反、还漏了开票,等于货发了、钱却悬着。
这就是不懂Magento订单单据体系的代价。Magento不是故意把流程搞复杂,而是因为“客户下单”“商家收款”“货物寄出”“退款给客户”是四件本质不同的事,各自对应一张单据、一个时间点、一套财务含义。这一篇,保哥把这四张单据和它们的先后关系彻底讲清楚,你以后处理订单就不会再点错、漏点。
订单的state和status到底有什么区别?
这是理解Magento订单的第一道门槛,也是最多人含糊的地方。Magento把订单的状态分成两层:state(状态机)和status(显示状态)。
state是系统内部的状态机,是固定的一组——new(新建)、pending_payment(待支付)、processing(处理中)、complete(完成)、closed(已关闭)、canceled(已取消)、holded(已保留)。它决定了这笔订单在系统逻辑里处于哪个阶段、能做哪些操作,你改不了它的定义。
status是挂在state下面的、面向人看的显示标签,可以自定义。一个state底下可以对应多个自定义status。比如同样是processing这个state,你可以自定义出“已付款待发货”“部分发货”“等待补货”等多个status,让后台和客户看得更明白,但它们底层都还是processing这个state。
为什么要分两层?因为系统逻辑需要稳定(靠state),运营展示需要灵活(靠status)。你想给客户更细致的状态提示,就在status层做文章,不动底层state,系统的发票、发货、退款逻辑就不会乱。搞懂这点,后面所有单据动作引起的状态变化,你就能看明白是怎么回事。
一笔订单的生命周期:从Pending到Complete经历了什么?
把单据动作和状态串起来,一笔正常订单的生命周期是这样走的:
- 下单:客户结账完成,生成订单,state通常是pending(new/processing取决于支付方式)。这时只有“订单”这一张单据,钱还没确认、货还没发。
- 开发票(Invoice):你确认收到钱、生成发票,这一步是财务确认。订单进入processing。
- 创建发货(Shipment):货物寄出,生成发货记录、填追踪号。
- 完成(Complete):发票和发货都齐了,订单自动变成complete。
按Adobe官方文档的说法,这条主线可以概括成一句话:订单变成发票,发票变成发货(Orders become invoices, and invoices become shipments)。也就是说,标准流程里是先确认收款(开票)、再寄货(发货),最后订单闭环。Orders列表(订单网格)会列出所有订单,不管它走到了哪一步。
这条主线之外还有几个分支状态要知道:canceled(取消,针对还没开票的订单)、closed(关闭,针对已经全额退款 / 走完credit memo的订单)、holded(保留,临时挂起,比如等客户确认地址,可随时解除)。把这几个状态和主线放一起,你就有了订单流转的全貌。
开发票(Invoice)为什么是“确认收款”而不是发货?
这是最容易被新手忽略、却最关键的一张单据。在Magento里,Invoice(发票)代表的是“这笔钱我确认收到了”这个财务动作,跟“开张纸质发票给客户”不是一回事,更不等于发货。
开发票时有个核心选择——在线收款(Capture Online)还是离线处理(Capture Offline / 不收款):
- Capture Online(在线扣款):开票的同时,通过支付网关真正把客户的钱扣下来(capture)。适用于结账时只做了授权(authorize)、还没实际扣款的支付方式。
- Capture Offline(离线):钱已经通过别的途径收到了(比如线下转账、或网关在结账时已经扣过款),开票只是在系统里做财务记账确认,不再真的去扣钱。
这里牵扯到一个支付配置概念:Authorize(仅授权)vs Authorize and Capture(授权并扣款)。按Adobe文档,如果支付方式设成Authorize and Capture、或者是采购单(PO)这类,那么订单在结账时就已经开票并完成收款了,你后台看到的就是已付款状态,不用再手动capture。如果设成只授权,那钱只是被冻结、没真扣,需要你在后台开发票时选Capture Online才真正把钱拿到手。
保哥强调一句:没开发票就发货,等于货发了钱还悬着——开头那个户外卖家就栽在这。正常节奏应该是先开票确认钱到手、再发货,除非你有明确的先发后收逻辑(比如货到付款),否则别把顺序搞反。
创建发货(Shipment):追踪号和部分发货怎么处理?
钱确认了,接下来是寄货、生成发货单(Shipment)。这一步的动作是:在订单里点“Ship”(发货),系统生成一条发货记录,你在这里可以填写承运商和追踪号(tracking number)。
填追踪号这一步别省。填了之后,追踪信息会进入订单、能同步给客户(订单邮件 / 客户账户里能看到物流进度),客户自助查物流、少来问你一句“我的货到哪了”,是实打实降低客服压力的动作。保哥见过卖家嫌麻烦不填追踪号,结果每天被客户追问物流,客服忙到崩溃,其实后台填一下就解决了。
发货还支持部分发货(partial shipment):一张订单里的商品不一定一次性发齐,缺货的、分仓的可以先发能发的、生成一条部分发货记录,剩下的到货后再发、再生成一条。每次部分发货都可以单独填各自的追踪号。这对多仓、预售、缺货补货的场景很实用。同理,发票也能部分开票,只对已发的部分确认收款。
发货扣的是库存,这里和库存管理强相关。如果你用了Magento的多源库存(MSI),发货时系统会从对应来源(source)扣减、并释放之前下单时占用的库存预留(reservation)。多仓发货、库存预留怎么治理,保哥在 Magento 2 MSI多源库存那篇里讲得很细,做多仓的一定要配合着看,否则发货和库存对不上会很头疼。
退款单(Credit Memo)为什么必须先开票才能退?
退款在Magento里也是一张独立单据——Credit Memo(贷项通知单 / 退款单)。它有一条铁律:必须先有发票,才能开退款单。
道理其实很顺:退款是“把收到的钱退回去”,而“收到钱”这件事是由发票(Invoice)确认的。没开过发票,系统认为这笔钱根本没确认收到,自然无从退起。按Adobe文档,credit memo必须针对已开票的订单生成,生成后才能打印。所以如果一笔订单你还没开票,客户要退款,你不能走credit memo,而是直接取消(Cancel)订单——取消针对的就是未开票订单。
开退款单时同样有在线 / 离线之分:
- Refund Online(在线退款):通过支付网关把钱原路退回客户的卡 / 账户,适用于在线capture过的订单。一步到位,钱退了、单也记了。
- Refund Offline(离线退款):只在系统里做退款记账,钱要你自己通过别的途径退给客户(比如线下转账)。适用于当初离线收款、或网关不支持API退款的情况。
退款也支持部分退款:可以只退某几件商品、调整退款金额、单独决定退不退运费(比如客户单方退货,运费不退)。退款单界面里可以按商品行填退货数量、改退款金额,灵活处理各种退货协商。另外很多商家会用退到店铺积分 / 余额(store credit)而不是原路退现金,把钱留在店内促复购,这在B2B和会员体系里很常见。
保哥提醒一个高频混淆:在支付网关后台直接退款,和在Magento里走credit memo,是两回事。前者钱退了但Magento订单状态、库存、财务记录都不会同步,对账会乱。规范做法是从Magento订单里走credit memo,让单据、库存、状态保持一致。
保哥再讲个真实的退款翻车案例,帮你记牢这条顺序。一个做3C配件的卖家,客户买了货、还没等他开票就申请退款,他在后台找了半天找不到“退款”按钮,急得以为系统坏了。其实是因为订单还没开票,根本走不了credit memo,正确动作是直接取消订单就行。
他不懂这个逻辑,绕了一大圈去支付网关后台手动退了款,结果Magento订单还挂着、库存也没退回,过了一周才发现这单数据全是错的,又得手工去修。这个坑的根源就一句话:退款前先看订单开没开票——没开票走取消,开了票走退款单,别一上来就找退款按钮。这也正是为什么要在Magento里操作退款而不是去网关后台——系统内走一遍,订单、库存、财务三者自动同步,省下的全是事后对账修数据的时间。
取消、保留、重新下单:那些非主线的订单操作怎么用?
除了开票、发货、退款这条主线,日常还会用到几个操作,搞清楚各自的适用场景:
取消(Cancel)。针对还没开票的订单。客户下单后没付款、或付款前反悔,直接取消,订单进入canceled,占用的库存预留会被释放。注意:已经开过票的订单不能简单取消,得走credit memo退款 + 关闭,因为钱已经确认收到了。
保留(Hold)。临时把订单挂起,比如地址存疑、需要风控复核、等客户确认某些信息。Hold不影响数据、可随时解除(Unhold)恢复处理。它是个“暂停键”,不是终态。
重新下单(Reorder)。从一笔历史订单一键生成同样商品的新订单,方便老客户复购、或客服帮客户重新下单。B2B客户周期性补货时特别好用。
打印单据。发票、发货单、装箱单(packing slip)、退款单都能打印或导出PDF,随货寄出或留档。批量场景可以在订单网格用批量操作(mass action)一次性给多个订单打印 / 生成单据,大促时能省不少手工。
还有一个常被忽略的好习惯——用订单的评论历史(Comments History)记录每一步操作和沟通,并可勾选“通知客户”把备注发给客户。客户问起来、或团队交接时,订单页就是完整的处理日志,谁在什么时候做了什么一目了然。
实战:一个跨境订单从下单到完成,后台到底点了哪几下?
把单据动作串成真实操作,保哥用一个标准跨境订单走一遍,你照着就知道每一步在干嘛。
第一步,订单进来。客户在前台结账、付款(假设支付方式是Authorize and Capture,结账时已扣款开票),后台订单列表出现这笔单,state是processing、已付款。如果你的支付方式是只授权没扣款,那这步订单是pending,需要你手动开票。
第二步,确认收款(开发票)。如果结账时没自动开票,进订单点Invoice,选Capture Online把钱扣到手(或Capture Offline做记账确认)。开完票,财务上这笔钱就清楚了。
第三步,备货发货。商品备齐后进订单点Ship,选承运商、填追踪号,生成发货单。系统从库存来源扣减、释放预留。客户收到带追踪号的发货通知。
第四步,订单闭环。发票 + 发货都齐了,订单自动变complete。这一单就算正常走完了。
遇到退货怎么办?客户收到货要退,你进这笔已complete的订单,点Credit Memo,选退哪些商品、退多少、退不退运费、在线退还是离线退,确认后生成退款单,钱退回、库存按设置退回,订单关闭。整个履约 + 售后回路就完整了。
你会发现,整个流程就是按“订单 → 发票 → 发货 →(退款单)”这条单据链点下去,每一步都有明确的财务和物流含义。理解了这条链,再复杂的订单你也不会点错。
部分发货、缺货、合并:复杂订单怎么拆着处理?
现实里订单很少都是“一次付清、一次发齐”的理想状态,下面几个复杂场景的处理方式得心里有数。
缺货分批发。一张订单5件商品,3件有货2件缺货。处理方式是:先对有货的3件做部分发货、填追踪号,订单进入“部分发货”状态;缺的2件到货后再做一次部分发货。发票也可以跟着分两次部分开票,对应已发部分确认收款。这样客户不用干等全部到齐,体验更好。
预售 / 预订单。预售商品先收钱(开票)后发货,中间可能隔很久。这期间订单停在processing、已付款未发货状态,等货到了再发货。用自定义status(比如“预售-等待到货”)能让后台和客户都清楚这单的特殊状态,不至于被当成漏发的单。
大促批量处理。大促订单暴增时,靠手工一单单点会累死。用订单网格的批量操作能一次性给多笔订单批量开票、批量打印装箱单。但批量发货要谨慎——追踪号通常一单一个,批量难填,发货环节还是建议结合物流系统 / 插件对接处理。订单量大时,Magento后台本身的性能也会成为瓶颈,索引、缓存、Redis/Varnish怎么调优让后台不卡,保哥在 Magento 2性能调优那篇里讲透了,订单量上来后一定要做。
多店铺订单归属。如果你用Magento多店架构,一笔订单会归属到它下单的那个store view,发票、发货、退款单也都跟着这个归属走,对账时按店铺维度统计。多店怎么搭、订单怎么按店隔离,可以看保哥讲 Magento 2多店架构的那篇。
不同客户、不同订单:客户分组和订单处理怎么联动?
订单不是孤立的,它和下单的客户、客户所属的分组紧密相关,这一点在B2B和会员运营里尤其重要。
每笔订单都记录了下单客户和该客户所属的客户分组(Customer Group)。客户分组决定了这个客户看到的价格、税务类别、能不能用某些促销。所以同样一件商品,零售客户和批发客户下单,订单金额、税额可能不一样,这是分组定价在起作用,处理订单和对账时要心里有数。客户分组怎么配、分组定价和税务类别怎么联动,保哥在 Magento 2客户分组那篇里讲得很细。
从运营角度,订单数据是反哺客户运营的金矿:哪些客户复购频繁、哪些客户退货率高、哪个分组客单价最高,都能从订单履约数据里挖出来,进而调整你的分组策略、促销策略。订单处理不只是“把货发出去”的体力活,处理得规范、数据记得清楚,它就是你做精细化运营的基础数据源。
订单邮件、发票PDF和客户账户:售后体验怎么做到位?
订单处理不只是后台点单据,每一步动作都会触发面向客户的通知,这些通知做得好不好,直接影响客户对你这家店的信任和复购。很多卖家把单据点完就不管了,白白浪费了和客户沟通的触点。
Magento在订单的关键节点会自动发邮件:下单确认、开票(付款确认)、发货通知(带追踪号)、退款通知。这些邮件模板都能在后台自定义——换成你的品牌logo、配色、措辞。保哥的建议是至少把发货通知邮件做精致,因为客户最关心货发了没、到哪了,一封清晰、带追踪链接、带品牌感的发货邮件,能显著降低“货到哪了”的客服咨询,也是品牌印象的加分项。
发货时是否勾选“通知客户”(Email Copy of Shipment)这个选项要留意,勾了客户才收到发货邮件。保哥见过卖家发货时没勾通知,客户一直没收到追踪信息、以为没发货来投诉,其实货早在路上了,就差那一个勾。
发票、装箱单、退款单都能生成PDF。装箱单(packing slip)随货寄出,让仓库和客户都清楚这箱装了什么;发票PDF可以发给需要报销、做账的B2B客户。这些PDF模板同样能配置成带品牌信息的样式,对外形象统一。
别忘了客户账户(My Account)这个自助入口。登录的客户能在自己的账户里看到历史订单、当前状态、追踪信息、能不能退货。把这个入口的信息做完整,客户自己就能查清楚大部分问题,不用每件事都来问你,是规模化之后降低客服成本的关键。
订单数据怎么和财务、ERP对上账?
订单量一上来,光在Magento后台一单单看就不够了,你得把订单、发票、发货、退款的数据汇总出来,和财务、和ERP/WMS系统对上账。这一步做不好,月底对账就是一场灾难。
Magento的订单、发票、发货、退款单都有各自的列表网格(grid),可以按时间、状态、金额等条件筛选,并导出CSV。财务对账的基本盘就是:用发票网格对“确认收款”、用退款单网格对“退出去的钱”,两者一减就是这段时间的净收入,再和支付网关的结算报表核对,三方对得上才算账目清楚。
这里有个性能相关的实用功能:按Adobe文档,Magento支持订单归档(Archiving)——把很久以前、已完成的历史订单归档,让日常操作的订单、发票、发货、退款网格保持精简,既提升后台性能、又让工作区不被海量历史单据塞满。订单量大的店开归档很有必要。
如果你对接了ERP或WMS(仓储管理系统),通常是通过Magento的API或中间件,把订单同步到ERP去处理发货、把库存和物流状态回写到Magento。对接时最容易出问题的是状态映射和退款同步——Magento的state/status要和ERP的订单状态对应清楚,退款(credit memo)也要双向同步,否则两个系统各说各话。保哥见过对接没做好退款同步的,Magento退了款、ERP还显示已收款,财务对账对到怀疑人生。
就算你暂时没上ERP,也建议养成定期导出订单、发票、退款数据存档、对账的习惯。订单数据是你生意的命脉记录,平时理得清楚,出问题时才查得回去。
订单处理最容易出事的几个坑,怎么提前避开?
最后把保哥见过最多的坑集中列出来,对照自查:
- 没开票就发货:货发了钱却没确认收到,财务挂账。除非是货到付款这类先发后收逻辑,否则坚持先开票确认收款、再发货。
- 已开票订单想取消:取消只针对未开票订单。已开票的要退款得走credit memo,别指望直接取消。
- 退款时忘了credit memo必须先有发票:没开票的订单退款走取消,不是credit memo。顺序搞反会发现“退款”这个动作点不出来。
- 在网关后台直接退款:Magento订单状态、库存、财务不同步,对账混乱。规范走Magento的credit memo。
- 发货不填追踪号:客户查不到物流,客服被追问到崩溃。后台填一下就解决。
- 部分发货 / 部分开票没分清:缺货订单硬要一次发齐导致客户干等,或一次性全额开票却只发了一部分。该分批就分批。
- 退款没处理运费:客户单方退货却把运费也退了,平白损失。退款界面单独决定运费退不退。
- 不写订单评论历史:操作和沟通没记录,团队交接、客户对峙时翻不到依据。每步操作随手记一条备注。
Magento订单处理的核心,保哥总结成一句:认清订单、发票、发货、退款单这四张单据的先后关系,钱(发票)在前、货(发货)在后、退(退款单)必须先有票。把这条单据链刻进肌肉记忆,你处理订单就既快又不出错,财务、物流、客户三头都清清楚楚。
常见问题解答
Magento里订单的state和status有什么区别?
state是系统内部固定的状态机,是一组预定义值——new、pending_payment、processing、complete、closed、canceled、holded,它决定订单处于哪个逻辑阶段、能做哪些操作,你改不了它的定义。status是挂在state下面、面向人看的显示标签,可以自定义,一个state底下能对应多个自定义status。比如同样是processing这个state,你可以自定义出“已付款待发货”“部分发货”“等待补货”等多个status让后台和客户看得更明白,但底层都还是processing。分两层的意义是:系统逻辑靠state保持稳定,运营展示靠status保持灵活,你想给客户更细的状态提示就在status层做,不动底层逻辑就不会乱。
为什么开发票(Invoice)不等于发货?
因为在Magento里它们是两件本质不同的事,对应两张独立单据。Invoice(发票)是财务动作,代表“这笔钱我确认收到了”;Shipment(发货)是物流动作,代表“货物寄出了”。标准流程按Adobe官方文档是“订单变成发票,发票变成发货”,也就是先确认收款、再寄货。很多新手把订单当成“来了就发货”,漏掉了开票这一步,结果货发了、钱却没在系统里确认收到,月底对账就挂账了。除非你做的是货到付款这类先发后收的逻辑,否则正常节奏一定是先开发票确认收款、再创建发货,顺序别反。
客户要退款,但我还没给订单开发票,怎么退?
这种情况不能走退款单(Credit Memo),而是直接取消(Cancel)订单。Credit Memo有条铁律——必须先有发票才能开退款单,因为退款是“把确认收到的钱退回去”,而“收到钱”是由发票确认的,没开票系统认为钱还没确认收到,自然退不了。所以未开票的订单客户要退,你走取消,订单进入canceled、占用的库存预留释放。只有已经开过票、钱已确认收到的订单,客户退货时才走Credit Memo,按需做全额或部分退款、在线或离线退款。先判断这单开没开票,再决定走取消还是退款单。
在线退款(Refund Online)和离线退款(Refund Offline)怎么选?
看这笔钱当初是怎么收的、网关支不支持API退款。在线退款会通过支付网关把钱原路退回客户的卡或账户,适用于当初在线capture过、且网关支持退款API的订单,一步到位、钱退了单也记了。离线退款只在Magento系统里做退款记账,钱得你自己通过别的途径退给客户,适用于当初离线收款、或网关不支持API退款的情况。另外提醒一个高频坑:别在支付网关后台直接退款,那样钱退了但Magento的订单状态、库存、财务记录都不会同步,对账会乱。规范做法永远是从Magento订单里走Credit Memo,让单据、库存、状态保持一致。
一张订单的商品没法一次发齐,怎么办?
用部分发货(partial shipment)。比如一张订单5件商品,3件有货2件缺货,你可以先对有货的3件做一次发货、填上追踪号,订单进入部分发货状态;缺的2件到货后再做一次发货。每次部分发货都能单独填各自的承运商和追踪号。发票也能跟着部分开票,只对已发的部分确认收款。这样客户不用干等所有商品到齐,先收到能发的,体验更好。多仓、预售、缺货补货的场景基本都靠部分发货来处理。如果你用了多源库存,每次发货会从对应来源扣减、释放对应的库存预留,做多仓的要把库存预留治理一起理顺,否则发货和库存容易对不上。
权威参考资料
FAQPage + Article AI 引用友好版
Magento把一笔订单拆成订单、发票、发货、退款单四张单据,顺序错了就钱货两悬。本文讲透state与status的区别、订单从Pending到Complete的生命周期、开发票为何是确认收款而非发货、创建发货与追踪号、退款单为何必须先开票、在线与离线退款,以及部分发货和高频坑。
- Magento
- Magento运营
- 订单管理
- 退款
title: Magento 2订单怎么处理才不漏发不错款?发票、发货与退款工作流实战 author: 张文保 (Paul Zhang) — PatPat SEO 经理 url: https://zhangwenbao.com/magento-2-order-processing-invoice-shipment-credit-memo-workflow.html published: 2026-03-12 modified: 2026-03-12 source-type: First-hand expert commentary language: zh-CN license: CC BY-NC-SA 4.0 (要求保留原文链接与作者归属)
本文标题:《Magento 2订单怎么处理才不漏发不错款?发票、发货与退款工作流实战》
本文链接:https://zhangwenbao.com/magento-2-order-processing-invoice-shipment-credit-memo-workflow.html
版权声明:本文原创,转载请注明出处和链接。许可协议: CC BY-NC-SA 4.0