註銷重開
註銷一張已存證的發票(F0701),並以同一個號碼重新開立新的內容(F0401)。
POSThttps://invoice.workat.studio/api/v1/invoices/{invoiceNumber}/reissue
大多數情況請用作廢或折讓,不要用註銷。依財政部規定:發票的應記載事項(品名、數量、金額、買方統編等)開立錯誤,應作廢後另開新號碼;
銷貨退回、換貨或折讓應開立折讓。用註銷更正這些情形可能違反營業稅法與稅捐稽徵法。實際適用情形請洽所轄國稅局。
- 發票號碼、開立日期與時間、隨機碼不變;其餘內容(買方、載具、捐贈、列印、明細、課稅別)以這次送的內容整份取代。
- 財政部平台必須先收到註銷,才能接受同一個號碼的開立。所以系統先送註銷(F0701),確認成功後才自動重送開立(F0401)。這段期間
status為cancelling。 - 已作廢的發票也可以註銷重開,重開後的發票是未作廢的。
- 重開前的內容會保留在系統中,可在後台查詢。
什麼時候可以呼叫
- 開立已存證成功(
status為uploaded);已作廢的發票,作廢也要已存證成功(void.status為uploaded) - 發票屬於當期(每兩個月一期)
- 沒有未作廢的折讓證明單
- 沒有正在進行的註銷重開
Header
| 名稱 | 值 |
|---|---|
X-Api-Key、X-Timestamp、X-Nonce、X-Signature | 簽章驗證,算法見簽章算法 |
Content-Type | application/json |
Accept | application/json |
路徑參數
| 參數 | 型別 | 說明 | |
|---|---|---|---|
invoiceNumber | string | 必填 | 要註銷重開的發票號碼,只能是自己公司的發票 |
請求內容
| 欄位 | 型別 | 說明 | |
|---|---|---|---|
reason | string,1–20 字 | 必填 | 註銷原因,會上傳財政部 |
remark | string ≤ 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 | 發票不存在,或不屬於你的公司 |
422 | invoice:開立或作廢尚未存證成功、已非當期、有未作廢的折讓、正在註銷重開 |
reason:未填寫或超過 20 字 | |
| 其餘欄位:與開立發票相同 |