退票了怎么处理:概念、原理、系统设计
1.退票的原理

从图中可以看出,在跨行转账时,付款行会实时扣除付款账户的资金,并将资金发送至央行支付系统。央行支付系统实时处理后,返回“处理成功”的信息给付款方,这表示付款行的业务处理已成功,即资金已被扣除。但此时,收款人是否已收到款项尚不确定。
1)付款划分成两个阶段
因此,我们可以将付款业务视为由两个阶段组成:
第一个阶段是“资金已付出”,即付款行成功扣除资金; 第二个阶段是“收款人已收到钱”,即资金成功入账到收款人账户。
只有这两个阶段都成功,才能视为真正的付款成功。然而,第二个阶段可能会失败,导致退票的发生。
2)付款成功的合理定义
我们能否将“付款成功”定义为“扣账成功+到账成功”?很明显,这会存在问题。
一方面,企业的资金已经被扣除,必须正确记录付款凭证,否则会导致账实不符; 另一方面,收款人是否收到款项并没有明确的结果节点,我们不能一直等待。
因此,我们不如将这两个过程分开管理,而不是将它们耦合在一起。即先认为付款行的扣账成功是初步的成功,如果后续发生退票,再进行相应的处理。
3)银行的付款成功定义
实际上,银行也是采用这种处理方式。业务的处理成功仅代表资金已从企业账户提出,而非收款人已收到款项。如果资金未到账,该笔付款就处于资金在途的非终态,可能会发生退票。
某银行在其银企直联的付款业务说明中也提到了这一逻辑:成功的结果仅代表资金提出成功,是否到账还需等待,甚至需要企业自行查询。
2.如何发现退票
既然付款成功后仍有可能发生退票,那么如何及时发现付款已经退票了呢?
1)接口自动获取
有些银行会主动通知客户某笔付款已发生退票,或者当客户发现实时未到账时,可通过退票接口查询是否发生了退票情况。

2)通过文件人工筛查
当然,也有一些银行既不提供接口通知,也不在文件中明确标注退票字样。这种情况下,我们需要根据账单中的入账流水特征,人为判断是否为“退票类”收款,并据此进行后续的业务处理。
3)对账中心对出渠道单边
同样,对账中心也可以发现退票情况。当对账中心出现银行渠道单边收款现象时,我们可以通过清算明细确认为退票,并据此进行退票入账的差错处理,进而推动内部系统完成退票的处理流程。
3.退票的业务处理
如果通过退票接口主动通知得知已退票,那么可以直接变更原付款单状态为已退票,无需登记退票流水;
如果从银行文件中获取到退票流水,则需先登记退票流水,再基于该流水推动原付款单的退票处理。
1)想办法获取到退票结果
如图中所示,退票结果可以通过接口获取、对账发现,或者人工从文件中排查获得。
2)把退票结果记下来
为了确保结果处理的一致性,我们根据退票结果统一生成“退票单”或“退票流水”,并依据此退票流水来推动上游系统进行退票处理。
当然,我们也可以直接根据退票结果将付款单状态更新为“已退票”,但在此同时,必须保留原付款成功和退票成功的交易日志。
3)两单匹配:付款单-退票单
退票单需要能够准确匹配到原始的付款单,以明确原付款单的状态变更。
如果退票结果是通过接口获取的,那么可以直接通过单号自动关联到原付款单。但如果获取的是退票流水,则需要建立一个匹配机制,可以通过设定匹配规则来自动匹配原付款单,或者通过人工关联的方式来确认退票对应关系。
4)生成一笔收款单
退票本质上是一笔收款业务,因此可以生成一笔收款单来处理这笔退票业务的入账,只不过收款来源标注为“退票”,这里不再赘述。
收款单可以基于原付款单生成,也可以基于退票流水生成。
这样,退票单、原付款单和收款单之间就建立了关联关系。同时,需要通知上游系统退票结果,上游系统则根据已退票的结果进行相应的业务单据处理。
5)财务也要做账务处理
基于收款(退票)单据,通知账务部门登记一张摘要为“退票”的“收款凭证”。
6)可以重新付款
根据业务需求,需判断是否需要因原付款已退票而重新进行付款。
若无需重新付款,则关闭原业务单据;若需重新付款,则对原结算单重新执行新的付款操作。例如,向商户的结算通常需确保完成,因此会考虑对结算单重新发起付款。