← Index
Source: docs/features/kb-hybrid-payment-flow.md (auto-generated by scripts/generate-docs-html.mjs — edit the .md, not this file)

KB Hybrid Card × Stablecoin Payment — Flow Map (reference)

Scope: flow map only (jay, 2026-07-17) — a reference diagram of how a TradFi card rail (ISO 8583) combines with on-chain settlement (Avalanche subnet + stablecoin), modeled on KB국민카드's reported design. Not a dev item — no PoC ladder; kept for architecture reference and future tie-ins.

Source: analysis note pasted in session 2026-07-17 (no URL — this doc is the canonical copy).

The four layers at a glance

flowchart TB
    subgraph OFF["① Off-chain — TradFi card rail (1–2s)"]
        U[User swipes card] --> VAN[VAN / PG]
        VAN -->|ISO 8583 auth request| KB[Card-issuer server]
    end

    subgraph MID["② Middleware — bridge"]
        KB --> CHOICE{Funding source?}
        CHOICE -->|Credit| LEGACY[Legacy credit path<br/>unchanged]
        CHOICE -->|Stablecoin| CUST[Custody / WaaS<br/>MPC wallet infra, e.g. OpenAsset]
        CUST -->|balance check + hold| AUTH[✅ Authorize<br/>off-chain, asset frozen]
    end

    subgraph ON["③ On-chain — Avalanche subnet (minutes–daily batch)"]
        AUTH -.->|batched, later| BURN[Burn / lock stablecoin<br/>ERC-20 + ERC-2612 permit]
        ORACLE[Oracle: Chainlink / Pyth<br/>USDC↔KRW rate] --> BURN
        AA[ERC-4337 AA wallet<br/>card# ↔ address 1:1<br/>Paymaster pays gas] -.-> BURN
    end

    subgraph SETTLE["④ Merchant settlement"]
        BURN --> POOL[KRW liquidity pool<br/>issuer's fiat reserves]
        POOL -->|KRW payout| M[Merchant<br/>receives won, never coins]
    end

Timing split — the core trick (authorize now, settle later)

sequenceDiagram
    participant U as User/Card
    participant KB as Issuer server
    participant C as Custody (MPC)
    participant AVAX as Avalanche subnet
    participant M as Merchant

    Note over U,KB: t = 0 (must finish in 1–2s)
    U->>KB: ISO 8583 auth request
    KB->>C: balance check
    C-->>KB: OK + hold (freeze) stablecoin
    KB-->>U: APPROVED ✅ (nothing on-chain yet)

    Note over KB,AVAX: t = minutes ~ T+1 (batch)
    KB->>AVAX: batch settle (burn/lock held coins)
    AVAX->>AVAX: oracle-fixed USDC↔KRW rate
    KB->>M: KRW payout from liquidity pool

Card auth must return in 1–2s; chain finality can't. So authorization is purely off-chain (hold on the custody balance) and the on-chain movement is deferred batch settlement — the same authorize/settle split card networks already use, with the settle leg on-chain.

Why each piece (one line each)

Tie-ins (future, not scheduled)

Status

Reference only — flow map, not a dev item.