本頁涵蓋的是開環卡交易——使用 Fluz 發行到卡組織上的虛擬卡進行的消費。禮品卡購買、存款、提款與錢包轉帳不走這個生命週期;它們有各自的結算軌道。請見 交易總覽 以了解承載所有交易的統一分類帳。
三個階段
結算是銀行層的流程,依卡組織的排程在清算之後進行。Fluz 將清算與結算視為同一事件——當交易在 Fluz 上被清算時,就將其視為最終。
一次購買,數筆記錄
單一購買可能產生一筆授權、一或多筆清算,並可能有撤銷或退款。Fluz 透過三種查詢呈現它們,分別回答不同問題:
三次購買,以及各自留下的記錄:
單訊息與雙訊息流程
卡組織發送多少訊息,取決於商家與交易類型。兩種流程皆為正常狀況,而你的整合必須同時處理。單訊息
卡組織發送一則同時授權並清算的訊息。常見於 PIN 借記、ATM 提領與交通運具。沒有待處理視窗——交易幾乎立即成為最終。雙訊息
卡組織先發送授權,商家之後再提交清算——通常在當晚,但飯店、租車與旅遊可能延遲數日。兩者之間的間隔即為待處理視窗,而這正是多數對帳錯誤發生之處。清算金額可能與授權金額不同。 小費、加油站自助加油、幣別轉換與分批出貨,都會產生高於或低於原本保留金額的清算。請以清算金額為準,切勿將授權金額視為最終。
錢在哪裡
從帳戶角度看同一生命週期:Fluz 在各階段記錄什麼
遭拒不是交易。 遭拒的授權不會進入帳戶分類帳,因此不會以任何狀態出現在
getTransactions。請透過 getDeclinedTransactions 查詢,並從 拒絕代碼 讀取原因。授權
當卡組織要求 Fluz 批准扣款時,Fluz 會依卡片、帳戶與卡片背後的資金評估請求。這一切都在不到一秒內完成,因為卡組織會逾時。會檢查什麼
會檢查什麼
- 卡片是
ACTIVE—— 未被鎖定、未過期、未過lockDate,也未被一次性規則用過 - 金額符合卡片
spendLimit與其spendLimitDuration - 若卡片發行於品牌鎖定的方案上,商家須符合卡片的品牌鎖定
- 帳戶持有人已通過身分驗證
- 卡片背後的資金來源足以支付該金額
- 銀行方案本身的限制未被超過
資金從哪裡來
資金從哪裡來
卡片本身不持有餘額。它在授權時,依開卡時設定的資金堆疊撥用資金:
userCashBalanceId指定的消費帳戶,或帳戶預設值- 預付(禮品卡)餘額,除非
usePrepaymentBalance: false - 獎勵餘額,除非
useRewardsBalance: false - 外部銀行帳戶,當
primaryFundingSource為BANK_ACCOUNT時
spendLimit 較高。→ 管理虛擬卡資金來源核准金額 vs 請求金額
核准金額 vs 請求金額
卡組織會請求一個金額;Fluz 會紀錄核准的金額。發生部分核准時兩者會不同,實際被保留的是核准金額。請從 Fluz 記錄讀取金額,而非假設它等於商家請求的金額。
遭拒
遭拒
遭拒的授權會回傳一個回應碼給商家,並在 Fluz 端產生
declineReason 與 declineCategory。最常見原因包含金額超過消費上限、卡片被鎖、卡片背後資金不足、品牌鎖定卡片在不符商家使用,以及 CVV 或 AVS 不符。→ 拒絕代碼非購買型的授權
保留資金
核准的授權會降低卡片可支用的金額,但不會把錢自帳戶移出。在清算前:- 卡片的
remainingBalance會反映該保留 - 分類帳記錄處於
PENDING expectedClearedDate告訴你何時再查看
撤銷(Reversal)
撤銷是在清算「之前」取消授權。保留被釋放,資金回到卡片。撤銷可為全部或部分。 常見原因:- 商家放棄交易,或端末機逾時
- 商品缺貨,或持卡人在出貨前取消
- 發出重複授權
- 授權到期但未清算
清算與結算
清算是商家提交最終金額,通常作為隔夜批次的一部分。Fluz 使用卡組織的參考識別碼將其對應到開放中的授權,並將記錄定稿。 需面對的現實:- 金額會變動。 小費、加油、匯率與分批出貨都會改變數字。
- 可能不只一筆清算。 分批出貨會針對同一授權分段清算,且各段可能無序到達。
- 可能出現無授權的清算。 在某些情況下卡組織允許商家強制入帳——離線端末機、機上消費、交通費聚合。Fluz 會監控這些,但你的分類帳必須接受一筆直接以已清算狀態出現、且沒有待處理階段的購買。
- 比對不保證成功。 罕見情況下,清算上的識別碼與其所屬的授權對不上,清算會以獨立記錄出現。
退款
商家退回款項會透過卡組織送出貸項。Fluz 會在卡片 feed 上以REFUND 呈現,並在分類帳上記為貸方。它可能先以授權到達,稍後清算;或直接僅有清算。
兩種會讓天真配對失準的情況:
- 未連結退款。 卡組織可能在貸項上不附帶原始購買的參考,或使用不同的識別碼。它會以獨立貸項到達,無從關聯。
- 批次退款。 多筆來自不同原始購買的退款,可能共享卡組織識別碼並被彙整到一起到達。
外幣
以其他貨幣進行的購買,會以美元清算,並在記錄上保留原始金額:
這三個欄位會同時回傳——要嘛全部有值,要嘛全部為 null。換匯發生在清算時,因此外幣授權與其清算即使商家收取相同金額,換算成美元後通常也會不同。
常見訊息序列
除了兩條順利路徑外,下列序列值得納入測試涵蓋。依生命週期進行開發
1
將待處理與已清算視為不同事物
切勿將待處理授權顯示為已完成購買,且永遠不要把授權與清算加總在一起。若需要單一數字,請加總已清算記錄,並將保留款分開顯示。
2
訂閱三種交易事件
TRANSACTION_CREATE、TRANSACTION_UPDATE 與 TRANSACTION_DECLINE。只監聽 create 的整合,會讓每筆交易永遠停留在授權金額。→ Webhooks3
以 updatedGte 同步,而非 createdGte
一筆以
PENDING 建立、之後清算的記錄,會變更的是 updated 時戳,而非 created。用建立日期同步會悄悄漏掉每一次結算。4
用快照對帳餘額
每筆分類帳記錄都帶有每個餘額的事後狀態。讀取那些欄位,而不是自行加總金額——它們已包含手續費、現金回饋與未清保留。
5
讓處理常式具備冪等性
Webhook 會重試,且清算可能無序到達。以 Fluz 記錄識別碼為鍵,讓重播成為無副作用。
測試生命週期
Staging 卡是實際的卡片記錄,但不在真實卡組織網路上,因此交易是注入到它們上,而非刷卡。你可以測試授權、分開的清算、拒絕、撤銷、退款與零元探測——其產生的記錄與 webhook 與正式環境相同。 → 模擬虛擬卡交易下一步
交易總覽
統一分類帳——記錄包含什麼,以及如何對帳。
取得虛擬卡交易
卡層級動態、篩選、外匯欄位與分頁。
取得遭拒交易
從未成為交易的授權。
拒絕代碼
每個拒絕原因與分類,以及各自的處理方式。
模擬虛擬卡交易
在 staging 卡放入測試消費,觀察生命週期運行。
Webhooks
訂閱交易事件、驗證簽章、處理重試。