跳至主要內容

交易與花費

每一筆進出組織的餘額,都會寫進一本僅能附加的帳本。計費 頁面用兩種方式呈現它:一張圖表看出你花錢的形狀,一張表格列出背後的確切記錄。

交易清單

表格由新到舊排列,一次顯示 50 筆;載入更多 會取得下一頁。

欄位內容
日期這筆記錄寫入的時間,精確到秒
類型這是哪一種記錄
明細這筆記錄所屬的執行個體,以及它涵蓋了幾秒
金額餘額的帶正負號變化量,儲值為正
餘額這筆記錄之後的餘額

你會看到的類型:

類型主控台標籤由什麼產生
topup餘額已入帳一筆確認完成的 Stripe 付款
charge_gpuGPU 用量一次執行時間的結算
charge_storage儲存一次停止中硬碟時間的結算
adjustment調整任何一筆既不是儲值、也不是計量用量的帶正負號餘額變動——多半是 Stripe 的追回,而且是自動入帳的。見下文

adjustment 不只是人工修正。Stripe 事件會自行產生它們,而該列的 meta.reason 會說明是哪一種:

meta.reason正負發生了什麼
refund扣款一筆付款被退款。只會扣掉這一次事件所移動的金額,所以第二次部分退款不會把第一次的再扣一遍
dispute_opened扣款有人提出了退單,而那筆錢已經沒了
dispute_funds_withdrawn扣款一筆先以查詢形式進來的爭議把款項抽走了,所以它剛開啟時並沒有扣款
dispute_won入帳你贏了這筆爭議,扣款被沖回

爭議開啟期間也會凍結該組織:POST /v1/instances 與啟動一個已停止的執行個體都會回 402 PAYMENTS_FROZEN,所以一筆退單沒辦法拿去支付 GPU 時間。爭議結案就會解除凍結,不論結果為何——輸掉的話那筆扣款留著,之後就由餘額決定你能做什麼——但前提是這個組織身上沒有其他還開著的爭議。而一筆查詢,也就是發卡機構在問問題、還沒有任何錢移動的情況,會凍結帳號但完全不產生任何帳本記錄:為了一個常常不了了之的問題就扣款,等於是從一個什麼都沒做錯的人身上拿走額度。

明細 欄位會連到該執行個體的 計費 分頁。儲值與調整沒有對應的執行個體,會顯示一個破折號。

由於結算大約每分鐘跑一次,單一個執行個體每小時就會產生大約 60 列,一天大約 1,440 列。這份清單是設計來抽樣和篩選的,不是設計來從頭讀到尾的 — 要看單一執行個體的總額,請開啟該執行個體並查看 已結算花費;要看每日總額,請用圖表。不到一分錢的金額會顯示到小數點後四位,所以一分鐘的儲存費用讀起來會像 $0.0007,而不是 $0.00。

花費圖表

花費 — 過去 30 天 每天畫一個點,標題旁邊是 30 天的總額。把游標停在某個點上會顯示那天的數字。

這張圖表算的是什麼:

  • 只算 GPU 費用與儲存費用。儲值與調整不列入 — 這是花費,不是現金流。
  • 日期以 UTC 分桶,所以在 UTC 以西的地方跑到深夜的工作,會落在隔一天的點上。
  • 沒有費用的日子畫成零,而不是跳過,這也是圖表在幾波工作之間出現平坦區段的原因。

這些端點

兩個端點讀的都是目前組織的帳本。請送出 bearer token — 已登入的工作階段或 shk_ 組織 API 金鑰都可以。用工作階段時,由 X-Org-Id 決定組織,沒有這個標頭時則使用個人組織;API 金鑰被綁定在自己的組織上,為其他任何組織送出 X-Org-Id 都會被拒絕並回傳 ORG_MISMATCH。兩個端點都不需要管理員權限,所以成員或 API 金鑰都讀得到。請參閱 驗證

GET /v1/billing/transactions

curl "$SUPERHEAT_API/v1/billing/transactions?limit=100" \
-H "Authorization: Bearer $SUPERHEAT_TOKEN" \
-H "X-Org-Id: $ORG_ID"
參數範圍預設值作用
limit1 到 20050每頁筆數
cursor一筆記錄的 id回傳比這個 id 更舊的記錄
instance_id一個執行個體 id把這一頁限制在單一執行個體

記錄由新到舊放在 items 中回傳,旁邊還有一個 next_cursor。把那個值當作 cursor 傳入就能取得下一頁;當它回傳 null 時,代表你已經讀到帳本的盡頭。

每筆記錄帶有它的 id(同時充當分頁游標)、它的 type、它所屬的 instance_id(儲值或調整則為 null)、一個 created_at 時間戳記、它的帶正負號金額,以及這筆記錄產生後的餘額。計量類的費用還會帶一個 meta 物件,記下計費期間的起訖時間與它涵蓋的秒數;調整則會帶上面那張表裡的 meta.reason

要拉出單一執行個體的費用:

curl "$SUPERHEAT_API/v1/billing/transactions?instance_id=$INSTANCE_ID&limit=200" \
-H "Authorization: Bearer $SUPERHEAT_TOKEN" \
-H "X-Org-Id: $ORG_ID"

GET /v1/billing/spend-daily

curl "$SUPERHEAT_API/v1/billing/spend-daily?days=90" \
-H "Authorization: Bearer $SUPERHEAT_TOKEN" \
-H "X-Org-Id: $ORG_ID"
參數範圍預設值作用
days1 到 9030往回彙總多久

這就是圖表的資料來源:GPU 與儲存費用依 UTC 日期分組,由舊到新,每筆記錄帶有一個 date 與那天的總額。只有有費用的日子才會出現,所以安靜的一週不會產生任何記錄,而不是一連串的零 — 如果你要畫連續的序列,缺口要自己補。

相關內容