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