作廢發票

作廢一張已開立的發票(F0501),例如開立錯誤或當期內銷貨退回。

POSThttps://invoice.workat.studio/api/v1/invoices/{invoiceNumber}/void
跨期作廢:發票所屬的期別(每兩個月一期)結束後,必須經國稅局核准,並填寫 approval_number(專案作廢核准文號),否則回應 422。 一般跨期的銷貨退回請改開立折讓。開立過折讓的發票,要先作廢所有折讓才能作廢。實際規定請以所轄國稅局為準。

Header

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

路徑參數

參數型別說明
invoiceNumberstring必填要作廢的發票號碼,例如 KZ10000000。只能作廢自己公司的發票

請求內容

欄位型別說明
reasonstring,1–20 字必填作廢原因,會上傳財政部,例如「客戶取消訂單」「品項開立錯誤」
remarkstring ≤ 200選填備註,會上傳財政部
approval_numberstring ≤ 60條件必填專案作廢核准文號。跨期作廢時必填

範例

請求內容:

{
  "reason": "客戶取消訂單",
  "remark": "訂單 ORDER-20261004-0001"
}
// 沿用目錄頁 PHP 範例的 einvoiceRequest()
[$status, $result] = einvoiceRequest('POST', '/api/v1/invoices/KZ10000000/void', [
    'reason' => '客戶取消訂單',
    'remark' => '訂單 ORDER-20261004-0001',
]);

回應

200 OK 回傳發票資料,void 欄位為作廢資訊:

{
  "data": {
    "invoice_number": "KZ10000000",
    "status": "uploaded",
    "void": {
      "voided_at": "2026-10-05 09:30:00",
      "reason": "客戶取消訂單",
      "remark": "訂單 ORDER-20261004-0001",
      "approval_number": null,
      "status": "sent"
    },
    ...
  }
}

status 仍是開立的上傳進度;作廢的上傳進度看 void.status:

void.status意義
pending已記錄作廢,等開立存證成功後自動送出
sent作廢已交給 Turnkey,等待財政部平台回覆
uploaded財政部平台已作廢成功
failed作廢上傳失敗,原因在 void.upload_error,需要系統管理者處理

錯誤

狀態碼原因
401/403/429驗證失敗、IP 不在允許清單、請求過於頻繁,見錯誤回應
404發票不存在,或不屬於你的公司
422reason:未填寫或超過 20 字
approval_number:跨期作廢未填寫專案作廢核准文號