註銷重開

註銷一張已存證的發票(F0701),並以同一個號碼重新開立新的內容(F0401)。

POSThttps://invoice.workat.studio/api/v1/invoices/{invoiceNumber}/reissue
大多數情況請用作廢或折讓,不要用註銷。依財政部規定:發票的應記載事項(品名、數量、金額、買方統編等)開立錯誤,應作廢後另開新號碼; 銷貨退回、換貨或折讓應開立折讓。用註銷更正這些情形可能違反營業稅法與稅捐稽徵法。實際適用情形請洽所轄國稅局。

什麼時候可以呼叫

Header

名稱值
X-Api-Key、X-Timestamp、X-Nonce、X-Signature簽章驗證,算法見簽章算法
Content-Typeapplication/json
Acceptapplication/json

路徑參數

參數型別說明
invoiceNumberstring必填要註銷重開的發票號碼,只能是自己公司的發票

請求內容

欄位型別說明
reasonstring,1–20 字必填註銷原因,會上傳財政部
remarkstring ≤ 200選填註銷備註,會上傳財政部
其餘欄位重開的完整內容,與開立發票相同(items 必填),但不含 external_id(沿用原本的)。規則與金額計算也相同

範例

消費者事後提供手機條碼,原本列印證明聯的發票改存入載具:

{
  "reason": "改存手機條碼",
  "carrier_type": "3J0002",
  "carrier_id": "/ABC+123",
  "items": [
    { "description": "綠茶", "quantity": 10, "unit_price": 25 },
    { "description": "拿鐵", "quantity": 1,  "unit_price": 75 }
  ]
}

回應

200 OK 回傳發票的新內容,status 為 cancelling,cancellation 為註銷的進度:

{
  "data": {
    "invoice_number": "KZ10000000",
    "status": "cancelling",
    "cancellation": {
      "cancelled_at": "2026-10-06 10:15:00",
      "reason": "改存手機條碼",
      "status": "sent",
      "upload_error": null
    },
    "void": null,
    ...
  }
}
cancellation.status意義
pending已記錄註銷,尚未交給 Turnkey(系統每分鐘自動重試)
sent註銷已交給 Turnkey,等待財政部平台回覆
failed註銷上傳失敗,原因在 cancellation.upload_error,需要系統管理者處理

註銷成功後,status 會變回 issued → sent → uploaded(重開的上傳進度),cancellation 欄位不再出現。

錯誤

狀態碼原因
401/403/429驗證失敗、IP 不在允許清單、請求過於頻繁,見錯誤回應
404發票不存在,或不屬於你的公司
422invoice:開立或作廢尚未存證成功、已非當期、有未作廢的折讓、正在註銷重開
reason:未填寫或超過 20 字
其餘欄位:與開立發票相同