最近大半个月,光是我这边收到的咨询里,就有三四个是关于 Odoo 19 里礼品卡和电子钱包的。问的人背景很不一样:有做连锁餐饮的,想做节日礼品卡;有做跨境零售的,想把售后退货款转到客户钱包里而不是原路退回;还有做知识付费的,想把会员费包装成礼品卡转赠。这个需求不是突然冒出来的——你去社交平台上翻翻,礼品卡相关的热门问题常年霸榜,比如买卡时账单地址怎么填、在第三方平台买卡靠不靠谱、礼品卡怎么转赠给别人。大家习以为常地在消费端买卡送人,反过来说明商家侧其实更需要一套自己的礼品卡和电子钱包体系,否则客户数据、核销记录、账务沉淀全在别人手里,营销玩法也做不了。
Odoo 19 把礼品卡(Gift Card)和电子钱包(E-Wallet)都原生做进了销售模块,不需要额外安装一堆社区模块。这对实施顾问、企业内部 IT 和电商运营来说是个好消息:配置链路短、客户门户直接看得见、账务也能在后台追踪。这篇文章是我自己从规划到上线、再跑了一段时间后整理出来的实操记录,包含完整配置步骤、底层原理说明,以及真实项目里踩过的坑。如果你正准备在公司里搭一套预付卡或客户余额体系,这篇应该能让你少走不少弯路。
1. 礼品卡与电子钱包的定位差异:别用一套逻辑管两类业务
很多人第一次买 Odoo 的销售模块时,会把礼品卡和电子钱包当成同一个东西。我一开始也这样,结果配置到一半发现账对不上,才回头把这两个概念重新捋了一遍。
1.1 一个是预付卡,一个是客户资产账户
礼品卡本质上是"预付卡"。客户先付钱买一张面值固定的卡,之后拿着这个卡来抵扣商品或服务。对商家来说,收款发生在交付之前,资金在账上形成一笔负债,而不是已经赚到的收入。Odoo 19 里礼品卡的核销记录会跟着卡片代码走,一张卡可以被一个订单部分使用、在下一个订单用完。
电子钱包则是"客户余额账户"。它的资金来源通常不是客户主动充钱,而是退款、补偿、积分兑现、优惠券转存这类场景。比如客户买了一个商品又退货,按传统流程退款原路回到信用卡或支付宝,但在 Odoo 19 里你可以把钱退到客户的钱包账户里,让这笔钱留在你的平台内,下次购物直接抵扣。这个动作看似简单,实际上能显著降低退款带来的客户流失。
这里面的差异直接决定了配置方式。礼品卡需要创建"产品",因为它是可以销售的商品;电子钱包更像是一个账户体系,不需要单独建产品,而是靠支付环节去触发。很多人第一次配置时卡住,就是因为把这两件事混在一起操作。
我做了个简单的对比表,方便你对照:
| 对比维度 | 礼品卡 | 电子钱包 |
|---|---|---|
| 资金来源 | 客户主动购买 | 退款、补偿、奖励自动入账 |
| 是否商品 | 是,需要创建产品 | 否,属于客户账户资产 |
| 生命周期 | 从售出到核销或过期 | 从入账到扣减,通常长期有效 |
| 账务处理 | 售卡时计递延收入/负债 | 入账时即产生对应的收入调整或负债 |
| 适用场景 | 送人、节日促销、预充值 | 退货款留存、售后补偿、会员回馈 |
| Odoo 中的入口 | 产品配置 + 卡券记录 | 支付方式 + 钱包账户 |
1.2 为什么这两个能力会被放进销售模块
Odoo 19 把礼品卡和电子钱包的开关放在"销售"模块的设置里,很多人觉得奇怪:这难道不该放在财务或者客户关系模块里吗?原因其实很简单:这两个功能的触发点都在销售流程中。
礼品卡要经历"销售订单卖出卡片"、"客户下单时核销卡片"这两个关键动作,全在销售和结账环节。电子钱包的入账、扣减也是一样,客户在商城下单时选择"钱包余额支付",这一步就是在销售订单的支付界面完成的。Odoo 的产品设计思路是"让流程发生在它该发生的地方",所以销售模块成了它们的主场。
此外,Odoo 19 里礼品卡和电子钱包可以和客户门户、在线支付、POS、电子发票等多个模块联动。比如客户在门户里能看到自己的钱包余额,下单时直接勾选钱包作为支付方式,全程不需要人工介入。这个体验对电商业务很重要,但如果只盯着财务模块配置,这些联动入口是看不全的。
2. 动手配置前必须想清楚的三个决策
我见过不少项目,功能开关打开了,产品创建好了,结果上线第二天就出问题,原因全都是上线前没有把业务规则定清楚。Odoo 能做的只是把规则落地,规则本身得先由你来定。下面这三个决策是我每次做此类项目都会先问客户的。
2.1 决策一:卖实体卡还是虚拟码
礼品卡有两种交付形式。第一种是实体卡,线上卖出去之后需要打印卡片、线下邮寄或者门店自提。第二种是虚拟码,客户付款之后,Odoo 生成一个唯一的卡代码,通过邮件或短信发给客户,客户在下次下单时输入这个代码完成抵扣。
这两种形式在 Odoo 里的配置路径大体相同,差别主要在交付环节。实体卡需要考虑物流、印刷成本、卡片丢失风险,需要一个"已验证交付"的流程来避免客户没收到卡却要求核销。虚拟码则要重点防泄漏——邮件的送达率、短信通道的稳定性、代码被他人看到后的归属问题,这些都要提前设计。
我在实际项目里一般建议中小商家优先做虚拟码。成本低、上线快、客户即时收到,也符合现在电子礼品卡的使用习惯。如果一定要做实体卡,至少给代码加上"激活"操作,客户收到卡后在门户里手动激活,降低盗用的风险。
2.2 决策二:钱包余额是否跨店铺、跨公司使用
如果你只运营一个店铺一个公司主体,这个决策基本不用考虑。但连锁零售往往会有多个门店、多个法人主体,甚至同一个 Odoo 实例里跑着好几家品牌公司,此时电子钱包的"适用范围"就成了一个必须提前锁定的规则。
Odoo 19 的多公司架构下,钱包账户、礼品卡记录默认跟着公司隔离,A 公司的钱包余额不能直接在 B 公司核销,除非你做额外的对接。这个行为有时是好事——各主体账务清晰;有时却是坏事——客户拿着 A 店的礼品卡去 B 店消费,店员一核销发现找不到记录,现场体验直接崩了。
我的建议是:如果你的业务允许跨店核销,就在上线前明确约定礼品卡的"发行主体"和"核销主体",并通过 Odoo 的多公司设置或者自定义字段把卡片的适用门店范围标识出来。别等到客户真拿卡来了才临时解释,那场面非常被动。
2.3 决策三:有效期、单卡上限与风控策略
Odoo 的礼品卡默认可以设置有效期,但这个有效期不会自己跑出来等你设置,需要你在产品配置或者卡记录里指定过期日。更关键的是,过期策略决定客户的钱算谁的——如果过期未核销的余额直接作废,商家确认收入;如果永久有效,负债一直挂在账上。
除了有效期,还要考虑单卡面值上限。面值设太高,一旦卡片代码泄露,损失会很大。我见过一个客户把电子礼品卡面值设到五千,结果促销活动期间被人批量尝试代码,好在 Odoo 会记录核销历史,及时发现后批量作废了,但还是吓出一身冷汗。常规做法是设置一个合理的上限,比如单卡不超过 2000 元,同时开启后台的核销日志监控。
风控方面,核心是保证卡代码的唯一性和不可猜解性。Odoo 生成的代码本身具备随机性,但如果你的业务会把代码外发给客户,建议额外加上"每张卡只能绑定一个客户"的规则,避免一个代码被多人重复使用造成的对账混乱。
3. 完整配置链路:从功能开关到客户钱包余额到账
定好业务规则之后,配置本身就不难了。下面的步骤是基于 Odoo 19 标准界面写的,如果你的版本菜单略有差异,以实际界面显示为准,但底层逻辑是一致的。
3.1 打开销售模块里的功能开关
进入"销售"模块的"配置 > 设置",往下翻到"支付"这一块,你会看到"礼品卡"和"电子钱包"两个选项。勾选启用之后,系统会自动创建相关的产品分类、支付方式以及后台模型。
这一步看似简单,但有一个容易遗漏的地方:启用电子钱包后,销售订单的支付界面里会出现一个"钱包余额"的支付选项,你需要同步检查一下这个支付方式的显示名称、图标和说明文案,避免客户在结算时看到一串英文或默认技术名。
启用开关之后,还要确认客户门户的设置是开着的。电子钱包和礼品卡在客户门户里的展示非常依赖门户功能,如果门户没启用,客户就看不到自己的余额和卡券,很多自服务流程就走不通。
3.2 创建礼品卡产品:关键要勾对"礼品卡"属性
接下来创建礼品卡产品。操作路径是"销售 > 产品 > 创建",产品类型建议选"服务"——因为礼品卡不是一个需要库存管理的实物商品,而是一种服务型的预付凭证。
在产品的"销售"选项卡里,有一个"礼品卡"勾选项,把这一项勾上就完成了核心配置。价格方面有两种主流做法:一是把售价设成一个固定面值,比如 100 元、300 元、500 元,适合标准化销售;二是把价格留空,让销售人员在下单时手动输入面值,适合面值不固定的场景。
最容易被忽略的是税率。在不少法域,礼品卡的销售在税务上属于预收款,不应在售卡时就计销项税,而应在核销时再按实际消费的商品税率处理。如果你在礼品卡产品上配置了正常税率,会出现售卡时交一次税、核销时又按商品交一次税的情况。我在项目里都会先把礼品卡产品的税率设为免税或 0%,同时备注给客户的财务负责人,务必按当地税务要求复核。
3.3 卖出礼品卡并激活卡代码
礼品卡产品创建好之后,正常的销售流程是:新建销售订单,加入礼品卡产品,确认订单并开票、收款。订单确认后,Odoo 会生成一条礼品卡记录,里面包含唯一的卡代码、初始余额、关联客户、过期日期等信息。
卡代码可以理解成这张卡的"钥匙"。客户后续下单时输入代码,系统会根据代码找到对应的礼品卡记录,核销余额。代码的展示位置通常在销售订单的"其他信息"选项卡中,或者直接以链接的形式显示在订单确认界面里。虚拟码模式下,你可以在这一步把代码复制出来发给客户。
电子钱包的初始入账则不是靠销售产品,而是通过后台的"钱包账户"来操作。在客户表单上会有一个钱包相关的标签页,你可以直接关联一笔钱包账户并调整余额。常见的入账方式包括手动调整余额(适用于退款补偿)以及通过退款单的"退到钱包"功能自动入账。
4. 结账环节的实操:礼品卡和钱包余额如何正确扣减
配置完成只是第一步,真正考验系统的是结账环节的闭环。礼品卡和电子钱包在销售订单里的支付逻辑,和普通线上支付有点不一样,下面几点是我实际测试中比较关键的。
4.1 在线结账时选择钱包支付
当一个客户提交订单时,如果他的账户里有钱包余额,结账页面会多出一个"钱包余额"的支付选项。客户选择之后,系统会显示当前可用余额,并允许客户输入本次希望使用的金额。
这个过程和支付宝、微信支付的体验类似,但需要注意一点:钱包支付本质上是内部账务划转,不是在线支付通道。如果订单总额超过了钱包余额,客户需要同时选择另一个支付方式补齐差额。Odoo 的支付界面对这种"组合支付"的支持很灵活,我建议在测试环境里至少跑一遍"钱包余额 + 银行卡"的组合支付,确认支付行记录和余额扣减都正确。
给客户端的提示文案也很重要。默认提示可能不太友好,我配置时一般会写"当前钱包余额 ¥XX,本次可使用,剩余金额请选择其他支付方式",避免客户看到一堆技术术语产生困惑。
4.2 部分支付、混合支付与余额拆分逻辑
再讲一个实操中很容易误解的地方:一张面值 500 元的礼品卡,客户分三次消费,第一次扣了 200 元,第二次扣了 100 元,第三次想全部用完,这时候系统怎么知道卡片还剩下多少钱?
Odoo 会在每次核销后实时更新礼品卡记录的余额,这个余额存在卡记录上,而不是存到订单里。下次使用同一张卡时,系统读取的是最新余额,所以不会出现"卡片被重复消费"的问题。关键是别把卡代码当成一个静态字符串——客户第一次支付之后,代码没有变,但代码指向的卡片记录余额已经变了。
电子钱包的逻辑类似,但多了一个"账户"维度。每个客户可以有一个主钱包账户,余额在账户级别统一管理。这样客户购买时不需要处理一张张卡,系统直接从钱包账户里扣减。如果你需要同时支持多张礼品卡在同一订单中使用,就要在订单支付行里分别录入每张卡的代码和金额,Odoo 支持这种逐行核销的方式。
4.3 退款到钱包,是我最推荐的策略
Odoo 19 的电子钱包天然支持"退款到钱包"的场景。客户退货时,创建退货单并选择退款,退款方式里可以指定退回电子钱包。系统会自动增加客户钱包余额,同时生成对应的会计条目。
这个操作表面上只是改变了退款路径,实际上对业务的帮助很大:一是退款不再经过第三方支付通道,省下一笔手续费;二是退款留存率明显提升,客户账户里有余额,复购的意愿会更高;三是账务更简单,退款不再牵扯到信用卡、支付宝等外部流水。
不过要注意,退款到钱包之后,客户如果长期不来消费,这笔钱就一直挂在你的负债里,时间久了可能成为一笔"沉睡负债"。建议每个季度跑一次余额报表,清理长期未使用的钱包账户,必要时通过邮件提醒客户使用。
5. 客户门户端:余额查询、转赠与自助核销
Odoo 19 的一个优势是客户门户内置了对礼品卡和电子钱包的支持,客户不需要打电话问客服,自己就能看到余额、查看流水、使用礼品卡。这一节讲门户端的功能细节和扩展玩法。
5.1 客户门户里的"我的钱包"
客户登录门户后,会看到一个"我的钱包"板块,里面分开展示电子钱包余额和礼品卡列表。每张礼品卡会显示卡代码、面值、已使用金额、剩余余额和到期时间。顺带一提,这里的展示模板是标准的,如果你希望改成中文文案或者加上品牌 Logo,一般要调整门户页面的模板,新手实施顾问记得把这步列入配置清单。
门户的余额信息是实时读取的,客户下单后余额立即变化。我在实施完成后会专门测试一次"门户外下单 + 钱包支付"的全流程,因为很多时候后台配置正确,门户端样式却跑偏,尤其是自定义主题下,新板块的样式容易被漏调。
5.2 礼品卡转赠场景怎么落地
之前提到礼品卡转赠是社交平台上讨论度很高的话题。在 Odoo 里,转赠的本质是"卡代码的持有人发生变化",技术实现并不复杂:你把礼品卡的卡代码和链接发给朋友,朋友在下单时使用这个代码即可。
但纯手工转赠有几个风险点:一张卡被转发给多个人,码被公开在群里,或者转赠之后原持有人不承认。实际业务中,我通常建议配合权益码系统来做转赠。Odoo 可以生成一次性兑换码,客户用兑换码去兑换自己的礼品卡,兑换后具备排他性,后续只能由兑换人使用。
转赠场景还可以做成营销活动:买一张两百的卡,系统配置"转发给你的朋友,对方首次使用后你获得二十元钱包余额"。这种社交裂变玩法在礼品卡体系里很成熟,客户留存和拉新效果都不错,而且 Odoo 的自动化规则能够很好地支撑。
5.3 客户没有门户账号怎么办
不是所有客户都在你的门户里注册过账号。线下门店的客户、代购客户、企业团购客户,很可能既没有账号也没有注册意愿。这种情况下,礼品卡照样可以用,因为核销本质上只需要卡代码,不强制要求门户登录。
在门店收银场景中,店员可以在销售订单里选择礼品卡支付,输入客户提供的卡代码完成核销。如果连门店都没有,只靠线上销售,我建议客服可以把卡代码直接绑定到已存在的客户记录上,或者干脆以"匿名卡"的方式在后台核销。但要小心,匿名卡的核销记录对账相对麻烦,最好配套一张内部登记表,能追溯到渠道来源。
6. 配置与使用中的高频坑位排查
做实施和运维最耗时间的环节就是排查问题。以下三个坑是我在 Odoo 18、19 的项目里真实遇到过的,每个都花了不少时间,我在这里直接把排查链路和解决办法写出来。
6.1 订单里选不到礼品卡产品
现象:产品明明创建了,但新建销售订单时搜索不到。这个问题多半是产品的基础设置出了问题。
排查顺序:先看产品类型是不是"服务",再看销售选项卡里"可销售"是否勾选,最后确认"礼品卡"属性确实已勾上。很多时候是产品类型选成了"可消耗品",或者产品在创建时被加上了"服务追踪"属性,导致销售环节行为异常。还有一种情况是产品没有归属到正确的公司或产品分类,多公司环境下尤其容易出现。
6.2 钱包余额和实际对不上
现象:客户明明退了两笔款到钱包,后台钱包账户里的余额却低于预期,甚至出现负数。
这是电子钱包最典型的对账问题。排查链路是:先把客户账号对应的钱包账户调出来,点击"账本"看每一笔流水的来源;再对照源的退款单,确认退款单上的支付方式是不是真的是"钱包";最后检查是否有人重复提交了退款单,导致同一笔退款入了两次账。负余额往往是由后台手动直接调整余额时填错数字造成的,而账本功能可以把这类操作记录下来,找到操作人就好办。
另外,如果你在开发环境里做过数据迁移,还可能出现钱包账户和销售订单支付行关联断裂的情况,表现为订单里显示已用钱包支付,但钱包账户的账本里没有对应流水。这种要检查数据库中销售订单支付行的外键关联关系,必要时通过技术支持重建关联。
6.3 过期卡被后台任务误判作废
不少商家设置礼品卡有效期后,会出现一种矛盾场景:客户手里拿着卡,系统里显示正常,但后台某个定时任务却把过期卡的余额自动清零了,客户来投诉白投诉。
问题根源在于过期策略的自动化程度。Odoo 的礼品卡记录有到期时间字段,但"到期后余额是否作废"并不总是自动执行,而是需要定时操作。如果你启用了自动作废的定时动作,且卡片记录里的到期时间没有正确更新,就可能误伤未过期的卡。
排查思路是:先看卡片记录上的到期时间是否正确,再看定时动作的过滤条件是否覆盖了正确的卡片状态,最后检查卡片的状态字段——如果状态已经变成"已作废",是否是因为动作执行日期设置错误。我建议在正式启用自动作废之前,先在测试库用几张三张卡分别模拟"正常卡""到期卡""已使用卡"三种状态,确认结果符合预期再上生产。
7. 进阶扩展:充值码、会员权益与第三方礼品卡市场的联动
最后聊一下进阶玩法。如果你的需求不只是"卖一张卡、核销一张卡",而是想把礼品卡和电子钱包变成营销基础设施,下面几个方向值得投入。
7.1 用充值码把"买会员"变成"送会员"
礼品卡转赠充值会员的场景,在知识付费、游戏点卡、内容订阅行业非常常见。本质上是把会员资格变成一种可赋予的权益凭证。Odoo 里可以通过礼品卡产品 + 一次性权益码来实现:客户购买礼品卡后,获得一个权益码,把权益码转赠给朋友,朋友激活后一次性获得会员资格或等值余额。
这种模式的好处是购买行为和消费行为被拆开,你可以让 A 付款、让 B 享受权益,客单价明显提升。我在一个内容平台的客户项目里落地过这个方案,礼品卡渠道的 GMV 大概占了活动期间的 30%,并且这部分收入的账务追踪比纯人工核销清晰得多。
7.2 把礼品卡接到第三方卡商平台时的数据对接思路
很多人会在电商平台上购买第三方礼品卡,这催生了一大批卡商渠道。如果你想在 Odoo 里自建礼品卡体系,同时和外部卡商平台对接,最稳妥的做法不是让 Odoo 直接暴露内部接口给卡商,而是走"兑换码导入 + 核销状态回传"这个模式。
具体来说,Odoo 生成一批兑换码,在内部把面值和权益关系配置好,然后将这批兑换码以文件或 API 的方式同步给卡商。卡商销售后,把已售出的码回传,Odoo 标记为"已销售",核销后状态再同步回去。这样做有三个好处:一是卡商始终拿不到你系统的直接写权限,安全性可控;二是数据格式简单,两边都好排查;三是核销状态有一份明确的日志,发生纠纷时能追溯。
做这类对接时,我特别强调幂等性。回传状态的消息如果重复了好几次,Odoo 那边要能识别为同一条消息,不能把同一个码核销两次。实现时可以考虑以兑换码 + 回调流水号作为唯一标识。
7.3 报表监控:礼品卡发行量、核销率与钱包负债
礼品卡和电子钱包上线后,一定要建立日常监控。我看数据主要看三个指标:礼品卡发行量(确认多少面值售出)、核销率(实际消费占发行量的比例)、钱包负债总额(客户钱包里躺着的钱)。
Odoo 的标准报表对礼品卡和钱包的支持不算特别丰富,但你可以通过自定义报表或直接查看卡片记录和钱包账户的账本数据来实现。个人建议至少每周跑一次这三个数的快照,一旦发现发行量很高但核销率长期偏低,就要警惕是否卡券没被真正送达客户,或者产品面值对客户不具吸引力。
另外,钱包负债总额会在资产负债表里体现为一项负债。财务同事问起来时,你要能说清楚这个数字的来源,最好附上客户明细列表,方便审计时逐笔核对。
我自己的体会是,礼品卡和电子钱包在 Odoo 19 里的原生能力已经足够支撑大多数中小商家的业务场景,真正决定项目成败的往往不是功能本身,而是上线前的规则设计和上线后的对账机制。如果你正准备做,建议先从小范围试点开始,把礼品卡的售出、核销、退款到钱包这几条链路在测试环境完整跑通,再逐步铺开到所有店铺。遇到比较特殊的业务规则,优先考虑用 Odoo 的自动化动作和定时任务来落地,而不是急着开发新模块。这样一套系统做下来,你会发现客户预付资产的管理,其实比想象中要简单很多。