汇丰香港信用卡 CSV beancount importer

前言

最近🦁️大抵新户活动结束,让你没得占便宜,于是放开批卡。次第获批 pulse 与 red,于是要写个信用卡的 importer来记账。本来想着怎么解析结单,登录网银后发现可以下载 csv 文件,以前的储蓄结单导入就懒得改了保持原样,另写 csv importer。

CSV

不同于上篇自定义 importer,csv 可以用现成的 csv importer。只需按🦁️的格式编写 importer。

观察 csv 发现有以下几项,

Transaction date Post date Description Billing amount Billing currency Transaction status Merchant name Country / region Area / district Credit / Debit

可知 csv 列配置对应

1
2
3
4
csv.Col.DATE: 'Post date',
csv.Col.TXN_DATE: 'Transaction date',
csv.Col.NARRATION1: 'Merchant name',
csv.Col.AMOUNT_CREDIT: 'Billing amount',

另外补充卡末4位列。

🦁️信用卡账户不合并。额度分离,账单分离,甚至还款日都不一样。因此 open 多个账户,写 csv importer 也须多个。在 csv 文件头可以加标记用于区分,因为 pulse 银联双币钻具有港币与人民币两个子账户,所用币种不同,体现在 csv importer 的 currency 上。

注意点

  1. 🦁️的 csv 中消费金额用了负号表示贷款。不同于一些银行是用正数,因此需用 csv.Col.AMOUNT_CREDIT 对应 Billing amount。

  2. 🦁️日期格式如同🇬🇧为日/月/年。而 beancount 作者大概在🇺🇸生活(github 个人页地址在纽约),默认按🇺🇸式月/日/年,解析出日期错误。须在

1
2
3
dateutil_kwds={
"dayfirst": True
},

定义日期格式为日/月/年。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
CONFIG = [
csv.Importer(
{ csv.Col.DATE: 'Post date',
csv.Col.TXN_DATE: 'Transaction date',
csv.Col.NARRATION1: 'Merchant name',
csv.Col.AMOUNT_CREDIT: 'Billing amount',
csv.Col.LAST4: 'last'
},
account='Liabilities:CreditCards:HSBC:HK:PulseHKD',
currency='HKD',
categorizer=YourCategorizer,
regexps='hsbcpulsehkd',
skip_lines=1,
dateutil_kwds={
"dayfirst": True
},
last4_map={
"1234": "HSBC Pulse HKD"
}
),
csv.Importer(
{ csv.Col.DATE: 'Post date',
csv.Col.TXN_DATE: 'Transaction date',
csv.Col.NARRATION1: 'Merchant name',
csv.Col.AMOUNT_CREDIT: 'Billing amount',
csv.Col.LAST4: 'last'
},
account='Liabilities:CreditCards:HSBC:HK:PulseCNY',
currency='CNY',
categorizer=YourCategorizer,
regexps='hsbcpulsecny',
skip_lines=1,
dateutil_kwds={
"dayfirst": True
},
last4_map={
"5678": "HSBC Pulse CNY"
}
)
]

结语

与可能更适合人类阅读的 pdf 结单相比,csv 果然更适合程序处理。省却一次识别转换(实在没看懂储蓄结单 pdf 转换源码)直接写更熟练的 csv importer 对于非 python 程序员更为友好。听闻欧美一些银行有使用 open banking API 提供接口服务,用 api 方式获取账单对象转换的话应是更加方便。反观某国不仅不开放,还要大作限制,实在与世界 finTech 趋势背道而驰,吃枣💊。


汇丰香港信用卡 CSV beancount importer
https://blog.ckyol.moe/2023/11/24/HSBCHKcreditCSVImporter/
作者
ϵ( 'Θ' )϶
发布于
2023年11月24日
许可协议